Basic Bank Account Number
Page d'aide sur l'homonymie Pour les articles homonymes, voir RIB (homonymie).

Le BBAN est une subdivision locale de l'IBAN délivré par la banque et que l'on remet à un débiteur ou un créancier dans le but d'opérer des virements bancaires ou des prélèvements bancaires à partir d'un compte courant. On trouve souvent un RIB à la fin des carnets de chèques ou en tête du relevé de compte.

On utilise parfois les appellations :

  • RIB pour relevé d'identité bancaire en France,
  • RICE pour relevé d'identité Caisse d'épargne

Sommaire

Composition

Composition du BBAN
3 à 12 positions 8 à 20 positions
IID BAN


  • IID : Identification de l’établissement financier
  • BAN : Numéro de compte bancaire

Il n'a pas plus de 30 positions. Chaque pays est en charge de définir le format de son BBAN.

Exemples

  • France (23 caractères) Format : BBBBBGGGGGCCCCCCCCCCCRR
B = code banque (5 chiffres), G = code guichet (5 chiffres), C = numéro de compte (11 chiffres et/ou lettres), R = clé RIB (2 chiffres entre 01 et 97)
  • Belgique (9 chiffres) Format : BBB-NNN NNNN-CC
CC = BBBNNNNNNN modulo 97

Clef RIB

Clé = 97 - ( (concaténation de banque-guichet-compte)*100 modulo 97)[1]. Si le compte comporte des lettres (codes banques français 20041, Banque Postale, ou 30002, Crédit Lyonnais), remplacer la lettre par son index de 1 à 9 dans l'alphabet (A=1 ... I=9,J=1, etc.) et en laissant un espace entre R et S.

Pour plus de détails, voir l'article Wikipedia: Clé RIB.

Le chéquier

Le relevé d'identité bancaire, sur le carnet de chèque, est composé de :

  • l'International Banking Account Number (IBAN), numéro de compte à la norme internationale ISO n° 13616
  • le Bank Identification Code (BIC), identifiant de l'établissement financier (la banque) à la norme internationale ISO n° 9362
  • le nom et l'adresse du titulaire du compte, en date d'établissement du carnet de chèque (les chèques restant valides après déménagement)
  • le nom de l'établissement financier (la banque) et du guichet de domiciliation (l'agence)

Vérification du RIB

Algorithme

La validité d'un RIB se calcule grâce à la clé de celui-ci.

La première étape consiste à remplacer les lettres présentes par des chiffres pour faciliter le calcul.

Tableau de transformation des caractères
Caractère Chiffre représentant
0 0
1, A, J 1
2, B, K, S 2
3, C, L, T 3
4, D, M, U 4
5, E, N, V 5
6, F, O, W 6
7, G, P, X 7
8, H, Q, Y 8
9, I, R, Z 9

Pour faire la transformation, il suffit de se placer en base 36 (base 10 + 26 lettres) et d'appliquer le calcul suivant sur chaque caractère (transformé en nombre currentCharValue) puis de remplacer le sélectionné par le nombre donné :


currentCharValue + 2^{\frac{currentCharValue-10}9}\pmod{10}


L'étape suivante (facultative) consiste à décomposer le code et multiplier chaque partie par une constante et en faire la somme. Enfin, le code est correct si le nombre obtenu (soit par simple concaténation de nos differentes parties, soit par décomposition) est congru à 0 modulo 97.


bankCode * 89 + counter * 15 + account * 3 + key \equiv 0 \pmod{97}

Algorithme de vérification en PHP

La fonction check_rib retourne vrai ou faux en fonction de la validité des informations.

function check_rib($cbanque, $cguichet, $nocompte, $clerib) {
        $tabcompte = "";
        $len = strlen($nocompte);
        if ($len != 11) {
                return false;
        }
        for ($i = 0; $i < $len; $i++) {
                $car = substr($nocompte, $i, 1);
                if (!is_numeric($car)) {
                        $c = ord($car) - (ord('A') - 1);
                        $b = ($c + pow(2, ($c - 10)/9)) % 10;
                        $tabcompte .= $b;
                }
                else {
                        $tabcompte .= $car;
                }
        }
        $int = $cbanque . $cguichet . $tabcompte . $clerib;
        return (strlen($int) >= 21 && bcmod($int, 97) == 0);
}

