This section will explain how merchants can initiate Payment to Virtual Account from Intrabank using SNAP specification.
ServiceCode | Method | URL | Description |
---|---|---|---|
33 | POST | /{version}/transfer-va/payment-intrabank | API Payment VA |
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. |
inquiryRequestId | O | String(128) | If inquiry VA is used in tandem with payment VA, then fill this field with value from inquiry VA’s response |
partnerServiceId | M | String(8) | Fill with placeholder value of “00000000”, we will not check this field |
customerNo | M | String(20) | Fill with placeholder value of “00000000”, we will not check this field |
virtualAccountNo | M | String(28) | Customer virtual account number |
sourceAccountNo | M | String(19) | For Facilitator: Bank account ID registered in Iris for facilitator model, can be accessed in IRIS Portal in Bank Accounts menu. For Aggregator: 0000000000 |
paidAmount.value | M | 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 |
paidAmount.currency | M | String(3) | Currency (should always be IDR) |
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 |
virtualAccountData | M | Object | |
{}.partnerReferenceNo | M | String(64) | Transaction Identifier On service Consumer System |
{}.inquiryRequestId | O | String(128) | inquiryRequestId from request |
{}.referenceNo | C | String(64) | Transaction identifier on service provider system. Must be filled upon successful transaction |
{}.partnerServiceId | M | String(8) | Filled with placeholder value of “00000000” |
{}.customerNo | M | String(20) | Filled with placeholder value of “00000000” |
{}.virtualAccountNo | M | String(28) | Customer virtual account number |
{}.virtualAccountName | M | String(255) | Customer name Filled with placeholder value of “virtual-account-name” |
{}.sourceAccountNo | M | String(19) | For Facilitator: Bank account ID registered in Iris for facilitator model, can be accessed in IRIS Portal in Bank Accounts menu. For Aggregator: 0000000000 |
{}.paidAmount.value | M | 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 |
{}.paidAmount.currency | M | String(3) | Currency (should always be IDR) |
{}.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-va/payment-intrabank' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxMmUzODE4Mi00YjIxLTQ0YWMtOTVkNi1mMjFhMjEwZmIxZTAiLCJjbGllbnRJZCI6IjY2ODA1MmUzNGYxOTRhYThiZTc5ZTE1YTIxZTRmYzJmIiwibmJmIjoxNjYzODQwNTU5LCJleHAiOjE2NjM4NDE0NTksImlhdCI6MTY2Mzg0MDU1OX0.fEr0vIbB2kY8alZ-SROl3ftAFbfRd0uU-lGq9XuFi8M' \
--header 'Content-Type: application/json' \
--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":"158dd631-e5bb-4697-9530-2f3821ec4e20","inquiryRequestId":"158dd631e5bb469795302f3821ec4e20","partnerServiceId":"00000000","customerNo":"00000000","virtualAccountNo":"80777087897654374","sourceAccountNo":"bca2750516c","paidAmount":{"value":"25000.00","currency":"IDR"},"additionalInfo":{"beneficiaryBankCode":"0140397"}}'
Response
The following section is a sample of response parameter:
Content-Type : application/json
x-timestamp : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{
"responseCode": "2023300",
"responseMessage": "Request In Progress",
"virtualAccountData": {
"partnerReferenceNo": "158dd631-e5bb-4697-9530-2f3821ec4e20",
"inquiryRequestId": "158dd631e5bb469795302f3821ec4e20",
"referenceNo": "l3hc0d4oy1639vln3b",
"partnerServiceId": "00000000",
"customerNo": "00000000",
"virtualAccountNo": "80777087897654374",
"virtualAccountName": "virtual-account-name",
"sourceAccountNo": "bca2750516c",
"paidAmount": {
"value": "25000.00",
"currency": "IDR"
}
},
"additionalInfo": {
"beneficiaryBankCode": "0140397"
}
}
Content-Type : application/json
x-timestamp : 2022-03-04T08:02:09+07:00
-------------------------------------------------------------------------------
{"responseCode": "5003300", "responseMessage": "Internal Server Error"}
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 | |
inquiryRequestId | If inquiry VA is used in tandem with payment VA, then fill this field with value from inquiry VA’s response | |
partnerServiceId | Fill with placeholder value of “00000000”, we will not check this field | |
customerNo | Fill with placeholder value of “00000000”, we will not check this field | |
beneficiary_account | virtualAccountNo | Beneficiary virtual account number |
beneficiary_email | Beneficiary Email | |
notes | Remark/transaction description | |
bank_account_id | sourceAccountNo | For Facilitator: Bank account ID registered in Iris for facilitator model, can be accessed in IRIS Portal in Bank Accounts menu. For Aggregator: 0000000000 |
amount | paidAmount.value | Net amount of the transaction. If it’s IDR then value includes 2 decimal digits. |
paidAmount.currency | Currency (should always be IDR) | |
beneficiary_name | 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 | |
partnerReferenceNo | Transaction identifier on service consumer system | |
inquiryRequestId | inquiryRequestId from request | |
reference_no | referenceNo | Transaction identifier on service provider system. Must be filled upon successful transaction |
partnerServiceId | ||
customerNo | ||
virtualAccountNo | Beneficiary Account | |
virtualAccountName | ||
sourceAccountNo | For Facilitator: Bank account ID registered in Iris for facilitator model, can be accessed in IRIS Portal in Bank Accounts menu. For Aggregator: 0000000000 | |
paidAmount.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 | |
paidAmount.currency | Currency (should always be IDR) | |
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 |
---|---|---|
2023300 | Request In Progress | |
4003300 | Bad Request | |
4003301 | Invalid Field Format [fieldName] | |
4003302 | Missing Mandatory Field [fieldName] | |
4013300 | Unauthorized | |
4013301 | Invalid Token (B2B) | |
4093301 | Duplicate partnerReferenceNo | |
5003300 | 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.