This section will explain how merchants can initiate intrabank transfer using SNAP specification.
| ServiceCode | Method | URL | Description |
|---|---|---|---|
| 17 | POST | /{version}/transfer-intrabank | API Trigger Intrabank Transfer |
Request
Header
The following table is a header of request parameter:
| Field Name | Attrib. | Datatype | Description |
|---|---|---|---|
| Content-Type | M | String | Represent media type of request e.g “application/json” |
| Authorization | M | Bearer token obtained from Access Token API in the format Bearer | |
| X-TIMESTAMP | M | String(25) | Client's current local time in “yyyy-MM-ddTHH:mm:ssTZD” format |
| X-SIGNATURE | M | See General API Symmetric Signature | |
| X-PARTNER-ID | M | See Credential Exchange | |
| X-EXTERNAL-ID | M | String(max 36), Numeric | Unique request reference number from partner. Must be unique. |
| CHANNEL-ID | M | See Credential Exchange |
Body
The following table is a body of request parameter:
| Field Name | Attrib. | Datatype | Description |
|---|---|---|---|
| partnerReferenceNo | M | String(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.value | M | String(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.currency | M | String(3) | Currency (should always be IDR) |
| beneficiaryAccountNo | M | String(34) | Beneficiary account number |
| beneficiaryEmail | O | String(50) | Beneficiary Email |
| remark | M | String(50) | Remark/transaction description. Unique is encouraged Previously remark could have been maximum 100 characters, under Open API it is restricted to maximum 50 characters. |
| sourceAccountNo | M | String(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 |
| transactionDate | M | String(25) | Transaction date : ISO 8601 (without millis). e.g “yyyy-MM-ddTHH:mm:ssZ” |
| originatorInfos | M | Array of Objects | The Originator Customer Account Details To be filled if there is a request from the sender or if the consent from sender has been granted. This is subject to Article 8 paragraph 5 of Law No. 3 of 2011 concerning Fund Transfers. Also check for other provisions, such as the PPATK regulation. |
| originatorInfos.originatorCustomerNo | M | String(34) | Originator customer account number |
| originatorInfos.originatorCustomerName | M | String(100) | Originator customer account name |
| originatorInfos.originatorBankCode | M | String(11) | Originator bank code |
| additionalInfo.beneficiaryAccountName | M | String(100) | Name of the beneficiary |
| additionalInfo.beneficiaryBankCode | M | String(8) | 3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank |
Response
Header
The following table is a header of response parameter:
| Field Name | Attrib. | Datatype | Description |
|---|---|---|---|
| X-TIMESTAMP | M | String(25) | “yyyy-MM-ddTHH:mm:ssTZD” format |
Body
The following table is a body of response parameter:
| Field Name | Attrib. | Datatype | Description |
|---|---|---|---|
| responseCode | M | String(7) | Response code |
| responseMessage | M | String(150) | Response description |
| referenceNo | C | String(64) | Transaction identifier on service provider system. Must be filled upon successful transaction |
| partnerReferenceNo | M | String(64) | Transaction identifier on service consumer system |
| amount.value | O | String(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.currency | O | String(3) | Currency (should always be IDR) |
| beneficiaryAccountNo | M | String(34) | Beneficiary account number |
| sourceAccountNo | O | String(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 |
| transactionDate | M | String(25) | Transaction date : ISO 8601 (without millis). e.g “yyyy-MM-ddTHH:mm:ssZ” |
| originatorInfos | M | Array of Objects | The Originator Customer Account Details To be filled if there is a request from the sender or if the consent from sender has been granted. This is subject to Article 8 paragraph 5 of Law No. 3 of 2011 concerning Fund Transfers. Also check for other provisions, such as the PPATK regulation. |
| originatorInfos.originatorCustomerNo | M | String(34) | Originator customer account number |
| originatorInfos.originatorCustomerName | M | String(100) | Originator customer account name |
| originatorInfos.originatorBankCode | M | String(11) | Originator bank code |
| additionalInfo.beneficiaryAccountName | M | String(100) | Name of the beneficiary |
| additionalInfo.beneficiaryBankCode | M | String(8) | 3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank |
Sample
Request
The following section is a sample of request parameter:
curl --location --request POST 'https://merchants.midtrans.com/v1.0/transfer-intrabank' \
--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" },
"beneficiaryAccountNo": "1172993826",
"beneficiaryEmail": "[email protected]",
"remark": "Payout April 17",
"sourceAccountNo": "bnia750516c",
"transactionDate": "2021-12-07T23:02:03+07:00",
"originatorInfos": [
{
"originatorCustomerNo": "0192873719",
"originatorCustomerName": "James",
"originatorBankCode": "014",
},
{
"originatorCustomerNo": "8739182635",
"originatorCustomerName": "Richard",
"originatorBankCode": "014",
}
],
"additionalInfo": {
"beneficiaryAccountName": "Jon Snow",
"beneficiaryBankCode": "0020307"
}
}'
Response
The following section is a sample of response parameter:
Content-Type : application/json
x-timestamp : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{
"responseCode": "2021700",
"responseMessage": "Request In Progress",
"referenceNo": "558rFI9lxMdQlOkm65",
"partnerReferenceNo": "61945219227478976148442931867349",
"amount": { "value": "100000.00", "currency": "IDR" },
"beneficiaryAccountNo": "1172993826",
"beneficiaryEmail": "[email protected]",
"sourceAccount": "bnia750516c",
"transactionDate": "2021-12-07T23:02:03+07:00",
"originatorInfos": [
{
"originatorCustomerNo": "0192873719",
"originatorCustomerName": "James",
"originatorBankCode": "014",
},
{
"originatorCustomerNo": "8739182635",
"originatorCustomerName": "Richard",
"originatorBankCode": "014",
}
],
"additionalInfo": {
"beneficiaryAccountName": "Jon Snow",
"beneficiaryBankCode": "0020307"
}
}
Content-Type : application/json
x-timestamp : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{"responseCode": "4001700", "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-based | Description |
|---|---|---|
| partnerReferenceNo | Transaction identifier on service consumer system | |
| amount | amount.value | 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.currency | Currency (should always be IDR) | |
| beneficiary_account | beneficiaryAccountNo | Beneficiary account number |
| beneficiary_email | beneficiaryEmail | Beneficiary email |
| notes | remark | Remark/transaction description Previously remark could have been maximum 100 characters, under Open API it is restricted to maximum 50 characters. |
| bank_account_id | sourceAccountNo | For Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Midtrans Dashboard in Bank Accounts menu. For Aggregator: 0000000000 |
| transactionDate | Transaction date : ISO 8601 (without millis). e.g “yyyy-MM- ddTHH:mm:ssZ” | |
| beneficiary_name | additionalInfo.beneficiaryAccountName | Name of the beneficiary |
| beneficiary_bank | Bank name used by the beneficiary | |
| additionalInfo.beneficiaryBankCode | 3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank |
Response
The following table is a comparison of response parameter:
| Payouts non-SNAP-based (current) | Payouts SNAP-based | Description |
|---|---|---|
| status | Payout Status | |
| responseCode | Response code | |
| responseMessage | Response description | |
| reference_no | referenceNo | Transaction identifier on service provider system. Must be filled upon successful transaction. |
| partnerReferenceNo | Transaction identifier on service consumer system | |
| amount.value | 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.currency | Currency (should always be IDR) | |
| beneficiaryAccountNo | Beneficiary account | |
| sourceAccountNo | For Facilitator: Bank account ID registered in Payouts for facilitator model, can be accessed in Payouts Dashboard in Bank Accounts menu. For Aggregator: 0000000000 | |
| transactionDate | Transaction date : ISO 8601 (without millis). e.g “yyyy-MM-ddTHH:mm:ssZ” | |
| originatorInfos[*].originatorCustomerNo | Originator customer account number | |
| originatorInfos[*].originatorCustomerName | Originator customer account name | |
| originatorInfos[*].originatorBankCode | Originator bank code | |
| additionalInfo.beneficiaryName | Name of the beneficiary | |
| additionalInfo.beneficiaryBankCode | 3 digit BI Bank Code + 4 digit BI Branch Code for the beneficiary bank |
Response Codes
| Payouts non-SNAP-based (current) | Payout SNAP-based | Description |
|---|---|---|
| 2021700 | Request In Progress | |
| 4001700 | Bad Request | |
| 4001701 | Invalid Field Format [fieldName] | |
| 4001702 | Missing Mandatory Field [fieldName] | |
| 4011700 | Unauthorized | |
| 4011701 | Invalid Token (B2B) | |
| 4091701 | Duplicate partnerReferenceNo | |
| 5001700 | Internal 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.