{"id":44616216,"url":"https://github.com/sunyata-ou/idsmith","last_synced_at":"2026-02-19T18:00:48.464Z","repository":{"id":338262480,"uuid":"1157232464","full_name":"Sunyata-OU/idsmith","owner":"Sunyata-OU","description":"Validate and generate checksum-correct IBANs, personal IDs, bank accounts, credit cards, SWIFT/BIC etc","archived":false,"fork":false,"pushed_at":"2026-02-18T10:12:19.000Z","size":1751,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T18:50:46.643Z","etag":null,"topics":["bank-account","banking","bsn","checksum","cli","codice-fiscale","european","fintech","gdpr","hetu","iban","jmbg","personal-id","personnummer","pesel","qa-testing","rust","test-data","validation","validator"],"latest_commit_sha":null,"homepage":"https://github.com/Sunyata-OU/EU-Test-Data-Generator","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sunyata-OU.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-13T15:31:32.000Z","updated_at":"2026-02-18T10:08:21.000Z","dependencies_parsed_at":"2026-02-18T17:00:33.806Z","dependency_job_id":null,"html_url":"https://github.com/Sunyata-OU/idsmith","commit_stats":null,"previous_names":["sunyata-ou/eu-test-data-generator","sunyata-ou/idsmith"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Sunyata-OU/idsmith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunyata-OU%2Fidsmith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunyata-OU%2Fidsmith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunyata-OU%2Fidsmith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunyata-OU%2Fidsmith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sunyata-OU","download_url":"https://codeload.github.com/Sunyata-OU/idsmith/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunyata-OU%2Fidsmith/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29626591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bank-account","banking","bsn","checksum","cli","codice-fiscale","european","fintech","gdpr","hetu","iban","jmbg","personal-id","personnummer","pesel","qa-testing","rust","test-data","validation","validator"],"created_at":"2026-02-14T13:04:11.657Z","updated_at":"2026-02-19T18:00:48.409Z","avatar_url":"https://github.com/Sunyata-OU.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" alt=\"idsmith logo\" width=\"200\" /\u003e\n\u003c/p\u003e\n\n# idsmith\n\n[![Crates.io](https://img.shields.io/crates/v/idsmith)](https://crates.io/crates/idsmith)\n[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://sunyata-ou.github.io/idsmith/)\n[![CI](https://github.com/Sunyata-OU/idsmith/actions/workflows/ci.yml/badge.svg)](https://github.com/Sunyata-OU/idsmith/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nValidate and generate checksum-correct **IBANs**, **personal IDs**, **bank accounts**, **credit cards**, **SWIFT/BIC**, **company IDs**, **driver's licenses**, **tax IDs**, **passports**, **LEI codes**, and **EU VAT numbers**.\n\nAvailable as a **Rust crate**, **Python package**, and **Node.js module** — all powered by the same Rust core.\n\n**[Read the full documentation →](https://sunyata-ou.github.io/idsmith/)**\n\n## Install\n\n```bash\n# Rust (library only, no CLI deps)\ncargo add idsmith --no-default-features\n\n# Rust (with JSON serialization)\ncargo add idsmith --no-default-features --features json\n\n# Rust (CLI)\ncargo install idsmith\n\n# Python\npip install idsmith\n\n# Node.js\nnpm install idsmith\n```\n\n### Cargo Features\n\n| Feature | Description | Default |\n|---------|-------------|---------|\n| `cli` | Full CLI binary (clap, csv, json) | Yes |\n| `json` | `serde::Serialize` on all result types | No |\n| `csv` | CSV output formatting | No |\n\nUse `default-features = false` when using as a library to keep dependencies minimal.\n\n## Quick Example\n\n```rust\n// Rust\nuse idsmith::{credit_cards, personal_ids, tax_ids, passports, driver_licenses, vat_ids, lei_codes};\n\nlet valid = credit_cards().validate(\"4152839405126374\");\nlet ssn_ok = personal_ids().validate(\"US\", \"446-72-2445\").unwrap_or(false);\nlet pan_ok = tax_ids().validate(\"IN\", \"ABCDE1234F\");\nlet passport_ok = passports().validate(\"US\", \"123456789\");\nlet dl_ok = driver_licenses().validate(\"US\", \"A123456789012\");\nlet vat_ok = vat_ids().validate(\"DE123456789\");\nlet lei_ok = lei_codes().validate(\"529900BOTDR0SE98AR17\");\n```\n\n```python\n# Python\nimport idsmith\n\nidsmith.CreditCard.validate(\"4152839405126374\")      # True\nidsmith.PersonalId.validate(\"US\", \"446-72-2445\")      # True\nidsmith.TaxId.validate(\"IN\", \"ABCDE1234F\")            # True\nidsmith.Passport.generate(country=\"DE\")\nidsmith.DriverLicense.validate(\"US\", \"A123456789012\")  # True\nidsmith.VatId.validate(\"DE123456789\")                  # True\nidsmith.LegalEntityId.validate(\"529900BOTDR0SE98AR17\") # True\niban = idsmith.generate_iban(\"DE\")\n```\n\n```javascript\n// Node.js\nconst { CreditCard, PersonalId, TaxId, Passport, DriverLicense, VatId, LegalEntityId, generateIban } = require('idsmith');\n\nCreditCard.validate('4152839405126374');      // true\nPersonalId.validate('US', '446-72-2445');     // true\nTaxId.validate('IN', 'ABCDE1234F');           // true\nconst passport = Passport.generate('DE');\nDriverLicense.validate('US', 'A123456789012'); // true\nVatId.validate('DE123456789');                // true\nLegalEntityId.validate('529900BOTDR0SE98AR17'); // true\nconst iban = generateIban('DE');\n```\n\n## Features\n\n- **124 IBAN countries** with mod-97-10 checksum validation\n- **159 bank account formats** — US ABA, MX CLABE, AU BSB, IN IFSC, and more\n- **97 personal ID formats** — SSN, CPF, Aadhaar, PESEL, Codice Fiscale, etc.\n- **6 credit card brands** — Visa, Mastercard, Amex, Discover, JCB, Diners (Luhn)\n- **SWIFT/BIC codes** — valid 8 and 11 character codes\n- **250 company ID formats** — VAT numbers, EINs, CIFs with checksums\n- **79 driver's license formats** — with country-specific checksum and format validation\n- **80 tax ID formats** — with checksum validation (PAN, TIN, CPF, SIN, Steuer-IdNr, USCI, Partita IVA, NIF, BSN, RFC, and more)\n- **79 passport formats** — with country-specific format validation\n- **LEI codes** — ISO 17442 Legal Entity Identifiers with mod-97 checksum\n- **28 EU VAT number formats** — all EU member states + GB with country-specific checksums (cross-validated against python-stdnum)\n- **CLI tool** with JSON and CSV export\n\n## Performance\n\nIBAN validation throughput (100k iterations, single-threaded):\n\n| Library | Language | Throughput | vs idsmith |\n|---------|----------|-----------|------------|\n| **idsmith** | **Rust** | **~1,310,000 ops/s** | **—** |\n| `ibantools` | Node.js | ~460,000 ops/s | ~2.8x slower |\n| `python-stdnum` | Python | ~54,000 ops/s | ~24x slower |\n\nExtended document validation (idsmith Rust):\n\n| Document Type | Throughput | vs Node.js alternatives |\n|---------------|------------|-------------------------|\n| Personal ID (US SSN) | ~9,300,000 ops/s | ~30x faster |\n| Credit Card (Visa) | ~14,900,000 ops/s | ~53x faster |\n| Driver License (US) | ~10,100,000 ops/s | — |\n| Passport (DE) | ~19,100,000 ops/s | — |\n| Tax ID (India PAN) | ~7,800,000 ops/s | — |\n\nPython and Node.js bindings call the same Rust core — same speed, same correctness.\n\n## Projects Using idsmith\n\n- [MockBanker](https://tonybenoy.github.io/mockbanker/) — Web app implementing nearly all idsmith features, generate realistic mock banking and identity data in the browser\n\n## Documentation\n\n- [Full Documentation](https://sunyata-ou.github.io/idsmith/)\n- [Rust API Reference](https://sunyata-ou.github.io/idsmith/api/rust/idsmith/index.html)\n- [Python Quick Start](https://sunyata-ou.github.io/idsmith/python/quick-start.html)\n- [Node.js Quick Start](https://sunyata-ou.github.io/idsmith/node/quick-start.html)\n- [CLI Usage](https://sunyata-ou.github.io/idsmith/rust/cli.html)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunyata-ou%2Fidsmith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunyata-ou%2Fidsmith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunyata-ou%2Fidsmith/lists"}