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