Interbank Transfer

This section will explain how merchants can initiate interbank transfer using SNAP specification.

ServiceCodeMethodURLDescription
18POST/{version}/transfer-interbankAPI Trigger Interbank Transfer

Request

Header

The following table is a header of request parameter:

Field NameAttrib.DatatypeDescription
Content-TypeMStringRepresent media type of request e.g “application/json”
AuthorizationMBearer token obtained from Access Token API in the format Bearer
X-TIMESTAMPMString(25)Client's current local time in “yyyy-MM-ddTHH:mm:ssTZD” format
X-SIGNATUREMSee General API Symmetric Signature
X-PARTNER-IDMSee Credential Exchange
X-EXTERNAL-IDMString(max 36), NumericUnique request reference number from partner. Must be unique.
CHANNEL-IDMSee Credential Exchange

Body

The following table is a body of request parameter:

Field NameAttrib.DatatypeDescription
partnerReferenceNoMString(64)Transaction identifier on service consumer system
Uniqueness checking will be done within 2 (two) months only. If the same partnerReferenceNo reused after 2 months, we will treat it as new request.
amount.valueMString(16,2)Net amount of the transaction.
If it’s IDR, then the value includes 2 decimal digits.
e.g. IDR 10.000, will be placed with 10000.00
amount.currencyMString(3)Currency (should always be IDR)
beneficiaryAccountNameMString(100)Beneficiary account name
beneficiaryAccountNoMString(34)Beneficiary account number
beneficiaryBankCodeMString(8)3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank
beneficiaryEmailOString(50)Beneficiary email
sourceAccountNoMString(19)For Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Midtrans Dashboard in Bank Accounts menu.
For Aggregator: 0000000000
transactionDateMString(25)Transaction date : ISO 8601 (without millis). e.g “yyyy-MM-ddTHH:mm:ssZ”
additionalInfo.remarkMString (50)Add a note to the payout (unique is encouraged)

Response

Header

The following table is a header of response parameter:

Field NameAttrib.DatatypeDescription
X-TIMESTAMPMString(25)“yyyy-MM-ddTHH:mm:ssTZD” format

Body

The following table is a body of response parameter:

Field NameAttrib.DatatypeDescription
responseCodeMString(7)Response code
responseMessageMString(150)Response description
referenceNoCString(64)Transaction identifier on service provider system. Must be filled upon successful transaction
partnerReferenceNoMString(64)Transaction identifier on service consumer system
amount.valueOString(16,2)Net amount of the transaction.
If it’s IDR then value includes 2 decimal digits.
e.g. IDR 10.000, will be placed with 10000.00
amount.currencyOString(3)Currency (should always be IDR)
beneficiaryAccountNoMString(34)Beneficiary account number
beneficiaryBankCodeOString(8)3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank
sourceAccountNoOString(19)For Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Midtrans Dashboard in Bank Accounts menu.
For Aggregator: 0000000000
additionalInfo.beneficiaryAccountNameMString(100)Name of the beneficiary
additionalInfo.beneficiaryEmailMString(50)Beneficiary email

Sample

Request

The following section is a sample of request parameter:

curl --location --request POST 'https://merchants.midtrans.com/v1.0/transfer-interbank \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxMmUzODE4Mi00YjIxLTQ0YWMtOTVkNi1mMjFhMjEwZmIxZTAiLCJjbGllbnRJZCI6IjY2ODA1MmUzNGYxOTRhYThiZTc5ZTE1YTIxZTRmYzJmIiwibmJmIjoxNjYzODQwNTU5LCJleHAiOjE2NjM4NDE0NTksImlhdCI6MTY2Mzg0MDU1OX0.fEr0vIbB2kY8alZ-SROl3ftAFbfRd0uU-lGq9XuFi8M' \
--header 'X-TIMESTAMP: 2022-03-04T08:02:09+07:00' \
--header 'X-SIGNATURE: yqmBXZ3yV6NPG1LtwXMm3quXzJMRX5Ms+r9ebc5xWIZGSKbZL3Oy871GHb7WQUucLa5nxN/HcnZYoNHc+KkWTQ==' \
--header 'X-PARTNER-ID: 668052e34f194aa8be79e15a21e4fc2f' \
--header 'X-EXTERNAL-ID: 91919644194391346361915387229113' \
--header 'CHANNEL-ID: 95221' \
--data-raw '{
   "partnerReferenceNo": "61945219227478976148442931867349",
   "amount": { "value": "100000.00", "currency": "IDR” },
   "beneficiaryBankCode": "0020307",
   "beneficiaryAccountNo": "1172993826",
   "beneficiaryAccountName": "Jon Snow",
   "beneficiaryEmail": "[email protected]",
   "sourceAccountNo": "bnia750516c",
   "transactionDate": "2021-12-07T23:02:03+07:00",
   "additionalInfo": {
       "remark": "Payout Sep 22",
   }
}'

