
﻿ STATUTE OF THE INTERNATIONAL COURT OF JUSTICE -------------------------------------------------------------------------------- TABLE OF CONTENTS : Chapter I : Organization of the Court ( Articles 2 - 33 ) Chapter II : Competence of the Court ( Articles 34 - 38 ) Chapter III : Procedure ( Articles 39 - 64 ) Chapter IV : Advisory Opinions ( Articles 65 - 68 ) Chapter V : Amendment ( Articles 69 & 70 ) Article 1 -------------------------------------------------------------------------------- The International Court of Justice established by the Charter of the United Nations as the principal judicial organ of the United Nations shall be constituted and shall function in accordance with the provisions of the present Statute . -------------------------------------------------------------------------------- CHAPTER I - ORGANIZATION OF THE COURT -------------------------------------------------------------------------------- Article 2 The Court shall be composed of a body of independent judges , elected regardless of their nationality from among persons of high moral character , who possess the qualifications required in their respective countries for appointment to the highest judicial offices , or are jurisconsults of recognized competence in international law . Article 3 1. The Court shall consist of fifteen members , no two of whom may be nationals of the same state . 2. A person who for the purposes of membership in the Court could be regarded as a national of more than one state shall be deemed to be a national of the one in which he ordinarily exercises civil and political rights . Article 4 1. The members of the Court shall be elected by the General Assembly and by the Security Council from a list of persons nominated by the national groups in the Permanent Court of Arbitration , in accordance with the following provisions . 2. In the case of Members of the United Nations not represented in the Permanent Court of Arbitration , candidates shall be nominated by national groups appointed for this purpose by their governments under the same conditions as those prescribed for members of the Permanent Court of Arbitration by Article 44 of the Convention of The Hague of 1907 for the pacific settlement of international disputes . 3. The conditions under which a state which is a party to the present Statute but is not a Member of the United Nations may participate in electing the members of the Court shall , in the absence of a special agreement , be laid down by the General Assembly upon recommendation of the Security Council . Article 5 1. At least three months before the date of the election , the Secretary-General of the United Nations shall address a written request to the members of the Permanent Court of Arbitration belonging to the states which are parties to the present Statute , and to the members of the national groups appointed under Article 4 , paragraph 2 , inviting them to undertake , within a given time , by national groups , the nomination of persons in a position to accept the duties of a member of the Court . 2. No group may nominate more than four persons , not more than two of whom shall be of their own nationality . In no case may the number of candidates nominated by a group be more than double the number of seats to be filled . Article 6 Before making these nominations , each national group is recommended to consult its highest court of justice , its legal faculties and schools of law , and its national academies and national sections of international academies devoted to the study of law . Article 7 1. The Secretary-General shall prepare a list in alphabetical order of all the persons thus nominated . Save as provided in Article 12 , paragraph 2 , these shall be the only persons eligible . 2. The Secretary-General shall submit this list to the General Assembly and to the Security Council . Article 8 The General Assembly and the Security Council shall proceed independently of one another to elect the members of the Court . Article 9 At every election , the electors shall bear in mind not only that the persons to be elected should individually possess the qualifications required , but also that in the body as a whole the representation of the main forms of civilization and of the principal legal systems of the world should be assured . Article 10 1. Those candidates who obtain an absolute majority of votes in the General Assembly and in the Security Council shall be considered as elected . 2. Any vote of the Security Council , whether for the election of judges or for the appointment of members of the conference envisaged in Article 12 , shall be taken without any distinction between permanent and non-permanent members of the Security Council . 3. In the event of more than one national of the same state obtaining an absolute majority of the votes both of the General Assembly and of the Security Council , the eldest of these only shall be considered as elected . Article 11 If , after the first meeting held for the purpose of the election , one or more seats remain to be filled , a second and , if necessary , a third meeting shall take place . Article 12 1. If , after the third meeting , one or more seats still remain unfilled , a joint conference consisting of six members , three appointed by the General Assembly and three by the Security Council , may be formed at any time at the request of either the General Assembly or the Security Council , for the purpose of choosing by the vote of an absolute majority one name for each seat still vacant , to submit to the General Assembly and the Security Council for their respective acceptance . 2. If the joint conference is unanimously agreed upon any person who fulfills the required conditions , he may be included in its list , even though he was not included in the list of nominations referred to in Article 7. 3. If the joint conference is satisfied that it will not be successful in procuring an election , those members of the Court who have already been elected shall , within a period to be fixed by the Security Council , proceed to fill the vacant seats by selection from among those candidates who have obtained votes either in the General Assembly or in the Security Council . 4. In the event of an equality of votes among the judges , the eldest judge shall have a casting vote . Article 13 1. The members of the Court shall be elected for nine years and may be re-elected ; provided , however , that of the judges elected at the first election , the terms of five judges shall expire at the end of three years and the terms of five more judges shall expire at the end of six years . 2. The judges whose terms are to expire at the end of the above-mentioned initial periods of three and six years shall be chosen by lot to be drawn by the Secretary-General immediately after the first election has been completed . 3. The members of the Court shall continue to discharge their duties until their places have been filled . Though replaced , they shall finish any cases which they may have begun . 4. In the case of the resignation of a member of the Court , the resignation shall be addressed to the President of the Court for transmission to the Secretary-General . This last notification makes the place vacant . Article 14 Vacancies shall be filled by the same method as that laid down for the first election , subject to the following provision : the Secretary-General shall , within one month of the occurrence of the vacancy , proceed to issue the invitations provided for in Article 5 , and the date of the election shall be fixed by the Security Council . Article 15 A member of the Court elected to replace a member whose term of office has not expired shall hold office for the remainder of his predecessor 's term . Article 16 1. No member of the Court may exercise any political or administrative function , or engage in any other occupation of a professional nature . 2. Any doubt on this point shall be settled by the decision of the Court . Article 17 1. No member of the Court may act as agent , counsel , or advocate in any case . 2. No member may participate in the decision of any case in which he has previously taken part as agent , counsel , or advocate for one of the parties , or as a member of a national or international court , or of a commission of enquiry , or in any other capacity . 3. Any doubt on this point shall be settled by the decision of the Court . Article 18 1. No member of the Court can be dismissed unless , in the unanimous opinion of the other members , he has ceased to fulfill the required conditions . 2. Formal notification thereof shall be made to the Secretary-General by the Registrar . 3. This notification makes the place vacant . Article 19 The members of the Court , when engaged on the business of the Court , shall enjoy diplomatic privileges and immunities . Article 20 Every member of the Court shall , before taking up his duties , make a solemn declaration in open court that he will exercise his powers impartially and conscientiously . Article 21 1. The Court shall elect its President and Vice-President for three years ; they may be re-elected . 2. The Court shall appoint its Registrar and may provide for the appointment of such other officers as may be necessary . Article 22 1. The seat of the Court shall be established at The Hague . This , however , shall not prevent the Court from sitting and exercising its functions elsewhere whenever the Court considers it desirable . 2. The President and the Registrar shall reside at the seat of the Court . Article 23 1. The Court shall remain permanently in session , except during the judicial vacations , the dates and duration of which shall be fixed by the Court . 2. Members of the Court are entitled to periodic leave , the dates and duration of which shall be fixed by the Court , having in mind the distance between The Hague and the home of each judge . 3. Members of the Court shall be bound , unless they are on leave or prevented from attending by illness or other serious reasons duly explained to the President , to hold themselves permanently at the disposal of the Court . Article 24 1. If , for some special reason , a member of the Court considers that he should not take part in the decision of a particular case , he shall so inform the President . 2. If the President considers that for some special reason one of the members of the Court should not sit in a particular case , he shall give him notice accordingly . 3. If in any such case the member Court and the President disagree , the matter shall be settled by the decision of the Court . Article 25 1. The full Court shall sit except when it is expressly provided otherwise in the present Statute . 2. Subject to the condition that the number of judges available to constitute the Court is not thereby reduced below eleven , the Rules of the Court may provide for allowing one or more judges , according to circumstances and in rotation , to be dispensed from sitting . 3. A quorum of nine judges shall suffice to constitute the Court . Article 26 1. The Court may from time to time form one or more chambers , composed of three or more judges as the Court may determine , for dealing with particular categories of cases ; for example , labour cases and cases relating to transit and communications . 2. The Court may at any time form a chamber for dealing with a particular case . The number of judges to constitute such a chamber shall be determined by the Court with the approval of the parties . 3. Cases shall be heard and determined by the chambers provided for in this article if the parties so request . Article 27 A judgment given by any of the chambers provided for in Articles 26 and 29 shall be considered as rendered by the Court . Article 28 The chambers provided for in Articles 26 and 29 may , with the consent of the parties , sit and exercise their functions elsewhere than at The Hague . Article 29 With a view to the speedy dispatch of business , the Court shall form annually a chamber composed of five judges which , at the request of the parties , may hear and determine cases by summary procedure . In addition , two judges shall be selected for the purpose of replacing judges who find it impossible to sit . Article 30 1. The Court shall frame rules for carrying out its functions . In particular , it shall lay down rules of procedure . 2. The Rules of the Court may provide for assessors to sit with the Court or with any of its chambers , without the right to vote . Article 31 1. Judges of the nationality of each of the parties shall retain their right to sit in the case before the Court . 2. If the Court includes upon the Bench a judge of the nationality of one of the parties , any other party may choose a person to sit as judge . Such person shall be chosen preferably from among those persons who have been nominated as candidates as provided in Articles 4 and 5. 3. If the Court includes upon the Bench no judge of the nationality of the parties , each of these parties may proceed to choose a judge as provided in paragraph 2 of this Article . 4. The provisions of this Article shall apply to the case of Articles 26 and 29. In such cases , the President shall request one or , if necessary , two of the members of the Court forming the chamber to give place to the members of the Court of the nationality of the parties concerned , and , failing such , or if they are unable to be present , to the judges specially chosen by the parties . 5. Should there be several parties in the same interest , they shall , for the purpose of the preceding provisions , be reckoned as one party only . Any doubt upon this point shall be settled by the decision of the Court . 6. Judges chosen as laid down in paragraphs 2 , 3 , and 4 of this Article shall fulfill the conditions required by Articles 2 , 17 ( paragraph 2 ) , 20 , and 24 of the present Statute . They shall take part in the decision on terms of complete equality with their colleagues . Article 32 1. Each member of the Court shall receive an annual salary . 2. The President shall receive a special annual allowance . 3. The Vice-President shall receive a special allowance for every day on which he acts as President . 4. The judges chosen under Article 31 , other than members of the Court , shall receive compensation for each day on which they exercise their functions . 5. These salaries , allowances , and compensation shall be fixed by the General Assembly . They may not be decreased during the term of office . 6. The salary of the Registrar shall be fixed by the General Assembly on the proposal of the Court . 7. Regulations made by the General Assembly shall fix the conditions under which retirement pensions may be given to members of the Court and to the Registrar , and the conditions under which members of the Court and the Registrar shall have their travelling expenses refunded . 8. The above salaries , allowances , and compensation shall be free of all taxation . Article 33 The expenses of the Court shall be borne by the United Nations in such a manner as shall be decided by the General Assembly . -------------------------------------------------------------------------------- CHAPTER II - COMPETENCE OF THE COURT -------------------------------------------------------------------------------- Article 34 1. Only states may be parties in cases before the Court . 2. The Court , subject to and in conformity with its Rules , may request of public international organizations information relevant to cases before it , and shall receive such information presented by such organizations on their own initiative . 3. Whenever the construction of the constituent instrument of a public international organization or of an international convention adopted thereunder is in question in a case before the Court , the Registrar shall so notify the public international organization concerned and shall communicate to it copies of all the written proceedings . Article 35 1. The Court shall be open to the states parties to the present Statute . 2. The conditions under which the Court shall be open to other states shall , subject to the special provisions contained in treaties in force , be laid down by the Security Council , but in no case shall such conditions place the parties in a position of inequality before the Court . 3. When a state which is not a Member of the United Nations is a party to a case , the Court shall fix the amount which that party is to contribute towards the expenses of the Court . This provision shall not apply if such state is bearing a share of the expenses of the Court Article 36 1. The jurisdiction of the Court comprises all cases which the parties refer to it and all matters specially provided for in the Charter of the United Nations or in treaties and conventions in force . 2. The states parties to the present Statute may at any time declare that they recognize as compulsory ipso facto and without special agreement , in relation to any other state accepting the same obligation , the jurisdiction of the Court in all legal disputes concerning : a. the interpretation of a treaty ; b. any question of international law ; c. the existence of any fact which , if established , would constitute a breach of an international obligation ; d. the nature or extent of the reparation to be made for the breach of an international obligation . 3. The declarations referred to above may be made unconditionally or on condition of reciprocity on the part of several or certain states , or for a certain time . 4. Such declarations shall be deposited with the Secretary-General of the United Nations , who shall transmit copies thereof to the parties to the Statute and to the Registrar of the Court . 5. Declarations made under Article 36 of the Statute of the Permanent Court of International Justice and which are still in force shall be deemed , as between the parties to the present Statute , to be acceptances of the compulsory jurisdiction of the International Court of Justice for the period which they still have to run and in accordance with their terms . 6. In the event of a dispute as to whether the Court has jurisdiction , the matter shall be settled by the decision of the Court . Article 37 Whenever a treaty or convention in force provides for reference of a matter to a tribunal to have been instituted by the League of Nations , or to the Permanent Court of International Justice , the matter shall , as between the parties to the present Statute , be referred to the International Court of Justice . Article 38 1. The Court , whose function is to decide in accordance with international law such disputes as are submitted to it , shall apply : a. international conventions , whether general or particular , establishing rules expressly recognized by the contesting states ; b. international custom , as evidence of a general practice accepted as law ; c. the general principles of law recognized by civilized nations ; d. subject to the provisions of Article 59 , judicial decisions and the teachings of the most highly qualified publicists of the various nations , as subsidiary means for the determination of rules of law . 2. This provision shall not prejudice the power of the Court to decide a case ex aequo et bono , if the parties agree thereto . -------------------------------------------------------------------------------- CHAPTER III - PROCEDURE -------------------------------------------------------------------------------- Article 39 1. The official languages of the Court shall be French and English . If the parties agree that the case shall be conducted in French , the judgment shall be delivered in French . If the parties agree that the case shall be conducted in English , the judgment shall be delivered in English . 2. In the absence of an agreement as to which language shall be employed , each party may , in the pleadings , use the language which it prefers ; the decision of the Court shall be given in French and English . In this case the Court shall at the same time determine which of the two texts shall be considered as authoritative . 3. The Court shall , at the request of any party , authorize a language other than French or English to be used by that party . Article 40 1. Cases are brought before the Court , as the case may be , either by the notification of the special agreement or by a written application addressed to the Registrar . In either case the subject of the dispute and the parties shall be indicated . 2. The Registrar shall forthwith communicate the application to all concerned . 3. He shall also notify the Members of the United Nations through the Secretary-General , and also any other states entitled to appear before the Court . Article 41 1. The Court shall have the power to indicate , if it considers that circumstances so require , any provisional measures which ought to be taken to preserve the respective rights of either party . 2. Pending the final decision , notice of the measures suggested shall forthwith be given to the parties and to the Security Council . Article 42 1. The parties shall be represented by agents . 2. They may have the assistance of counsel or advocates before the Court . 3. The agents , counsel , and advocates of parties before the Court shall enjoy the privileges and immunities necessary to the independent exercise of their duties . Article 43 1. The procedure shall consist of two parts : written and oral . 2. The written proceedings shall consist of the communication to the Court and to the parties of memorials , counter-memorials and , if necessary , replies ; also all papers and documents in support . 3. These communications shall be made through the Registrar , in the order and within the time fixed by the Court . 4. A certified copy of every document produced by one party shall be communicated to the other party . 5. The oral proceedings shall consist of the hearing by the Court of witnesses , experts , agents , counsel , and advocates . Article 44 1. For the service of all notices upon persons other than the agents , counsel , and advocates , the Court shall apply direct to the government of the state upon whose territory the notice has to be served . 2. The same provision shall apply whenever steps are to be taken to procure evidence on the spot . Article 45 The hearing shall be under the control of the President or , if he is unable to preside , of the Vice-President ; if neither is able to preside , the senior judge present shall preside . Article 46 The hearing in Court shall be public , unless the Court shall decide otherwise , or unless the parties demand that the public be not admitted . Article 47 1. Minutes shall be made at each hearing and signed by the Registrar and the President . 2. These minutes alone shall be authentic . Article 48 The Court shall make orders for the conduct of the case , shall decide the form and time in which each party must conclude its arguments , and make all arrangements connected with the taking of evidence . Article 49 The Court may , even before the hearing begins , call upon the agents to produce any document or to supply any explanations . Formal note shall be taken of any refusal . Article 50 The Court may , at any time , entrust any individual , body , bureau , commission , or other organization that it may select , with the task of carrying out an enquiry or giving an expert opinion . Article 51 During the hearing any relevant questions are to be put to the witnesses and experts under the conditions laid down by the Court in the rules of procedure referred to in Article 30. Article 52 After the Court has received the proofs and evidence within the time specified for the purpose , it may refuse to accept any further oral or written evidence that one party may desire to present unless the other side consents . Article 53 1. Whenever one of the parties does not appear before the Court , or fails to defend its case , the other party may call upon the Court to decide in favour of its claim . 2. The Court must , before doing so , satisfy itself , not only that it has jurisdiction in accordance with Articles 36 and 37 , but also that the claim is well founded in fact and law . Article 54 1. When , subject to the control of the Court , the agents , counsel , and advocates have completed their presentation of the case , the President shall declare the hearing closed . 2. The Court shall withdraw to consider the judgment . 3. The deliberations of the Court shall take place in private and remain secret . Article 55 1. All questions shall be decided by a majority of the judges present . 2. In the event of an equality of votes , the President or the judge who acts in his place shall have a casting vote . Article 56 1. The judgment shall state the reasons on which it is based . 2. It shall contain the names of the judges who have taken part in the decision . Article 57 If the judgment does not represent in whole or in part the unanimous opinion of the judges , any judge shall be entitled to deliver a separate opinion . Article 58 The judgment shall be signed by the President and by the Registrar . It shall be read in open court , due notice having been given to the agents . Article 59 The decision of the Court has no binding force except between the parties and in respect of that particular case . Article 60 The judgment is final and without appeal . In the event of dispute as to the meaning or scope of the judgment , the Court shall construe it upon the request of any party . Article 61 1. An application for revision of a judgment may be made only when it is based upon the discovery of some fact of such a nature as to be a decisive factor , which fact was , when the judgment was given , unknown to the Court and also to the party claiming revision , always provided that such ignorance was not due to negligence . 2. The proceedings for revision shall be opened by a judgment of the Court expressly recording the existence of the new fact , recognizing that it has such a character as to lay the case open to revision , and declaring the application admissible on this ground . 3. The Court may require previous compliance with the terms of the judgment before it admits proceedings in revision . 4. The application for revision must be made at latest within six months of the discovery of the new fact . 5. No application for revision may be made after the lapse of ten years from the date of the judgment . Article 62 l. Should a state consider that it has an interest of a legal nature which may be affected by the decision in the case , it may submit a request to the Court to be permitted to intervene . 2 It shall be for the Court to decide upon this request . Article 63 1. Whenever the construction of a convention to which states other than those concerned in the case are parties is in question , the Registrar shall notify all such states forthwith . 2. Every state so notified has the right to intervene in the proceedings ; but if it uses this right , the construction given by the judgment will be equally binding upon it . Article 64 Unless otherwise decided by the Court , each party shall bear its own costs . -------------------------------------------------------------------------------- CHAPTER IV - ADVISORY OPINIONS -------------------------------------------------------------------------------- Article 65 1. The Court may give an advisory opinion on any legal question at the request of whatever body may be authorized by or in accordance with the Charter of the United Nations to make such a request . 2. Questions upon which the advisory opinion of the Court is asked shall be laid before the Court by means of a written request containing an exact statement of the question upon which an opinion is required , and accompanied by all documents likely to throw light upon the question . Article 66 1. The Registrar shall forthwith give notice of the request for an advisory opinion to all states entitled to appear before the Court . 2. The Registrar shall also , by means of a special and direct communication , notify any state entitled to appear before the Court or international organization considered by the Court , or , should it not be sitting , by the President , as likely to be able to furnish information on the question , that the Court will be prepared to receive , within a time-limit to be fixed by the President , written statements , or to hear , at a public sitting to be held for the purpose , oral statements relating to the question . 3. Should any such state entitled to appear before the Court have failed to receive the special communication referred to in paragraph 2 of this Article , such state may express a desire to submit a written statement or to be heard ; and the Court will decide . 4. States and organizations having presented written or oral statements or both shall be permitted to comment on the statements made by other states or organizations in the form , to the extent , and within the time-limits which the Court , or , should it not be sitting , the President , shall decide in each particular case . Accordingly , the Registrar shall in due time communicate any such written statements to states and organizations having submitted similar statements . Article 67 The Court shall deliver its advisory opinions in open court , notice having been given to the Secretary-General and to the representatives of Members of the United Nations , of other states and of international organizations immediately concerned . Article 68 In the exercise of its advisory functions the Court shall further be guided by the provisions of the present Statute which apply in contentious cases to the extent to which it recognizes them to be applicable . -------------------------------------------------------------------------------- CHAPTER V - AMENDMENT -------------------------------------------------------------------------------- Article 69 Amendments to the present Statute shall be effected by the same procedure as is provided by the Charter of the United Nations for amendments to that Charter , subject however to any provisions which the General Assembly upon recommendation of the Security Council may adopt concerning the participation of states which are parties to the present Statute but are not Members of the United Nations . Article 70 The Court shall have power to propose such amendments to the present Statute as it may deem necessary , through written communications to the Secretary-General , for consideration in conformity with the provisions of Article 69. -------------------------------------------------------------------------------- 