Algorithme de vérification en Java

import java.math.BigDecimal;
 
public class Validation{
    public boolean checkRib(String rib) {
        StringBuilder extendedRib = new StringBuilder(rib.length());
        for (char currentChar : rib.toCharArray()) {
            //Works on base 36
            int currentCharValue = Character.digit(currentChar, Character.MAX_RADIX);
            //Convert character to simple digit
            extendedRib.append(currentCharValue<10?currentCharValue:(currentCharValue + (int) StrictMath.pow(2,(currentCharValue-10)/9))%10);
        }
 
        return new BigDecimal(extendedRib.toString()).remainder(new BigDecimal(97)).intValue() == 0;
    }
}

Algorithme de vérification en Ruby

Avec :

  • rib : le RIB complet sans espace à passer à la méthode.
  def rib?(rib)
    bank, office, account, key = rib.match(/^(\d{5})(\d{5})(\d{11})(\d{2})$/).captures
    account                    = account.each_char.inject('') do |sum, char|
      char = char.to_i 36
      sum  += ((char + 2 ** ((char - 10)/9)).to_i % 10).to_s
    end
    result                     = bank + office + account + key
    result.size >= 21 && result.to_i % 97 == 0
  rescue
    # Le RIB n’est pas valide
    false
  end

Algorithme de vérification en Perl

Avec :

  • $cbanque : code de la banque
  • $cguichet : code du guichet
  • $nocompte : numéro de compte
  • $clerib : clé rib
    use Math::BigInt;
    my %letter_substitution = ("A" => 1, "B" => 2, "C" => 3, "D" => 4, "E" => 5, "F" => 6, "G" => 7, "H" => 8, "I" => 9,
                               "J" => 1, "K" => 2, "L" => 3, "M" => 4, "N" => 5, "O" => 6, "P" => 7, "Q" => 8, "R" => 9,
                                         "S" => 2, "T" => 3, "U" => 4, "V" => 5, "W" => 6, "X" => 7, "Y" => 8, "Z" => 9); 
    my $tabcompte = ""; 
    my $len = length($nocompte);
    return 0 if ($len != 11);
    for (my $i = 0; $i < $len; $i++) {
        my $car = substr($nocompte, $i, 1); 
        if ($car !~ m/^\d$/) {
            my $b = $letter_substitution{uc($car)};
            my $c = ( $b + 2**(($b - 10)/9) ) % 10; 
            $tabcompte .= $c; 
        } else {
            $tabcompte .= $car;
        }   
    }   
    my $int = "$cbanque$cguichet$tabcompte$clerib";
    return (length($int) >= 21 && Math::BigInt->new($int)->bmod(97) == 0) ? 1 : 0;

Requete de vérification du dossier RIB par calcul de la clé RIB

renseigner les codes Banque et Guichet ainsi que le numéro de compte à l'exécution de la requête SQL.

  SELECT Saisie.*
         ,97-MOD(Banque*89+Guichet*15+Compte*3,97) CleRIB
  FROM (SELECT substr(lpad(&Banque,5,'0'),1,5) Banque
              ,substr(lpad(&Guichet,5,'0'),1,5) Guichet
              ,translate(UPPER(substr(lpad('&Compte',11,'0'),1,11))
                       ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                       , 12345678912345678923456789
               ) Compte
        FROM dual
       ) Saisie;

Conversion du RIB en IBAN

Algorithme

Etape 1 : Créer un IBAN temporaire, composé du code du pays : FR pour la France, suivi de " 00 " et du " code RIB "

Etape 2 : Déplacer les 4 premiers caractères de l’IBAN vers la droite du numéro.

Etape 3 : Convertir les lettres en chiffres, selon le principe "A" vaut "10" ... "Z" vaut "35".

Etape 4 : Calculer le modulo 97 et retrancher le reste de 98. Si le résultat comporte un seul chiffre, insérer un zéro devant. Insérer le résultat ainsi obtenu à la position 3 de l’IBAN temporaire créé dans l’étape 1.

