Fund Transfer
Fund Transfer
API ini memungkinkan Anda untuk melakukan transfer dana antara dua rekening BRI. Akun sumber dana harus akun perusahaan Anda. Transfer dana dapat dilakukan antara beberapa jenis rekening yaitu rekening giro (BRI) atau rekening tabungan (BRI)
Validasi Akun
This endpoint is used to validate the source and destination accounts that will be used in the transfer process. Typically, this API call is used before making a funds transfer request to ensure the account is correct.
curl -X GET 'https://partner.api.bri.co.id/sandbox/v3/ transfer/internal/accounts?sourceAccount=888801000003301&beneficiaryAccount=888801000157508' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Signature: {{SIGNATURE}}' \ -H 'BRI-Timestamp: {{TIMESTAMP}}'
<?php $NoRek = "888801000157508"; $secret = "YOUR SECRET KEY"; $timestamp = gmdate("Y-m-d\TH:i:s.000\Z"); $token = $accesstoken; $path = "/sandbox/v3/transfer/internal/accounts; $verb = "GET"; $body=""; $base64sign = generateSignature($path,$verb,$token,$timestamp,$body,$secret); $urlGet ="https://partner.api.bri.co.id/sandbox/v3/transfer/internal/accounts?sourceAccount=".$NoRek; $chGet = curl_init(); curl_setopt($chGet,CURLOPT_URL,$urlGet); $request_headers = array( "Authorization:Bearer " . $token, "BRI-Timestamp:" . $timestamp, "BRI-Signature:" . $base64sign ); curl_setopt($chGet, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($chGet, CURLINFO_HEADER_OUT, true); curl_setopt($chGet, CURLOPT_RETURNTRANSFER, true); $resultGet = curl_exec($chGet); $httpCodeGet = curl_getinfo($chGet, CURLINFO_HTTP_CODE); curl_close($chGet); $jsonGet = json_decode($resultGet, true); echo "<br/> <br/>"; echo "Response Get : ".$resultGet; ?>
Sample Response
{
"responseCode": "0100",
"responseDescription": "Inquiry Success",
"errorDescription": "",
"Data": {
"sourceAccount": "888801000003301",
"sourceAccountName": "BRIAPI SANDBOX",
"sourceAccountStatus": "Rekening Aktif",
"sourceAccountBalace": "258544125122.98",
"registrationStatus": "Rekening terdaftar an. bri",
"beneficiaryAccount": "888801000157508",
"beneficiaryAccountName": "BRIAPI SANDBOX 2",
"beneficiaryAccountStatus": "Rekening Aktif"
}
}
HTTP Request
GET https://partner.api.bri.co.id/sandbox/v3/transfer/internal/accounts?
sourceaccount={{SOURCE_ACCOUNT}&beneficiaryaccount={{DESTINATION_ACCOUNT}}
Query Parameters
Parameter | Type | Max Char | Mandatory | Description |
---|---|---|---|---|
sourceAccount | Numeric | 15 | Yes | Source account that will be used in transfer. If the account length is less than 15, add 0 at the beginning |
beneficiaryAccount | Numeric | 15 | Yes | Destination account that will be used in transfer |
Transfer
This endpoint is used to make a transfer of funds between two accounts. There is a maximum total transaction limit and a daily limit that will be set by BRI.
curl -X POST 'https://partner.api.bri.co.id/sandbox/v3/transfer/internal' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Signature: {{SIGNATURE}}' \ -H 'BRI-Timestamp: {{TIMESTAMP}}' \ -H 'Content-Type: application/json' \ -d '{ "NoReferral": "20180212002", "sourceAccount": "888801000157508", "beneficiaryAccount": "888801000003301", "Amount": "1000.00", "FeeType": "OUR", "transactionDateTime": "12-02-2018 10:18:00", "remark": "REMARK TEST" }'
<?php $noReff = "12313221"; $sourceAcc = "888801000157508"; $benefAcc = "888801000003301"; $amt = "1000.00"; $feeType = "OUR"; $trxDateTime = "12-02-2019 15:08:00"; $remark = "REMARK TEST"; $datas = array( 'NoReferral' => $noReff , 'sourceAccount' => $sourceAcc, 'beneficiaryAccount' => $benefAcc, 'Amount' => $amt, 'FeeType' => $feeType, 'transactionDateTime' => $trxDateTime, 'remark' => $remark ); $payload = json_encode($datas, true); $path = "/sandbox/v3/transfer/internal"; $verb = "POST"; $base64sign = generateSignature($path,$verb,$token,$timestamp,$payload,$secret); $request_headers = array( "Content-Type:"."application/json", "Authorization:Bearer " . $token, "BRI-Timestamp:" . $timestamp, "BRI-Signature:" . $base64sign, ); $urlPost ="https://partner.api.bri.co.id/sandbox/v3/transfer/internal"; $chPost = curl_init(); curl_setopt($chPost, CURLOPT_URL,$urlPost); curl_setopt($chPost, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($chPost, CURLOPT_POSTFIELDS, $payload); curl_setopt($chPost, CURLINFO_HEADER_OUT, true); curl_setopt($chPost, CURLOPT_RETURNTRANSFER, true); $resultPost = curl_exec($chPost); $httpCodePost = curl_getinfo($chPost, CURLINFO_HTTP_CODE); curl_close($chPost); $jsonPost = json_decode($resultPost, true); echo "<br/> <br/>"; echo "Response Post : ".$resultPost;
Sample Response
{
"responseCode": "0200",
"responseDescription": "Payment Success",
"errorDescription": "",
"JournalSeq": "3289331"
}
HTTP Request
POST https://partner.api.bri.co.id/sandbox/v3/transfer/internal
Request Header
Key | Value | Mandatory |
---|---|---|
Content-Type | application/json | Yes |
Request Body
Field | Data Type | Max Char | Mandatory | Description |
---|---|---|---|---|
NoReferral | String | 20 | Yes | Unique reference number from sender |
sourceAccount | String | 15 | Yes | Source account |
beneficiaryAccount | String | 15 | Yes | Destination account |
Amount | String | 15 | Yes | Fund transfer amount, format must be #.## , example 10000.00 for ten thousands |
FeeType | String | - | Yes | 1. OUR Fee is charged to the sender (default) 2. BEN Fee is charged to the recipient 3. SHA|1000 Fee is shared between sender and recipient, with sender is charged Rp 1.000,00 and the recipient will be charged the rest |
transactionDateTime | String | 19 | Yes | Date and time of the transaction, format: dd-MM-yyyy HH:mm:ss |
remark | String | 40 | No | Remark/transaction description) |
Check Transfer Status
This endpoint is used to check the status of a transfer transaction that has been made.
curl -X GET 'https://partner.api.bri.co.id/sandbox/v3/transfer/internal?noreferral=201802120002' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Signature: {{SIGNATURE}}' \ -H 'BRI-Timestamp: {{TIMESTAMP}}'
<?php $noRefferal = "201802120002"; $secret = "YOUR SECRET KEY"; $timestamp = gmdate("Y-m-d\TH:i:s.000\Z"); $token = $accesstoken; $path = "/sandbox/v3/transfer/internal; $verb = "GET"; $body = ""; $base64sign = generateSignature($path,$verb,$token,$timestamp,$body,$secret); $urlGet ="https://partner.api.bri.co.id/sandbox/v3/transfer/internal?noreferral=".$noRefferal; $chGet = curl_init(); $request_headers = array( "Authorization: Bearer " . $token, "BRI-Timestamp: " . $timestamp, "BRI-Signature: " . $base64sign ); curl_setopt($chGet,CURLOPT_URL,$urlGet); curl_setopt($chGet, CURLOPT_HTTPHEADER, $request_headers); curl_setopt($chGet, CURLINFO_HEADER_OUT, true); curl_setopt($chGet, CURLOPT_RETURNTRANSFER, true); $resultGet = curl_exec($chGet); $httpCodeGet = curl_getinfo($chGet, CURLINFO_HTTP_CODE); curl_close($chGet); $jsonGet = json_decode($resultGet, true); echo "Response Get : ".$resultGet;
Sample Response
{
"responseCode": "0300",
"responseDescription": "Cek Status sukses",
"errorDescription": "",
"Data": {
"NoReferral": "20181230002",
"journalSeq": "3289331",
"internalTransferStatus": "0200",
"internalTransferErrorMessage": ""
}
}
HTTP Request
GET https://partner.api.bri.co.id/sandbox/v3/transfer/internal?noreferral={{NO_REFERRAL}}
Query Parameters
Parameter | Type | Max Char | Mandatory | Description |
---|---|---|---|---|
NoReferral | String | 20 | Yes | Unique reference number that was used on the transaction |
Response
Field | Data Type | Mandatory | Description |
---|---|---|---|
responseCode | String | Yes | Response code |
responseDescription | String | Yes | Response code description |
errorDescription | String | Yes | Additional response description |
NoReferral | String | Yes | Reference number that was sent |
journalSeq | String | Yes | Transaction journal seq that was written in BRI system |
internalTransferStatus | String | Yes | Transaction status |
internalTransferErrorMessage | String | Yes | Transaction status description |
Response Code
BRI uses a conventional HTTP response code to indicate whether the API request made was successful or failed. A code with the prefix 4xx
indicates an error in the data provided (for example, required parameters are incomplete, charging failed, etc.). Codes in the 5xx
range indicate an error on the BRI server (this is rare). Please see the response code list below:
Inquiry
Code | Code Description |
---|---|
0001 | Wrong message format |
0005 | Validation Success |
0007 | The institution code is blank or invalid |
0008 | Institution not recognized |
0009 | Key cannot be empty |
0010 | IP address not allowed |
0011 | The account is not registered in an institutional account |
0012 | WRONG Key. Please enter the correct key |
99 | API Service Maintenance |
81 | Thwow An Exception |
0100 | Inquiry Success |
0101 | Inquiry Failed |
0102 | Inquiry Timeout |
0103 | Source account/beneficiary account must be a number |
0104 | Inquiry data is empty |
0105 | The origin / destination account number must be IDR |
0106 | Source account/beneficiary account must not be empty |
0109 | Member ID / participant account not found |
0110 | Branch / Institution account code not found |
0111 | Unregistered Account Number |
0112 | Unregistered Referral Number |
Transfer
Code | Code Description | Error Description | Transaction Status |
---|---|---|---|
0200 | Payment Success | - | Success |
0201 | Payment Failed | - | Need To Check |
0201 | Payment Failed | Account Closed | Failed |
0201 | Payment Failed | Invalid Beneficiary Accout | Failed |
0201 | Payment Failed | Duplicate Journal Seq | Need To Check |
0201 | Payment Failed | Original Journal Seq Not Found | Need To Check |
0201 | Payment Failed | Account Closed | Failed |
0201 | Payment Failed | Passive Account | Failed |
0201 | Payment Failed | Rekening Dibekukan | Failed |
0201 | Payment Failed | Not enough balance | Failed |
0201 | Payment Failed | Teller Record in User | Need To Check |
0201 | Payment Failed | Type account number not in current account/IA/saving account | Failed |
0202 | Payment can not be processed | Payment Timeout | Need To Check |
0204 | Payment can not be processed | Data Payment ada yang kosong | Failed |
0206 | Payment can not be processed | Amount must be a number | Failed |
0207 | Payment can not be processed | Amount must be more than 0 | Failed |
0208 | Payment can not be processed | Length amount is not valid | Failed |
0209 | Payment can not be processed | Reference number is already used | Failed |
0210 | Payment can not be processed | Reference number must not be empty | Failed |
0211 | Payment can not be processed | Remark must not be empty | Failed |
0212 | Payment can not be processed | Invalid format transaction datetime | Failed |
0213 | Payment can not be processed | Fee type must not be empty | Failed |
0288 | Payment can not be processed | Transaction is being processed | Need To Check |
81 | Throw an exception* | (*All error description) | Need To Check |
Null | Null | Null | Need To Check |
- | Get HTML Response | Need to Check |
Check Status
Code | Code Description |
---|---|
0300 | Check Status success |
0304 | Data Check Status is empty |
0307 | Reference Number Not Found |
0308 | Check Status failed |
0900 | Request Success |
0901 | Not a VA |
0902 | Request Timeout |
0903 | Not Found |