{"id":34337744,"url":"https://github.com/arturmkrtchyan/iban4j","last_synced_at":"2026-04-09T03:31:19.428Z","repository":{"id":10415385,"uuid":"12573454","full_name":"arturmkrtchyan/iban4j","owner":"arturmkrtchyan","description":"A Java library for generation and validation of the International Bank Account Numbers (IBAN ISO_13616) and Business Identifier Codes (BIC ISO_9362).","archived":false,"fork":false,"pushed_at":"2026-03-08T12:24:26.000Z","size":1672,"stargazers_count":297,"open_issues_count":38,"forks_count":133,"subscribers_count":19,"default_branch":"master","last_synced_at":"2026-03-08T13:53:11.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://iban4j.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arturmkrtchyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2013-09-03T19:59:23.000Z","updated_at":"2026-03-08T12:20:56.000Z","dependencies_parsed_at":"2024-02-19T14:29:17.496Z","dependency_job_id":"a0f7ba97-4df9-4873-a423-b5e0ba1cfc39","html_url":"https://github.com/arturmkrtchyan/iban4j","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/arturmkrtchyan/iban4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturmkrtchyan%2Fiban4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturmkrtchyan%2Fiban4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturmkrtchyan%2Fiban4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturmkrtchyan%2Fiban4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arturmkrtchyan","download_url":"https://codeload.github.com/arturmkrtchyan/iban4j/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturmkrtchyan%2Fiban4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-12-17T21:02:37.344Z","updated_at":"2026-04-09T03:31:19.423Z","avatar_url":"https://github.com/arturmkrtchyan.png","language":"Java","funding_links":[],"categories":["\u003ca name=\"Java\"\u003e\u003c/a\u003eJava","支付","European Utilities"],"sub_categories":["文件同步"],"readme":"iban4j\n======\n\nA Java library for the generation, validation, and parsing of\nInternational Bank Account Numbers (IBAN) and Business Identifier Codes (BIC).\n\n[![Build Status](https://github.com/arturmkrtchyan/iban4j/actions/workflows/java-ci.yml/badge.svg)](https://github.com/arturmkrtchyan/iban4j/actions/workflows/java-ci.yml) [![Coverage Status](https://img.shields.io/coveralls/arturmkrtchyan/iban4j.svg)](https://coveralls.io/r/arturmkrtchyan/iban4j) [![Maven Central](https://img.shields.io/maven-central/v/org.iban4j/iban4j)](https://central.sonatype.com/artifact/org.iban4j/iban4j)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://raw.githubusercontent.com/arturmkrtchyan/iban4j/master/LICENSE.txt)\n\n---\n\n### Features\n\n- **IBAN Generation and Validation**:\n  Supports creating valid IBANs and verifying their format and check digits.\n- **BIC Validation**:\n  Checks the validity of Business Identifier Codes.\n- **Multiple Formats**:\n  Handles both standard and formatted string representations.\n- **Customizable Padding**:\n  Offers options for zero-padding account and bank codes.\n\n---\n\n## Getting Started\n\n### Maven Dependency\n\nTo use **iban4j** in your Maven project, add the following dependency to your `pom.xml`:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.iban4j\u003c/groupId\u003e\n    \u003cartifactId\u003eiban4j\u003c/artifactId\u003e\n  \u003cversion\u003e3.2.13-RELEASE\u003c/version\u003e\n\u003c/dependency\u003e\n````\n\n#### Gradle Dependency\n\nTo include **iban4j** into your Gradle project, add the following dependency to your `build.gradle` or `build.gradle.kts` file.\n\nFor a **Groovy DSL** (`build.gradle`) file:\n\n```groovy\ndependencies {\n  implementation 'org.iban4j:iban4j:3.2.13-RELEASE'\n}\n```\n\nFor a **Kotlin DSL** (`build.gradle.kts`) file:\n\n```kotlin\ndependencies {\n  implementation(\"org.iban4j:iban4j:3.2.13-RELEASE\")\n}\n```\n\nAfter adding the dependency, run `gradle build`. Gradle will automatically download the library and include it in your project.\n\n-----\n\n### Usage Examples\n\n#### IBAN Examples\n\n##### Generate an IBAN\n\n```java\n// Using the Builder pattern\nIban iban = new Iban.Builder()\n    .countryCode(CountryCode.AT)\n    .bankCode(\"19043\")\n    .accountNumber(\"00234573201\")\n    .build();\n```\n\n##### Create an `Iban` object from a string\n\n```java\n// From a raw IBAN string\nIban iban = Iban.valueOf(\"DE89370400440532013000\");\n\n// From a formatted IBAN string\nIban iban = Iban.valueOf(\"DE89 3704 0044 0532 0130 00\", IbanFormat.Default);\n```\n\n##### Generate a random IBAN\n\n```java\n// For a specific country\nIban iban = Iban.random(CountryCode.AT);\n\n// For a random country\nIban iban = Iban.random();\n\n// Using the builder for more control\nIban iban = new Iban.Builder()\n    .countryCode(CountryCode.AT)\n    .bankCode(\"19043\")\n    .buildRandom();\n```\n\n##### Validate an IBAN\n\n```java\ntry {\n    // Validate a raw IBAN\n    IbanUtil.validate(\"AT611904300234573201\");\n    // Validate a formatted IBAN\n\n    IbanUtil.validate(\"DE89 3704 0044 0532 0130 00\", IbanFormat.Default);\n    System.out.println(\"IBAN is valid\");\n} catch (IbanFormatException | InvalidCheckDigitException | UnsupportedCountryException ex) {\n    System.err.println(\"IBAN is invalid: \" + ex.getMessage());\n}\n```\n\n##### Validate with country-specific rules (opt-in)\n\nBy default, only the standard IBAN checks are performed. You can optionally enable country-specific rules (e.g., national check digit) per call or via a reusable validator:\n\n```java\n// Per-call opt-in using a config\nValidationConfig config = ValidationConfig.builder()\n    .enableNationalCheckDigitValidation(true) // enable country rules\n    .build();\n\nboolean valid = IbanUtil.isValid(\"FR1420041010050500013M02606\", config);\n\n// Or throw on failure via the instance-based validator\nIbanValidator validator = IbanValidator.builder()\n    .enableCountryRules() // equivalent to enabling national check digit rules\n    .build();\n\nvalidator.validate(\"FR1420041010050500013M02606\");\n```\n\nConvenience helpers are also available when you always want country rules enabled:\n\n```java\nIbanUtil.validateWithCountryRules(\"FR1420041010050500013M02606\");\nboolean valid = IbanUtil.isValidWithCountryRules(\"FR1420041010050500013M02606\");\n```\n\nNotes:\n- Country-specific rules are opt-in and disabled by default to preserve existing behavior.\n- When enabled and a country rule fails, `IbanFormatException` with violation `COUNTRY_RULES_FAILED` is thrown by `IbanValidator.validate(...)`.\n\n##### Enable left-padding for generated IBANs\n\n```java\n// Left-pad account number, bank code, and branch code with zeros\nIban iban = new Iban.Builder()\n    .leftPadding(true)\n    .countryCode(CountryCode.DE)\n    .bankCode(\"66280099\")\n    .accountNumber(\"123456700\")\n    .build();\n\n// Change the default padding character from '0' to '1'\nIban ibanWithCustomPadding = new Iban.Builder()\n    .leftPadding(true)\n    .paddingCharacter('1')\n    .countryCode(CountryCode.DE)\n    .bankCode(\"66280099\")\n    .accountNumber(\"123456700\")\n    .build();\n```\n\n#### BIC Examples\n\n##### Create a `Bic` object from a string\n\n```java\nBic bic = Bic.valueOf(\"DEUTDEFF\");\n```\n\n##### Validate a BIC\n\n```java\ntry {\n    BicUtil.validate(\"DEUTDEFF500\");\n    System.out.println(\"BIC is valid\");\n} catch (BicFormatException ex) {\n    System.err.println(\"BIC is invalid: \" + ex.getMessage());\n}\n```\n\n-----\n\n### Compatibility\n\nThis library requires [Java 11](https://adoptium.net/temurin/releases/?version=11) or higher.\n\n-----\n\n### References\n\n - [ISO 13616 International Bank Account Number (IBAN)](http://en.wikipedia.org/wiki/ISO_13616)\n - [ISO 9362 Business Identifier Codes (BIC)](http://en.wikipedia.org/wiki/ISO_9362)\n - [ECB IBAN Registry](https://www.ecb.europa.eu/paym/retpaym/paymint/sepa/shared/pdf/iban_registry.pdf)\n\n-----\n\n### License\n\nCopyright 2015 Artur Mkrtchyan.\n\nLicensed under the Apache License, Version 2.0: [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farturmkrtchyan%2Fiban4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farturmkrtchyan%2Fiban4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farturmkrtchyan%2Fiban4j/lists"}