Algorithme de conversion du RIB en IBAN en PHP

function Rib2Iban($codebanque,$codeguichet,$numerocompte,$cle){
        $charConversion = array("A" => "10","B" => "11","C" => "12","D" => "13","E" => "14","F" => "15","G" => "16","H" => "17",
        "I" => "18","J" => "19","K" => "20","L" => "21","M" => "22","N" => "23","O" => "24","P" => "25","Q" => "26",
        "R" => "27","S" => "28","T" => "29","U" => "30","V" => "31","W" => "32","X" => "33","Y" => "34","Z" => "35");
 
        $tmpiban = strtr(strtoupper($codebanque.$codeguichet.$numerocompte.$cle)."FR00",$charConversion);
 
        // Soustraction du modulo 97 de l'IBAN temporaire à 98
        $cleiban = strval(98 - intval(bcmod($tmpiban,"97")));
 
        if (strlen($cleiban) == 1)
                $cleiban = "0".$cleiban;
 
        return "FR".$cleiban.$codebanque.$codeguichet.$numerocompte.$cle;
}

Algorithme de conversion du RIB en IBAN en Ruby

Avec :

  • rib : le RIB complet sans espace à passer à la méthode.
  def rib_to_iban(rib)
    tmp_iban    = "#{rib}FR00".each_char.inject('') do |sum, char|
      sum += char.to_i(36).to_s
    end.to_i
    key         = 98 - (tmp_iban % 97)
    "FR%.2d%s" % [key, rib]
  end

Articles connexes

Liens externes

Références

  1. À rapprocher de la clé du numéro de Sécurité Sociale française, qui ne multiplie pas par 100.

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Basic Bank Account Number de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • International Bank Account Number — The International Bank Account Number (IBAN) is an international standard for identifying bank accounts across national borders. It was originally adopted by the European Committee for Banking Standards, and was later adopted as ISO 13616:1997… …   Wikipedia

  • International Bank Account Number — Die International Bank Account Number (IBAN, auf Deutsch: Internationale Bankkontonummer) ist eine internationale, standardisierte Notation für Bankkontonummern. Die Notation wird durch die ISO Norm ISO 13616 1:2007 Teil 1 beschrieben.… …   Deutsch Wikipedia

  • International Bank Account Number — ( IBAN) Euroclear Clearing and Settlement glossary International standard (ISO 13616). An expanded version of the Basic Bank Account Number (BBAN), intended for use internationally that uniquely identifies an individual account at a specific… …   Financial and business terms

  • International Bank Account Number — (IBAN) International standard (ISO 13616). An expanded version of the Basic Bank Account Number (BBAN), intended for use internationally that uniquely identifies an individual account at a specific financial institution, in a particular country …   Euroclear glossary

  • International Bank Account Number - IBAN — A standard numbering system developed to identify bank accounts from around the world. It was originally developed by banks in Europe to simplify transactions involving bank accounts from other countries. The IBAN number consists of a two letter… …   Investment dictionary

  • account reconciliation services — A cash management service. One or more of a series of bank services designed to aid a deposit customer in the reconciliation of its bank account balance. A basic account reconciliation service may simply be a listing of paid checks in serial… …   Financial and business terms

  • bank — bank1 /bangk/, n. 1. a long pile or heap; mass: a bank of earth; a bank of clouds. 2. a slope or acclivity. 3. Physical Geog. the slope immediately bordering a stream course along which the water normally runs. 4. a broad elevation of the sea… …   Universalium

  • Bank Refah — Infobox Company company name = Bank Refah بانك رفاه company company type = Bank foundation = Tehran, Iran, 1960 location = industry = Bank products = Financial services homepage = [http://www.bankrefah.ir/en/ www.bankrefah.ir] Bank Refah Kargaran …   Wikipedia

  • Merchant account — A merchant account is a type of bank account that allows businesses to accept payments by debit or credit cards. A merchant account is established under an agreement between an acceptor and a merchant acquiring bank for the settlement of credit… …   Wikipedia

  • National identification number — A national identification number, national identity number, or national insurance number is used by the governments of many countries as a means of tracking their citizens, permanent residents, and temporary residents for the purposes of work,… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”