Fund Transfer Internal v3.1
Starting from 1 November 2023, this product will no longer receive support for development. Users can utilize SNAP BI version of the product here
What is Transfer to BRI Account?
In establishing a business, you will do tons of bank transfer transactions in your business activities, such as doing payrolls, business transactions, to administration payments.
BRI through its open banking initiative BRIAPI is offering a seamless solution to complete your business needs for bank transfer activities directly from your business dashboard. With API Transfer to BRI Account, you can do any financial activities with only a few clicks and no need to go the branch offices.
API Information
Title |
Fund Transfer Internal v3.1 |
---|---|
Version |
v3.1 |
URL Sandbox |
https://sandbox.partner.api.bri.co.id/v3.1/transfer/internal |
URL Production |
https://partner.api.bri.co.id/v3.1/transfer/internal |
Version Control
Doc Version |
API Version |
Date |
Link to document |
Description |
---|---|---|---|---|
v1.0 |
v3.1 |
1 July 2018 |
- |
Initial version |
v2.0 | v3.1 | 1 February 2019 | - | Structural and URL changes |
v3.0 |
v3.1 |
12 March 2021 |
Added explanation and Response Code |
|
v3.0 |
v3.1 |
12 April 2021 |
Sandbox URL changes |
|
v3.1 |
v3.1 |
9 July 2021 |
In this page |
Changes in the structure of the API and the response code |
Product Description
Product Overview
This API allows partners to transfer funds between two BRI accounts (internal transfer). The source account is the partner's account. Fund transfer API can only be done for checking accounts and savings accounts.
Flow API
Endpoint
A. Account Validation
Endpoint Description
This service is used to make inquiries of Debit and Credit account information that will be used to carry out Fund Transfer instructions. Accounts that can be inquired are Current Accounts that have been registered and Beneficiary Accounts.
General Information
HTTP Method |
POST |
---|---|
Path |
/accounts |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure
Key |
Value |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
Authorization |
Bearer {token} |
M |
|
Access Token |
|
BRI-Timestamp |
|
M |
|
Timestamp in ISO8601 format |
|
BRI-Signature |
|
M |
64 |
Signature |
|
Content-Type |
application/json |
M |
|
|
|
Request Structure
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
sourceAccount |
String |
M |
15 |
source accounts. If the length is less than 15, add the number 0 in front of it |
020601000003301 |
beneficiaryaccount |
String |
M |
15 |
Destination accounts. If the length is less than 15, add the number 0 in front of it |
020601000003333 |
Response Structure
Field | Data Type | Mandatory | Length | Description | Example |
---|---|---|---|---|---|
responseCode | String | M | 4 | Response Code | 0100 |
responseDescription | String | M | Response message description | Inquiry success | |
errorDescription | String | M | Error Description | Empty string for successful inquiry. Also, please see the list of error/response codes. | |
data | Array | M | Contains empty if the response error is "Data":{} | ||
sourceAccount | String | M | Source Account | 020601000255504 | |
sourceAccountName | String | M | Source Account Name | Jane Doe | |
sourceAccountStatus | String | M | Source Account Status | Rekening Aktif | |
sourceAccountBalance | String | M | Source Account Balance | 1000000.00 | |
beneficiaryAccount | String | M | Beneficiary Account | 020601000003333 | |
beneficiaryAccountName | String | M | Beneficiary Account Name | John Doe | |
beneficiaryAccountStatus | String | M | Source account registration status | Rekening Aktif |
Request & Response Payload Sample
Request :
curl --location --request POST 'https://sandbox.partner.api.bri.co.id/v3.1/transfer/internal/accounts' \ --header 'BRI-Timestamp: ((TIMESTAMP))' \ --header 'BRI-Signature: ((SIGNATURE))' \ --header 'Content-Type: application/json' \ --data-raw '{ "sourceAccount": "020601000255504", "beneficiaryAccount": "0206010060313061" }'
Normal Response :
{ "responseCode": "0100", "responseDescription": "Inquiry success", "errorDescription": "", "data": { "sourceAccount": "020601000255504", "sourceAccountName": "Jane Doe", "sourceAccountStatus": "Rekening Aktif", "sourceAccountBalance": "8631682596.05", "beneficiaryAccount": "020601006031306", "beneficiaryAccountName": "John Doe", "beneficiaryAccountStatus": "Rekening Aktif" } }
Error Response :
{ "responseCode": "0101", "responseDescription": "Inquiry failed", "errorDescription": "InqRekAsal: Nomor Rekening Tidak Dikenal & InqRekTujuan: 0000020601006031306", "data": { "sourceAccount": "020601023500255504", "beneficiaryAccount": "020601006031306" } }
List of Error/Response Code
Response Code |
Response Description |
Error Description |
Status |
Description |
---|---|---|---|---|
0100 |
Inquiry Success |
- |
Success |
Inquiry was successful, data was obtained. |
0101 |
Inquiry failed |
InqRekAsal: <Error Detail> & InqRekTujuan: <Error Detail> |
Failed |
|
0102 |
Inquiry timeout |
- |
Failed |
|
0103 |
Inquiry can not be processed |
Source account/beneficiary account must be a number |
Failed |
|
0104 |
Inquiry can not be processed |
Your IP & key has not been registerd |
Failed |
|
0105 |
Inquiry can not be processed |
Inquiry data must not be empty |
Failed |
|
0106 |
Inquiry can not be processed |
Source account/beneficiary account must not be empty |
Failed |
|
0109 |
Inquiry can not be processed |
Member ID/participant account not found |
Failed |
|
0110 |
Inquiry can not be processed |
Branch code/source account not found |
Failed |
|
0111 |
Inquiry can not be processed |
Source account/beneficiary account is not registered |
Failed |
|
0112 |
Inquiry can not be processed |
Reference number is not registered |
Failed |
|
81 |
Throw an exception |
*any error description |
Failed |
Unhandled error |
0007 |
Inquiry can not be processed |
Username (institution code) must not be empty |
Failed |
Username, password and source account used will be configured in BRIAPI. If you get this error, please contact our team via email. |
0008 |
Inquiry can not be processed |
Invalid username (institution code) or password (institution key) |
Failed |
|
0009 |
Inquiry can not be processed |
Password (institution key) must not be empty |
Failed |
|
0010 |
Inquiry can not be processed |
Wrong password (institution key). Please enter your correct password |
Failed |
|
0011 |
Inquiry can not be processed |
Accounts not registered in institutional accounts |
Failed |
|
0012 |
Inquiry can not be processed |
Wrong password (institution key). Please enter your correct password |
Failed |
Any error response not listed in the BRIAPI response list is considered pending and requires further investigation.
Notes: Please see also the "Common Errors" page for a list of common errors in BRIAPI.
B. Transfer
Endpoint Description
This endpoint is used to request funds transfer between two BRI accounts. However, there is a limit for total transactions and daily transactions that is set by BRI.
General Information
HTTP Method |
POST |
---|---|
Path |
- |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure
Key |
Value |
Mandatory |
Length |
Description |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
Access Token |
|
BRI-Timestamp |
M |
Timestamp in ISO8601 format |
||
BRI-Signature |
M |
64 |
Signature |
|
Content-Type |
application/json |
M |
Request Structure
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
noReferral |
String |
M |
20 |
Unique reference number |
20210202126111111111 |
source |
String |
M |
15 |
Source Account |
020601000255504 |
beneficiary |
String |
M |
15 |
Beneficiary Account |
020601006031306 |
amount |
String |
M |
15 |
Nominal transfer Format ##.## |
10000.00 |
feeType |
String |
M |
|
OUR
Fee charged to sender (default) (default) BEN Fee charged to recipient SHA|1000 The fee is divided between the sender and the recipient, with the sender being charged IDR 1000 and the recipient being charged the rest |
OUR |
transaction |
String |
M |
19 |
Transaction date and time, format: dd-MM-yyyy HH:mm:ss |
09-03-2021 15:08:00 |
remark |
String |
M |
40 |
Transaction mark. For transaction identification purposes, please include a unique value in the remark. It will appear on the checking account. |
REMARK TEST 20210202126111111111 |
Response Structure
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
responseCode |
String |
M |
|
Response code |
0200 |
response |
String |
M |
|
Response description |
Payment Success |
error |
String |
M |
|
Error description |
Reference number is already used |
journalSeq |
String |
M |
|
Journal sequence |
8020001 |
Request & Response Payload Sample
Request :
curl --location --request POST 'https://sandbox.partner.api.bri.co.id/v3.1/transfer/internal' \ --header 'BRI-Timestamp: ((TIMESTAMP))' \ --header 'BRI-Signature: ((SIGNATURE))' \ --header 'Content-Type: application/json' \ --data-raw '{ "noReferral": "20210202126111111111", "sourceAccount": "020601000255504", "beneficiaryAccount": "020601006031306", "amount": "10000.00", "feeType": "OUR", "transactionDateTime": "09-03-2021 15:08:00", "remark": "REMARK TEST" }'
Normal Response :
{ "responseCode": "0200", "responseDescription": "Payment Success", "errorDescription": "", "journalSeq": "8020001" }
Error Response:
{ "responseCode": "0299", "responseDescription": "Payment Failed", "errorDescription": "Reference number is not valid" }
List of Error/Response Code
Response Code | Response Description | Error Description | Status | Description |
---|---|---|---|---|
0200 | Payment Success | Successful transaction is indicated by this response code | ||
0401 | Payment Failed | invalid source account or beneficiary account format | Failed | |
0402 | Payment Failed | field source account or beneficiary account is mandatory | Failed | |
0403 | Payment Failed | Account not active | Failed | |
0404 | Payment Failed | Account not found | Failed | |
0411 | Payment Failed | Insufficient Balance | Failed | |
0412 | Payment Failed | Transaction is not allowed | Failed | |
0413 | Payment Failed | Request Failed | Failed | |
0414 | Payment Failed | Payment Failed | Failed | |
0415 | Payment Failed | Invalid Request Format | Failed | |
0202 | Payment can not be processed | Payment Timeout | Pending | please check your account statement or use check status to identify the transaction status |
0288 | Payment can not be processed | Transaction is being processed | Pending | please check your account statement or use check status to identify the transaction status |
0298 | Payment Failed | Remark is not valid | Failed | |
0299 | Payment Failed | Reference number is not valid | Failed | |
0902 | Unexpected Error | Unexpected Error | Pending | please check your account statement or use check status to identify the transaction status |
Any error response not listed in the BRIAPI response list is considered pending and requires further investigation.
Notes: Please see also the "Common Errors" page for a list of common errors in BRIAPI.
C. Check Status
notes: check status service can only be executed outside of EOD (End Of Day) period. for every transfer transactions made in EOD period that resulted in timeout or pending response, account check can be done by 8 AM West Indonesian Time.
Endpoint Description
This endpoint is used to check the status of a previously made transaction. Use this if you did not receive a clear response or encountered an error, such as a timeout, during the transaction. It is important to note that the response from this endpoint does not represent the final status of the transfer process. After obtaining the "internalTransferStatus" and "internalTransferErrorMessage" in the response body, please refer to the list of error codes in the Transfer endpoint to identify whether your transaction was successful, failed, or is pending. As a more reliable alternative, partners can use the Check Bank Statement Status endpoint.
General Information
HTTP Method | POST |
---|---|
Path | /check |
Tipe Format | JSON |
Authentication | OAuth 2.0 with Access Token |
Header Structure
Key | Value | Mandatory | Length | Description | Example |
---|---|---|---|---|---|
Authorization | Bearer {token} | M | Access Token | ||
BRI-Timestamp | M | Timestamp in ISO8601 format | |||
BRI-Signature | M | 64 | Signature | ||
Content-Type | application/json | M |
Request Structure
Field | Data Type | Mandatory | Length | Decription | Example |
---|---|---|---|---|---|
noReferral | String | M | 20 | The unique reference number used in the transaction. | 20210202126111111111 |
Response Structure
Field | Data Type | Mandatory | Length | Description | Example |
---|---|---|---|---|---|
responseCode | String | M | 4 | response code | 0300 |
responseDescription | String | M | response description | Status check success | |
errorDescription | String | Error Description | Empty string for successful inquiry. Otherwise, please refer to the list of error/response codes. | ||
data | Array | M | It contains information about the response from the transaction. | Empty for error response 'Data':{} | |
noReferral | String | M | The unique reference number used in the transaction. | 20210202126111111111 | |
journalSeq | String | M | Journal sequence | 8020001 | |
internalTransferStatus | String | M | Response/Error code from the transfer process. Please refer to the error code list in the Transfer endpoint for a more detailed explanation. | 0412 | |
internalTransferErrorMessage | String | M | Response/Error Description from the transfer process. Please refer to the error code list in the Transfer endpoint for a more detailed explanation. | Transaction is not allowed |
Request & Response Payload Sample
Request :
curl -X POST 'https://sandbox.partner.api.bri.co.id/v3.1/transfer/internal/check' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -H 'BRI-Timestamp: {{TIMESTAMP}}' \ -H 'Content-Type: application/json' \ -d '{ "noReferral": "20180212002" }'
Normal Response :
{ "responseCode":"0300", "responseDescription":"Cek Status Sukses", "errorDescription":"", "data": { "noReferral":"20210202126111111111" "journalSeq":"8020001", "internalTransferStatus":"0200", "internalTransferErrorMessage":"", } }
Error Response:
{ "responseCode":"0307", "responseDescription":"Reference number not found", "errorDescription":"", "data":{} }
List of Error/Response Code
Response Code | Response Description | Error Description | Status | Description |
---|---|---|---|---|
0300 | Status check success | Success | Status check successful, and the data has been received successfully. | |
0304 | Status check data must not be empty | Failed | ||
0307 | Reference number not found | Pending | If you receive this response code, you need to check the settlement file or bank statement to validate the reference number. | |
0308 | Status check failed | Failed | Please repeat the status check. | |
0388 | Transaction status is pending, please check again tomorrow at 08:00AM WIB | Failed | Please repeat the status check. | |
0399 | There was an error, please consult with your administrator | Failed | ||
0299 | Payment Failed | Reference number is not valid | Failed | |
0601 | - | Invalid token | Failed | |
0602 | - | Invalid signature | Failed | |
0902 | Unexpected Error | Unexpected Error | Pending | Please check the bank statement to view the transfer status. |
Any error response not listed in the BRIAPI response list is considered pending and requires further investigation.
Notes: Please see also the "Common Errors" page for a list of common errors in BRIAPI.
D. Check Bank Statement Status
notes: check status service can only be executed outside of EOD (End Of Day) period. for every transfer transactions made in EOD period that resulted in timeout or pending response, account check can be done by 8 AM West Indonesian Time.
Endpoint Description
This endpoint is used to determine the status of transfer transactions between BRI accounts previously carried out based on the results of checking the checking account. Account checking is available in 15 minutes after the transaction was made.
General Information
HTTP Method | POST |
---|---|
Path | /check-rekening |
Tipe Format | JSON |
Authentication | OAuth 2.0 with Access Token |
Header Structure
Key | Value | Mandatory | Length | Description | Example |
---|---|---|---|---|---|
Authorization | Bearer {token} | M | Access Token | ||
BRI-Timestamp | M | Timestamp in ISO8601 format | |||
BRI-Signature | M | 64 | Signature | ||
Content-Type | application/json | M |
Request Structure
Field | Data Type | Mandatory | Length | Decription | Example |
---|---|---|---|---|---|
noReferral | String | M | 20 | Unique reference number | ABCD2021033112369 |
transactionDate | String | M | 10 | Transaction date | 01-04-2021 |
Response Structure
Field | Data Type | Mandatory | Length | Description | Example |
---|---|---|---|---|---|
responseCode | String | M | 4 | response code | 0300 |
responseDescription | String | M | response description | Status check success | |
errorDescription | String | Error Description | Empty string for successful inquiry. Also, please see the list of error/response codes. | ||
data | Array | M | contains response information from transactions | Contains empty if the response error is "Data":{} | |
noReferral | String | M | Unique reference number | ABCD2021033112369 | |
journalSeq | String | M | Journal sequence | 7001302 | |
amount | String | M | Nominal transfer Format ##.## | 1000.00 | |
remark | String | M | Transaction mark. For transaction identification purposes. | REMARK TEST BRIAPI | |
internalTransfer Status |
String | M | 4 | Response/Code of the transfer process. Please see the list in the List of Transfer Status section | 0200 |
internalTransfer Description |
String | M | Response/Code of the transfer process. Please see the list in the List of Transfer Status section | Payment success |
Request & Response Payload Sample
Request :
curl --location --request POST ''\''https://sandbox.partner.api.bri.co.id/v3.1/transfer/internal/check-rekening' \ --header 'BRI-Timestamp: ((TIMESTAMP))' \ --header 'BRI-Signature: ((SIGNATURE))' \ --header 'Content-Type: application/json' \ --data-raw '{ "noReferral": "ABCD2021033112369", "transactionDate": "01-04-2021" }'
Normal Response :
{ "responseCode": "0300", "responseDescription": "Status check success", "data": { "noReferral": "ABCD2021033112345", "journalSeq": "7021301", "amount": "10000.00", "remark": "REMARK TEST BRIAPI", "internalTransferStatus": "0200", "internalTransferDescription": "Payment success" } }
Error Response:
{ "responseCode": "0212", "responseDescription": "Request can not be processed", "errorDescription": "Invalid format transaction datetime", "data": {} }
List of Transfer Status
Use this parameter to determine whether the transactions made success or failure.
Code (internalTransferStatus) | Response Description (internalTransferDescription) | Status | Description |
---|---|---|---|
0200 | Payment success | Success | Successful transaction |
0201 | Payment failed | Failed | Transaction Failed |
0388 | Transaction status is pending, please check again tomorrow at 08:00AM WIB | Pending | Please re-hit the endpoint check status |
List of Error/Response Code
Response Code | Response Description | Error Description | Status | Description |
---|---|---|---|---|
0300 | Status check success | Success | Check Status successfull and the data was received successfully. See the internalTransferStatus and internalTransferDescription fields in the table above to determine whether the transaction was successful or failed. | |
0307 | Reference number not found | Failed | ||
0388 | Transaction status is pending, please check again tomorrow at 08:00AM WIB | Pending | Please do hit again endpoint check status. If you get this error at End Of Day, please repeat the next day | |
0210 | Request can not be processed | Reference number must not be empty | Failed | Reference number must not be empty |
0212 | Request can not be processed | Invalid format transaction datetime | Failed | Invalid format transaction datetime |
Any error response not listed in the BRIAPI response list is considered pending and requires further investigation.
Notes: Please see also the "Common Errors" page for a list of common errors in BRIAPI.
E. Reconciliation
As a prerequisite for partners to be able to use the Internal Transfer API production environment, partners are required to carry out the reconciliation process using the Account Statement API or using the mt940 file provided on D+1 . How to use these reconciliation methods can be seen on the following page [Link].
F. Additional Information
Partners must also see common BRIAPI errors that apply to all BRIAPI products, and handle errors according to the description provided.