SNAP authentication, BI-FAST and Regular transfers, and transaction status inquiries.
Authentication
Obtain a SNAP B2B access token for transfer and status requests.
POST /v3/payments/sc/snap/access-token
Request headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | application/json |
X-CLIENT-KEY | Yes | Client ID from Configuration → API Credentials. |
X-TIMESTAMP | Yes | ISO 8601 timestamp with a timezone. |
X-SIGNATURE | Yes | RSA-SHA256 signature of Client ID and timestamp. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
grant_type | string | Yes | Must be client_credentials. |
Request and response
Request · cURL
Code
Response · HTTP 200
Code
Response fields
| Field | Type | Description |
|---|---|---|
responseCode | string | 2007300 for a successful token request. |
responseMessage | string | API response description. |
accessToken | string | Token for transfer and status requests. |
tokenType | string | Bearer |
expiresIn | string | Token validity in seconds: 900. |
Token validity
Tokens are reusable for 900 seconds. See Setup Client Key and Signature for the complete SNAP access token rules and active-token limit.
For key registration and signing requirements, see Setup Client Key and Signature. For limit handling, see Error Handling.
Headers
X-CLIENT-KEYClient ID from Configuration → API Credentials.
X-TIMESTAMPISO 8601 request timestamp with timezone.
X-SIGNATUREBase64 RSA-SHA256 signature. See the setup guide.
Authentication › Responses
Successful
responseCoderesponseMessageaccessTokentokenTypeexpiresInSNAP BI-FAST
Submit a BI-FAST transfer with beneficiary and sender information.
POST /v2/payments/disbursements/snap/bifast-transfer
Submit a BI-FAST transfer. A successful submission returns Processing, not a completed transfer.
Request headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | application/json |
Authorization | Yes | Bearer followed by your SNAP access token. |
X-CLIENT-KEY | Yes | Client ID from Configuration → API Credentials. |
X-TIMESTAMP | Yes | ISO 8601 timestamp with a timezone. |
X-SIGNATURE | Yes | Request signature using /snap/bifast-transfer. |
X-REFERENCE-ID | Yes | A new UUID identifying this request. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
partnerReferenceNo | string | Yes | Your unique transfer reference. |
transferType | string | Yes | BI_FAST |
amount | object | Yes | Transfer amount. |
amount.value | string | Yes | Amount with exactly two decimal places. |
amount.currency | string | Yes | IDR |
beneficiaryAccountNo | string | Yes | Beneficiary account number; preserve leading zeros. |
beneficiaryBankCode | string | Yes | Brick bank short code. |
beneficiaryAccountName | string | Yes | Beneficiary account name. |
beneficiaryEmail | string | No | Beneficiary email; an empty string is accepted. |
remark | string | Yes | Transfer remark. |
sender | object | Yes | Sender information. |
sender.name | string | Yes | Sender name. |
sender.identityType | string | Yes | Sender identity type. |
sender.identityNumber | string | Yes | Sender identity number. |
sender.countryCode | string | Yes | Country code. |
sender.provinceCode | string | Yes | Province code. |
sender.cityCode | string | Yes | City code. |
sender.jobCode | string | Yes | Occupation code. |
sender.address | string | Yes | Sender address. |
sender.placeOfBirth | string | Yes | Place of birth. |
sender.dateOfBirth | string | Yes | Date of birth in YYYY-MM-DD format. |
For sender location and occupation codes, see Country, Province, City, and Job Codes.
Submit a transfer
Request · cURL
Code
Response · HTTP 200
Code
Response fields
| Field | Type | Description |
|---|---|---|
responseCode | string | 2000200 for successful submission. |
responseMessage | string | API result description. |
referenceNo | string | Brick transaction reference. |
partnerReferenceNo | string | Your transfer reference. |
transferType | string | BI_FAST |
amount | object | Transfer amount and currency. |
beneficiaryAccountNo | string | Beneficiary account number. |
beneficiaryBankCode | string | Beneficiary bank code. |
beneficiaryAccountName | string | Beneficiary account name. |
latestTransactionStatus | string | 03 upon acceptance. |
transactionStatusDesc | string | Processing upon acceptance. |
transactionDate | string | Transaction timestamp. |
Test scenarios
Use these example bank and account details for the corresponding configured test scenarios.
| Scenario | Bank | Account number | Account name | Amount | Required setup |
|---|---|---|---|---|---|
| Completed | BCA | 010800041187 | PROD ONLY | "11000.00" | Arrange the completed simulation with Brick. |
| Processing | BCA | 010800041187 | PROD ONLY | "11000.00" | Arrange the processing simulation with Brick. |
| Failed | BCA | 010800041187 | PROD ONLY | "11000.00" | Arrange the failed simulation with Brick. |
BI-FAST simulation setup All three scenarios use the same baseline details. The amount 11000.00 does not select the outcome. Arrange the corresponding simulation with Brick; do not reuse Regular scenario rules for BI-FAST.
Scenario requests and responses
The following examples show each transfer request, accepted response, and subsequent inquiry. Use Check Status with serviceCode: "02".
Acceptance is not completion Even a transfer that later completes or fails is initially accepted as Processing.
BI-FAST — completed
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Response · HTTP 200
Code
BI-FAST — processing
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Response · HTTP 200
Code
BI-FAST — failed
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Illustrative failed response · HTTP 200
Code
This transfer has failed. Check errorCode, errorDetailCode, and failureMessage for the failure reason.
Look up by partner reference
Alternative request · cURL
Code
Supply only one lookup reference. A successful response includes both references.
For recovery guidance, see Error Handling.
Headers
X-CLIENT-KEYClient ID from Configuration → API Credentials.
X-TIMESTAMPISO 8601 request timestamp with timezone.
X-SIGNATUREBase64 RSA-SHA256 signature. See the setup guide.
X-REFERENCE-IDA new UUID for each request.
SNAP BI-FAST › Request Body
partnerReferenceNotransferTypebeneficiaryAccountNobeneficiaryBankCodebeneficiaryAccountNameremarkbeneficiaryEmailSNAP BI-FAST › Responses
Successful
responseCoderesponseMessagereferenceNopartnerReferenceNotransferTypebeneficiaryAccountNobeneficiaryBankCodebeneficiaryAccountNamelatestTransactionStatustransactionStatusDesctransactionDateSNAP Regular
Submit a Regular transfer with beneficiary information.
POST /v2/payments/disbursements/snap/regular-transfer
Submit a Regular transfer. A successful submission returns Processing, not a completed transfer.
Request headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | application/json |
Authorization | Yes | Bearer followed by your SNAP access token. |
X-CLIENT-KEY | Yes | Client ID from Configuration → API Credentials. |
X-TIMESTAMP | Yes | ISO 8601 timestamp with a timezone. |
X-SIGNATURE | Yes | Request signature using /snap/regular-transfer. |
X-REFERENCE-ID | Yes | A new UUID identifying this request. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
partnerReferenceNo | string | Yes | Your unique transfer reference. |
transferType | string | Yes | REGULAR |
amount | object | Yes | Transfer amount. |
amount.value | string | Yes | Amount with exactly two decimal places. |
amount.currency | string | Yes | IDR |
beneficiaryAccountNo | string | Yes | Beneficiary account number; preserve leading zeros. |
beneficiaryBankCode | string | Yes | Brick bank short code. |
beneficiaryAccountName | string | Yes | Beneficiary account name. |
beneficiaryEmail | string | No | Beneficiary email; an empty string is accepted. |
remark | string | Yes | Transfer remark. |
Submit a transfer
Request · cURL
Code
Response · HTTP 200
Code
Response fields
| Field | Type | Description |
|---|---|---|
responseCode | string | 2000100 for successful submission. |
responseMessage | string | API result description. |
referenceNo | string | Brick transaction reference. |
partnerReferenceNo | string | Your transfer reference. |
transferType | string | REGULAR |
amount | object | Transfer amount and currency. |
beneficiaryAccountNo | string | Beneficiary account number. |
beneficiaryBankCode | string | Beneficiary bank code. |
beneficiaryAccountName | string | Beneficiary account name. |
latestTransactionStatus | string | 03 upon acceptance. |
transactionStatusDesc | string | Processing upon acceptance. |
transactionDate | string | Transaction timestamp. |
Test scenarios
Use these example bank and account details for the corresponding configured test scenarios.
| Scenario | Bank | Account number | Account name | Amount |
|---|---|---|---|---|
| Completed | MANDIRI | 112233445 | PROD ONLY | "29999.00" |
| Processing | BRI | 112233445 | PROD ONLY | "10000.00" |
| Failed | MANDIRI | 112233445 | PROD ONLY | "39999.00" |
These are simulation details, not instructions for live transfers. Confirm that the simulation is enabled for your testing account.
Scenario requests and responses
The following examples show each transfer request, accepted response, and subsequent inquiry. Use Check Status with serviceCode: "01".
Acceptance is not completion Even a transfer that later completes or fails is initially accepted as Processing.
Regular — completed
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Response · HTTP 200
Code
Regular — processing
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Response · HTTP 200
Code
Regular — failed
Transfer request · cURL
Code
Accepted response · HTTP 200
Code
Status request · cURL
Code
Illustrative failed response · HTTP 200
Code
This transfer has failed. Check errorCode, errorDetailCode, and failureMessage for the failure reason.
Look up by partner reference
Alternative request · cURL
Code
Supply only one lookup reference. A successful response includes both references.
For recovery guidance, see Error Handling.
Headers
X-CLIENT-KEYClient ID from Configuration → API Credentials.
X-TIMESTAMPISO 8601 request timestamp with timezone.
X-SIGNATUREBase64 RSA-SHA256 signature. See the setup guide.
X-REFERENCE-IDA new UUID for each request.
SNAP Regular › Request Body
partnerReferenceNotransferTypebeneficiaryAccountNobeneficiaryBankCodebeneficiaryAccountNameremarkbeneficiaryEmailSNAP Regular › Responses
Successful
responseCoderesponseMessagereferenceNopartnerReferenceNotransferTypebeneficiaryAccountNobeneficiaryBankCodebeneficiaryAccountNamelatestTransactionStatustransactionStatusDesctransactionDateCheck Status
Retrieve a transfer’s latest status using its Brick or partner reference.
POST /v2/payments/disbursements/snap/status
Request headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | application/json |
Authorization | Yes | Bearer followed by your SNAP access token. |
X-CLIENT-KEY | Yes | Client ID from Configuration → API Credentials. |
X-TIMESTAMP | Yes | ISO 8601 timestamp with a timezone. |
X-SIGNATURE | Yes | Request signature using /snap/status. |
X-REFERENCE-ID | Yes | A new UUID identifying this request. |
Request body
Send one lookup reference, not both. Successful responses contain both original references for the same transaction.
| Field | Type | Required | Description |
|---|---|---|---|
originalReferenceNo | string | Conditional | Brick transaction reference. Supply this or originalPartnerReferenceNo, not both. |
originalPartnerReferenceNo | string | Conditional | Your original transfer reference. Supply this or originalReferenceNo, not both. |
serviceCode | string | Yes | 01 for Regular; 02 for BI-FAST. |
Request and response examples
Regular — completed
Status request · cURL
Code
Response · HTTP 200
Code
Regular — processing
Status request · cURL
Code
Response · HTTP 200
Code
Regular — failed
Status request · cURL
Code
Illustrative failed response · HTTP 200
Code
This transfer has failed. Check errorCode, errorDetailCode, and failureMessage for the failure reason.
BI-FAST — completed
Status request · cURL
Code
Response · HTTP 200
Code
BI-FAST — processing
Status request · cURL
Code
Response · HTTP 200
Code
BI-FAST — failed
Status request · cURL
Code
Illustrative failed response · HTTP 200
Code
This transfer has failed. Check errorCode, errorDetailCode, and failureMessage for the failure reason.
Look up by partner reference
Alternative request · cURL
Code
Supply only one lookup reference. A successful response includes both references.
Response fields
| Field | Type | Description |
|---|---|---|
responseCode | string | 2000300 for a successful inquiry. |
responseMessage | string | Inquiry result description. |
originalReferenceNo | string | Brick transaction reference. |
originalPartnerReferenceNo | string | Your original transfer reference. |
serviceCode | string | 01 for Regular; 02 for BI-FAST. |
latestTransactionStatus | string | 00, 03, or 06. |
transactionStatusDesc | string | Success, Processing, or Failed. |
errorCode | string | Transaction error code, when returned. |
errorDetailCode | string | Detailed transaction error code, when returned. |
failureMessage | string | Transaction failure explanation, when returned. |
category | string | Failed in failed-transaction responses. |
Transaction status values
| State | latestTransactionStatus | transactionStatusDesc | Meaning |
|---|---|---|---|
| Completed | 00 | Success | The transfer completed successfully. |
| Processing | 03 | Processing | The transfer has not reached a final outcome. |
| Failed | 06 | Failed | The transfer reached a final failed outcome. |
Inquiry rate limit
For the same authenticated client and the same transaction:
- A maximum of 5 Check Status requests is allowed within a 30-second window.
- The 6th and subsequent requests within that window return HTTP
429withresponseCode: "4290300". - The limit applies only to the affected transaction. Other transactions under the same authenticated client remain unaffected and have their own inquiry limits.
- Looking up the same transaction using
originalReferenceNoororiginalPartnerReferenceNoshares the same limit.
Wait for the affected transaction’s rate-limit window to reset before trying again.
See Error Handling for recovery guidance.
Headers
X-CLIENT-KEYClient ID from Configuration → API Credentials.
X-TIMESTAMPISO 8601 request timestamp with timezone.
X-SIGNATUREBase64 RSA-SHA256 signature. See the setup guide.
X-REFERENCE-IDA new UUID for each request.
Check Status › Request Body
serviceCodeoriginalReferenceNooriginalPartnerReferenceNoDecision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: originalReferenceNo | |
| type = object · requires: originalPartnerReferenceNo |
originalReferenceNoserviceCodeoriginalPartnerReferenceNoCheck Status › Responses
Inquiry succeeded; inspect the transaction status separately.
responseCoderesponseMessageoriginalReferenceNooriginalPartnerReferenceNoserviceCodelatestTransactionStatustransactionStatusDescerrorCodeerrorDetailCodefailureMessagecategory
