Payment VA
POST/v1.0/transfer-va/payment.htm
This API is used to request payment status and information from Bank to DANA
API Type
SNAP API
Expected Timeout
8 second
SNAP Service Code
25
Accept
application/json
Content Type
application/json
Content-type
string
1 - 127 charactersRequiredContent type, value always
application/jsonAuthorization
string
1 - 2048 charactersConditionalContains bearer JWT token, which has been obtained from Authorization Token Request API
Conditional Info
Y:= Signature option is symmetric approach
X-TIMESTAMP
string
25 charactersRequiredTransaction date time, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
X-SIGNATURE
string
RequiredSignature need to be generated with
symmetricSignature or asymmetricSignature methodORIGIN
string
Origin domain
X-PARTNER-ID
string
1 - 36 charactersRequiredUnique identifier for partner was generated by DANA, or known as clientId
X-EXTERNAL-ID
string
1 - 36 charactersRequiredUnique messaging reference identifier generated by merchant and should be unique within the same day
CHANNEL-ID
string
1 - 5 charactersRequiredDevice identification on which the API services is currently being accessed by the end user (customer)
partnerServiceId
string
8 charactersRequiredBiller/merchant code of the virtual account. 8 digit left padding with space
customerNo
string
1 - 20 charactersRequiredUnique number (up to 20 digits). Combine
partnerServiceId and customerNo or virtualAccountNovirtualAccountNo
string
1 - 28 charactersRequiredInformation of virtual account number which combine
partnerServiceId and customerNovirtualAccountName
string
1 - 255 charactersRequiredInformation of customer name
virtualAccountEmail
string
1 - 255 charactersInformation of customer email
virtualAccountPhone
string
1 - 30 charactersInformation of customer’s phone number
trxId
string
1 - 64 charactersConditionalTransaction identifier in partner (Bank) system
Conditional Info
Y:= Payment comes from the Create VA request
paymentRequestId
string
1 - 64 charactersRequiredUnique request identifier for this inquiry. Generated by Bank
Notes
- If Payment comes from the Inquiry process, this value must be the same with inquiryRequestId
- Bank App should display a paymentRequestId that users can reference when making a complaint
channelCode
number
1 - 4 charactersInformation of channel code based on ISO 18245
hashedSourceAccountNo
string
1 - 32 charactersRequiredSource account number in hash
sourceBankCode
string
1 - 3 charactersSource account Bank code
paidAmount
money
RequiredPaid amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
cumulativePaymentAmount
money
Cumulative payment amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
paidBills
string
1 - 6 charactersHexadecimal format of binary of flag of paid bills
totalAmount
money
Total amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
trxDateTime
string
25 charactersInformation of Bank internal system datetime with timezone, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
referenceNo
string
1 - 15 charactersPayment auth code generated by Bank
journalNum
string
1 - 6 charactersSequence journal number in PJP Core System
paymentType
string
1 charactersPayment type. The values include:
1= Cash2= Transfer
flagAdvise
string
1 charactersStatus is this is a retry notification:
Y= Retry notificationN= New notification
subCompany
string
1 - 5 charactersSub Company code generated by partner
billDetails
array of json object
Information of bill details
billCode
string
2 charactersBill code for customer choose
billName
string
1 - 20 charactersBill Name
billAmount
money
Bill amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
billSubCompany
string
1 - 5 charactersConditionalPartner's product code
Conditional Info
Y:= subCompany was sent
freeTexts
array of multilanguagetext
Information of free text using multi language text
english
string
RequiredEnglish language text.
The length defines as below:
The length defines as below:
- Freetexts: 32 max
- paymentFlagReason: 200 max
indonesia
string
RequiredIndonesia language text.
The length defines as below:
The length defines as below:
- Freetexts: 32 max
- paymentFlagReason: 200 max
additionalInfo
json object
Additional information
POST .../v1.0/transfer-va/payment.htm HTTP/1.2
Content-type: application/json
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a
X-TIMESTAMP: 2020-12-23T09:10:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
CHANNEL-ID: 95221
{
"partnerServiceId":" 88899",
"customerNo":"12345678901234567890",
"virtualAccountNo":" 8889912345678901234567890",
"virtualAccountName":"Jokul Doe",
"virtualAccountEmail": "jokul@gmail.com",
"virtualAccountPhone": "081234567890",
"trxId":"abcdefgh1234",
"paymentRequestId":"abcdef-123456-abcdef",
"channelCode":6011,
"hashedSourceAccountNo":"abcdefghijklmnopqrstuvwxyz123456",
"sourceBankCode":"008",
"paidAmount":{
"value":"12345678.00",
"currency":"IDR"
},
"cumulativePaymentAmount": null,
"paidBills": "",
"totalAmount":{
"value":"12345678.00",
"currency":"IDR"
},
"trxDateTime":"2020-12-21T17:55:11+07:00",
"referenceNo":"123456789012345",
"journalNum": "",
"paymentType":"1",
"flagAdvise": "N",
"billDetails": [
null
],
"freeTexts":[
{
"english":"Free text",
"indonesia":"Tulisan bebas"
}
],
"additionalInfo":{
}
}
Content-type
string
1 - 127 charactersRequiredContent type, value always
application/jsonX-TIMESTAMP
string
25 charactersRequiredTransaction date time, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
responseCode
string
7 charactersRequiredRefer to response code list
responseMessage
string
1 - 150 charactersRequiredRefer to response code list
virtualAccountData
json object
RequiredContains virtual account data
paymentFlagReason
json object
Reason for payment flag status using multi language text
english
string
1 - 200 charactersReason for payment status in english
indonesia
string
1 - 200 charactersReason for payment status in bahasa
partnerServiceId
string
8 charactersRequiredBiller/merchant code of the virtual account. 8 digit left padding with space
customerNo
string
1 - 20 charactersRequiredUnique number (up to 20 digits). Combine
partnerServiceId and customerNo or virtualAccountNovirtualAccountNo
string
1 - 28 charactersRequiredInformation of virtual account number which combine partnerServiceId and customerNo
virtualAccountName
string
1 - 255 charactersRequiredInformation of customer name
trxId
string
1 - 64 charactersConditionalTransaction identifier in partner (Bank) system
Conditional Info
Y:= Payment comes from the Create VA request
paymentRequestId
string
1 - 64 charactersRequiredUnique request identifier for this inquiry. Generated by Bank.
Note
If Payment comes from the Inquiry process, this value must be the same with inquiryRequestId
paidAmount
money
RequiredPaid amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
totalAmount
money
Total amount. Contains two sub-fields:
- Value: Amount, including the cents
- Currency: Currency code based on ISO
value
string
1 - 19 charactersRequiredValue of amount. Following ISO-4217, for IDR the value includes 2 decimal digits separated with point e.g. ,IDR 10.000,- will be placed with 10000.00
currency
string
1 - 3 charactersRequiredCurrency
trxDateTime
string
25 charactersBank internal system datetime with timezone, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
referenceNo
string
1 - 15 charactersPayment auth code generated by Bank
paymentType
string
1 charactersPayment type. The values include:
1= Cash2= Transfer
flagAdvise
string
1 charactersStatus is this is a retry notification:
Y= Retry notificationN= New notification
paymentFlagStatus
string
2 charactersRequiredStatus for payment flag from merchant/biller. The values include:
00- Success
The payment has been accepted successfully by the merchant/biller. No more retry needed from the Bank01- Fail
The payment has been rejected by the merchant/biller. No more retry needed from the Bank and the money can be returned to the user02- Unknown/Pending
The payment status is not confirmed yet by the merchant/biller. Bank will need to retry up to the retry limit set by the Bank
The initial status from the bank is
02 - Unknown/Pending and the Bank needs to update the status to success if the payment retry process has been stopped and no clear success/fail response from the merchant/biller freeTexts
array of multilanguagetext
1 - 25 charactersInformation of free text using multi language text
english
string
RequiredEnglish language text.
The length defines as below:
The length defines as below:
- Freetexts: 32 max
- paymentFlagReason: 200 max
indonesia
string
RequiredIndonesia language text.
The length defines as below:
The length defines as below:
- Freetexts: 32 max
- paymentFlagReason: 200 max
additionalInfo
json object
Additional information
Content-type: application/json
X-TIMESTAMP: 2020-12-23T09:10:11+07:00
{
"responseCode":"2002500",
"responseMessage":"Successful",
"virtualAccountData":{
"paymentFlagReason":{
"english":"Success",
"indonesia":"Sukses"
},
"partnerServiceId":" 88899",
"customerNo":"12345678901234567890",
"virtualAccountNo":" 8889912345678901234567890",
"virtualAccountName":"Jokul Doe",
"trxId":"abcdefgh1234",
"paymentRequestId":"abcdef-123456-abcdef",
"paidAmount":{
"value":"12345678.00",
"currency":"IDR"
},
"totalAmount":{
"value":"12345678.00",
"currency":"IDR"
},
"trxDateTime":"2020-12-21T14:56:11+07:00",
"referenceNo":"123456789012345",
"paymentType":"1",
"flagAdvise": "N",
"paymentFlagStatus":"00",
"freeTexts":[
{
"english":"Free text",
"indonesia":"Tulisan bebas"
}
],
"additionalInfo":{
}
}
}
| Response | Cause | Solution |
|---|---|---|
2002500Successful | Success to be processed | Mark Payment VA process as Success |
4002500Bad Request | General request failed error | Mark Payment VA process as Failed. Retry request with proper parameter |
4002501Invalid Field Format | Invalid format for certain field | Mark Payment VA process as Failed. Retry request with proper parameter |
4002502Invalid Mandatory Field | Missing or invalid format on mandatory field | Mark Payment VA process as Failed. Retry request with proper parameter |
4012500Unauthorized. [reason] | General unauthorized error | Mark Payment VA process as Failed. Retry request with proper parameter |
4012501Invalid Token (B2B) | Authorization token are invalid, perhaps due to token expiry for B2B | Mark Payment VA process as Failed. Retry request with proper parameter |
4032562Top Up Lower Than Minimum Amount | Request lower than minimum amount | Mark Payment VA process as Failed. Retry new Payment VA process with proper amount |
4032563Exceed Maximum Limit Amount | Request exceed maximum limit amount | Mark Payment VA process as Failed. Retry new Payment VA process with proper amount |
4032566Exceed Maximum Monthly Limit Amount | Request exceed monthly limit amount | Mark Payment VA process as Failed. Retry new Payment VA process next month |
4042511Invalid Card/Account/Customer [info]/Virtual Account | Card information may be invalid, or the card account may be blacklisted, or Virtual Account number maybe invalid | Mark Payment VA process as Failed. Retry new Payment VA process with proper customer info |
4042512Invalid Bill/Virtual Account [Reason] | The bill is blocked/ suspended/not found; Virtual account is suspend/not found | Mark Payment VA process as Failed. Retry new Payment VA process with proper customer info |
4042513Invalid Amount | The amount doesn't match with what supposed to | Mark Payment VA process as Failed. Retry new Payment VA process with proper amount |
4292500Too Many Requests | Maximum transaction limit exceeded | Mark Payment VA process as Pending. Retry request periodically |
5002500General Error | General error non retry-able | Mark Payment VA process as Failed. Retry new Payment VA process |
5002501Internal Server Error | Unknown internal server failure, please retry the process again | Mark Payment VA process as Pending & retry request periodically or Mark Payment VA as Success & hold the money |
5042500Timeout | timeout from the issuer | Mark Payment VA process as Pending & retry request periodically or Mark Payment VA as Success & hold the money |
Total timeout | Total timeout, the client side does not get any responses from the server side (Can be due to network issue, server slowing down, and so on) | Mark Payment VA process as Pending & retry request periodically or Mark Payment VA as Success & hold the money |
Unexpected response (Empty field/field does not exist/undefined response code) | The server does not produce expected responses (Can be due to hardware failure, bugs, and so on) |
|