npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rib-validator-dz

v1.0.0

Published

Validate Algerian RIB (Relevé d’Identité Bancaire) according to instruction 06-2004

Readme

rib-validator-dz

npm version TypeScript

Validateur de RIB (Relevé d'Identité Bancaire) et RIP (Relevé d'Identité Postal) algérien conforme à l'Instruction 06-2004 de la Banque d'Algérie.

📋 À propos

Ce package TypeScript/JavaScript permet de valider les RIB et RIP algériens en utilisant l'algorithme de contrôle Modulo 97. Il vérifie la conformité du format et calcule la clé de contrôle selon les spécifications officielles.

Structure d'un RIB/RIP algérien

Un RIB/RIP algérien est composé de 20 chiffres répartis comme suit :

  • 3 chiffres : Code banque
  • 5 chiffres : Code agence (toujours "99999" pour Algérie Poste)
  • 10 chiffres : Numéro de compte
  • 2 chiffres : Clé de contrôle (Modulo 97)

Note spéciale pour Algérie Poste (CCP) : Le code agence est toujours "99999" et le document s'appelle RIP (Relevé d'Identité Postal).

📦 Installation

npm install rib-validator-dz

🚀 Utilisation

Importation

import { validateRIB, RIBDetails, bankCodes } from 'rib-validator-dz';

Validation simple

// Exemple avec un RIB générique (remplacez par votre RIB)
const result = validateRIB("VOTRE_RIB_ICI");

console.log(result.isValid); // true
console.log(result.bankCode); // "004"
console.log(result.agencyCode); // "12345"
console.log(result.accountNumber); // "0123456789"
console.log(result.controlKey); // "12"
console.log(result.calculatedKey); // "12"
console.log(result.bankInfo); // { short: "CPA", name: "Crédit Populaire d'Algérie" }

Gestion des erreurs

const result = validateRIB("00100234567890123456"); // RIB de test invalide

if (!result.isValid) {
  console.log("RIB invalide:", result.error);
  // "RIB invalide: Clé invalide : attendue 72"
}

Nettoyage automatique

Le validateur supprime automatiquement les espaces :

// Exemple avec espaces (remplacez par votre RIB) "001 12345 1234567890 12"
const result = validateRIB("VOTRE_RIB_AVEC_ESPACES");
// Fonctionne parfaitement, les espaces sont ignorés

Accès au dictionnaire des banques

// Accès direct au dictionnaire
console.log(bankCodes["004"]); // { short: "CPA", name: "Crédit Populaire d'Algérie" }

// Ou via le résultat de validation
const result = validateRIB("VOTRE_RIB_ICI");
console.log(`Banque: ${result.bankInfo.short} - ${result.bankInfo.name}`);
// "Banque: CPA - Crédit Populaire d'Algérie"

// Pour une banque non reconnue
const unknownResult = validateRIB("99901234567890123456");
console.log(unknownResult.bankInfo);
// { short: "INCONNUE", name: "Banque inconnue (code: 999)" }

📖 API

validateRIB(rib: string): RIBDetails

Valide un RIB ou RIP algérien et retourne les détails de validation.

Paramètres :

  • rib (string) : Le RIB/RIP à valider (20 chiffres, espaces optionnels)

Retour :

  • RIBDetails : Objet contenant les détails du RIB/RIP et le résultat de la validation

Interface RIBDetails

interface RIBDetails {
  /** Code banque (3 chiffres) */
  bankCode: string;
  /** Code agence (5 chiffres) */
  agencyCode: string;
  /** Numéro de compte (10 chiffres) */
  accountNumber: string;
  /** Clé de contrôle fournie dans le RIB (2 chiffres) */
  controlKey: string;
  /** Clé de contrôle calculée par l'algorithme (2 chiffres) */
  calculatedKey: string;
  /** Indique si le RIB est valide */
  isValid: boolean;
  /** Message d'erreur si le RIB est invalide */
  error?: string | undefined;
  /** Informations sur la banque (toujours présent, "INCONNUE" si code non reconnu) */
  bankInfo: { short: string; name: string };
}

Dictionnaire bankCodes

const bankCodes: Record<string, { short: string; name: string }>

Dictionnaire contenant les codes banque algériennes avec leurs abréviations et noms complets.

🏦 Codes banque algériennes

| Code | Abréviation | Nom complet | |------|-------------|-------------| | 001 | BNA | Banque Nationale d'Algérie | | 002 | BEA | Banque Extérieur d'Algérie | | 003 | BADR | Banque de l'Agriculture et du Développement Rural | | 004 | CPA | Crédit Populaire d'Algérie | | 005 | BDL | Banque de Développement Local | | 006 | BARAKA | El Baraka Bank | | 007 | CCP | Algérie Poste - Compte Courant Postal (RIP) | | 008 | TRESOR | Trésor Central - Banque d'Algérie | | 010 | CNMA | Caisse Nationale de Mutualité Agricole | | 011 | CNEP | Caisse Nationale d'Épargne et de Prévoyance | | 012 | CITI | City Bank | | 014 | ABC | Arab Banking Corporation Algeria | | 020 | NATIXIS | Natixis Banque | | 021 | SGA | Société Générale Algérie | | 026 | ARAB BANK | Arab Bank PLC | | 027 | BNP | BNP Paribas El Djazaïr | | 029 | TRUST | Trust Bank | | 031 | HOUSING | Housing Bank Algeria | | 032 | AGB | Algeria Gulf Bank | | 035 | FRANSABANK | Fransabank El Djazaïr | | 036 | CALYON | Calyon Algeria | | 037 | HSBC | HSBC Algeria | | 038 | ALSALAM | Al Salam Bank Algeria | | 111 | BA | Banque d'Algérie |

🔧 Algorithme de validation

L'algorithme utilisé est conforme à l'Instruction 06-2004 (méthode Modulo 97) :

  1. Concaténation : AGENCE(5) + COMPTE(10) → R1
  2. Multiplication : R2 = R1 × 100
  3. Modulo : R3 = R2 % 97
  4. Clé de contrôle : clé = 97 - R3 (si clé = 0 → clé = 97)

🧪 Exemples de test

// RIB invalide (exemple de test)
validateRIB("00100234567890123456"); // ❌ Clé incorrecte

🛠️ Développement

Prérequis

  • Node.js
  • TypeScript

Installation des dépendances

npm install

Compilation

npm run build

Tests

npm run test

🚀 Perspectives

Fonctionnalités prévues

  • Validator SWIFT algérien : Support pour les codes SWIFT algériens
  • Logos des banques : Ajout d'un champ bankLogo avec URL vers les logos officiels
  • Fonction de lookup : Export de getBankInfo(code) pour recherche rapide
  • Compatibilité ESM/CommonJS : Support complet pour React et Node.js
  • Tests unitaires : Suite de tests complète avec Jest ou Vitest
  • Génération PDF : Fonctionnalité pour télécharger les relevés d'identité en PDF

Roadmap

// Exemples des futures fonctionnalités

// Validator SWIFT
validateSWIFT("CPALDZAL213");

// Lookup rapide
const bankInfo = getBankInfo("004");

// Génération PDF
generateRIBReport(ribDetails);

📄 Licence

MIT © HxK1m | LinkedIn

🔗 Références