Response

The following section is a sample of response parameter:

Content-Type : application/json
x-timestamp  : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{
   "responseCode": "2021800",
   "responseMessage": "Request In Progress",
   "referenceNo": "558rFI9lxMdQlOkm65",
   "partnerReferenceNo": "61945219227478976148442931867349",
   "amount": { "value": "100000.00", "currency": "IDR" },
   "beneficiaryBankCode": "0020307",
   "beneficiaryAccountNo": "1172993826",
   "sourceAccount": "bnia750516c",
   "transactionDate": "2021-12-07T23:02:03+07:00",
   "additionalInfo": {
       "beneficiaryAccountName": "Jon Snow",
       "beneficiaryEmail": "[email protected]"
   }
}
Content-Type : application/json
x-timestamp  : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{"responseCode": "4001800", "responseMessage": "Bad Request. Beneficiary Account not found"}

Migration

Request

The following table is a comparison of request parameter:

Payouts non-SNAP-based (current)Payouts SNAP-basedDescription
partnerReferenceNoTransaction identifier on service consumer system
amountamount.valueNet amount of the transaction.

If it’s IDR then value includes 2 decimal digits.
e.g. IDR 10.000, will be placed with 10000.00
amount.currencyCurrency (should always be IDR)
beneficiaryBankCode3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank
beneficiary_accountbeneficiaryAccountNoBeneficiary account number
beneficiary_namebeneficiaryAccountNameBeneficiary account name
beneficiary_emailbeneficiaryEmailBeneficiary email
bank_account_idsourceAccountNoFor Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Midtrans Dashboard in Bank Accounts menu.
For Aggregator: 0000000000
transactionDateTransaction date : ISO 8601 (without millis). e.g “yyyy-MM-
ddTHH:mm:ssZ”
beneficiary_bankBank name used by the Beneficiary
notesadditionalInfo.remarkRemark/transaction description

Previously remark could have been maximum 100 characters, under SNAP it is restricted to maximum 50 characters.

Response

The following table is a comparison of response parameter:

Payouts non-SNAP-based (current)Payouts SNAP-basedDescription
statusPayout Status
responseCodeResponse code
responseMessageResponse description
reference_noreferenceNoTransaction identifier on service provider system. Must be filled upon successful transaction
partnerReferenceNoTransaction identifier on service consumer system
amount.valueNet amount of the transaction.
If it’s IDR then value includes 2 decimal digits.
e.g. IDR 10.000, will be placed with 10000.00
amount.currencyCurrency (should always be IDR)
beneficiaryBankCode3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank
beneficiaryAccountNoBeneficiary account
sourceAccountNoFor Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Payouts Dashboard in Bank Accounts menu.
For Aggregator: 0000000000
transactionDateTransaction date : ISO 8601 (without millis). e.g “yyyy-MM-ddTHH:mm:ssZ”
additionalInfo.beneficiaryNameName of the beneficiary
additionalInfo.beneficiaryEmailBeneficiary email

Response Codes

Payouts non-SNAP-based (current)Payout SNAP-basedDescription
2021800Request In Progress
4001800Bad Request
4001801Invalid Field Format [fieldName]
4001802Missing Mandatory Field [fieldName]
4011801Unauthorized
4011201Invalid Token (B2B)
4091801Duplicate partnerReferenceNo
5001200Internal Server Error

Notes:

If you received 5xx error during transfer, please do status inquiry before recreating new transfer request just to be sure we have not proceed the previous request.