Bank Account Validation
Match account numbers and holder names across 130+ Indonesian banks.
Base URL
https://use.api.co.id
Call GET /validation/bank with the bank_code, account_number, and account_name query parameters plus the x-api-co-id header. The response contains is_valid, a name-match score, and the masked account holder name (only if valid). The full bank list is available at GET /validation/bank/available.
Bank code format
Bank codes can be sent in two formats; both are processed the same way:
- Short format:
mandiri,bca,bri(automatically mapped to the full format) - Full format:
bank_mandiri,bank_bca,bank_bri(used as is)
Supported banks
130+ Indonesian banks, including:
| Bank | Code |
|---|---|
| BCA (Bank Central Asia) | bca or bank_bca |
| BRI (Bank Rakyat Indonesia) | bri or bank_bri |
| BNI (Bank Negara Indonesia) | bni or bank_bni |
| BSI (Bank Syariah Indonesia) | bsi or bank_bsm |
| Mandiri (Bank Mandiri) | mandiri or bank_mandiri |
| SeaBank (SeaBank Indonesia) | seabank or bank_kesejahteraan_ekonomi |
Use the Get Available Banks endpoint (GET /validation/bank/available) to see the complete list.
Response fields
| Field | Description |
|---|---|
is_valid | Boolean, true if account validation passed |
score | Float 0.0–10.0, name match confidence |
name | Masked holder name: first 3 characters + **** (only if valid, null if invalid) |
message | Status message describing the validation result |
note | Additional note (empty string if valid, "Name was not returned" if validation failed) |
How it works
- Real-time account verification.
- Fuzzy name matching with confidence scoring.
- Automatic retry with fallback.
- Name masking for privacy protection.
Validate Bank Account
Validate a bank account number and account holder name.
### Example Request
``bash curl --location 'http://localhost:3003/validation/bank?bank_code=bank_bri&account_number=110601003647539&account_name=John%20Doe' \ --header 'x-api-co-id: your-api-key'
### Query Parameters
- bank_code (required): Bank code identifier
- Can be short format: mandiri, bca, bri, bni, bsi, seabank
- Or full format: bank_mandiri, bank_bca, bank_bri, bank_bni, bank_bsm, bank_kesejahteraan_ekonomi
- Use GET /validation/bank/available to see all 130+ supported banks
- account_number (required): Bank account number to validate - account_name (required): Account holder name to match against bank records
### Response Returns validation result with: - is_valid: Boolean indicating if validation passed - score: Name matching score (0.0 to 10.0, >= 7.0 is valid) - name: Masked account name showing first 3 chars + ** (only if valid, null if invalid) - message: Status message - note**: Additional note (empty if valid, "Name was not returned on invalid validation" if failed)
### Validation Logic 1. Validates bank account number and account holder name 2. Returns match score (0.0 to 10.0) indicating validation confidence 3. Score >= 7.0 indicates successful validation 4. Valid names are masked for privacy (e.g., "Rif** Eln**")
| Name | Type | Description |
|---|---|---|
bank_codeRequired | string | Bank code - can be short format (mandiri, bca, bri) or full format (bank_mandiri, bank_bca, bank_bri). Use GET /validation/bank/available to see all supported banks. Example: bank_bri |
account_numberRequired | string | Bank account number Example: 110601003647539 |
account_nameRequired | string | Account holder name to validate Example: John Doe |
| Name | Type | Description |
|---|---|---|
is_successOptional | boolean | Example: true |
messageOptional | string | Example: Success |
dataOptional | object | |
data.is_validOptional | boolean | Boolean indicating if account validation passed Example: true |
data.scoreOptional | number | Name matching score (0.0 to 10.0, >= 7.0 is valid) Example: 8.5 |
data.nameOptional | string | Masked account name showing first 3 chars + **** (only if valid, null if invalid) Example: Rif**** Eln**** |
data.messageOptional | string | Status message describing the validation result Example: Validation successful |
data.noteOptional | string | Additional note (empty string if valid, "Name was not returned" if validation failed) Example: |
curl -X GET "https://use.api.co.id/validation/bank?bank_code=bank_bri&account_number=110601003647539&account_name=John%20Doe" \ -H "x-api-co-id: $API_CO_ID_KEY"{ "is_success": true, "message": "Success", "data": { "is_valid": true, "score": 8.5, "name": "Rif**** Eln****", "message": "Validation successful", "note": "" }}Get Available Banks
Get the complete list of all available banks supported by the validation API.
### Response Returns a list of all supported banks with: - banks: Array of bank objects - bank_name: Full name of the bank (e.g., "MANDIRI", "BCA", "BRI") - bank_code: Bank code to use in validation requests (e.g., "bank_mandiri", "bank_bca", "bank_bri") - total: Total number of supported banks (130+)
### Usage Use this endpoint to: - Discover all supported banks - Get the correct bank code for validation requests - Build dynamic bank selection dropdowns in your application
### Bank Code Format
You can use either:
- Short format: Remove bank_ prefix (e.g., use mandiri instead of bank_mandiri)
- Full format: Use the exact bank_code from the response
Both formats work the same way in validation requests.
| Name | Type | Description |
|---|---|---|
is_successOptional | boolean | Example: true |
messageOptional | string | Example: Success |
dataOptional | object | |
data.banksOptional | object[] | |
data.banks[].bank_nameOptional | string | Example: MANDIRI |
data.banks[].bank_codeOptional | string | Example: bank_mandiri |
data.totalOptional | integer | Total number of supported banks Example: 130 |
curl -X GET "https://use.api.co.id/validation/bank/available" \ -H "x-api-co-id: $API_CO_ID_KEY"{ "is_success": true, "message": "Success", "data": { "banks": [ { "bank_name": "MANDIRI", "bank_code": "bank_mandiri" }, { "bank_name": "BCA", "bank_code": "bank_bca" }, { "bank_name": "BRI", "bank_code": "bank_bri" }, { "bank_name": "BNI", "bank_code": "bank_bni" }, { "bank_name": "BSI (BANK SYARIAH INDONESIA)", "bank_code": "bank_bsm" }, { "bank_name": "SEABANK/BANK BKE", "bank_code": "bank_kesejahteraan_ekonomi" } ], "total": 130 }}Use case
Payment gateway
Verify bank accounts for payment gateway flows.
E-wallet registration
Validate the user's bank account during e-wallet registration.
Financial service onboarding
Check bank accounts during financial service onboarding.
KYC compliance
Match the account number and holder name for KYC (Know Your Customer) compliance.
Account ownership verification
Confirm the account matches the given holder name.
Fraud prevention
Use account validation results to help prevent fraud.