Skip to main content

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 charactersRequired
Content type, value always application/json
Authorization
string
1 - 2048 charactersConditional
Contains bearer JWT token, which has been obtained from Authorization Token Request API
Conditional Info
Y:= Signature option is symmetric approach
X-TIMESTAMP
string
25 charactersRequired
Transaction date time, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
X-SIGNATURE
string
Required
Signature need to be generated with symmetricSignature or asymmetricSignature method
ORIGIN
string
Origin domain
X-PARTNER-ID
string
1 - 36 charactersRequired
Unique identifier for partner was generated by DANA, or known as clientId
X-EXTERNAL-ID
string
1 - 36 charactersRequired
Unique messaging reference identifier generated by merchant and should be unique within the same day
CHANNEL-ID
string
1 - 5 charactersRequired
Device identification on which the API services is currently being accessed by the end user (customer)

partnerServiceId
string
8 charactersRequired
Biller/merchant code of the virtual account. 8 digit left padding with space
customerNo
string
1 - 20 charactersRequired
Unique number (up to 20 digits). Combine partnerServiceId and customerNo or virtualAccountNo
virtualAccountNo
string
1 - 28 charactersRequired
Information of virtual account number which combine partnerServiceId and customerNo
virtualAccountName
string
1 - 255 charactersRequired
Information of customer name
virtualAccountEmail
string
1 - 255 characters
Information of customer email
virtualAccountPhone
string
1 - 30 characters
Information of customer’s phone number
trxId
string
1 - 64 charactersConditional
Transaction identifier in partner (Bank) system
Conditional Info
Y:= Payment comes from the Create VA request
paymentRequestId
string
1 - 64 charactersRequired
Unique 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 characters
Information of channel code based on ISO 18245
hashedSourceAccountNo
string
1 - 32 charactersRequired
Source account number in hash
sourceBankCode
string
1 - 3 characters
Source account Bank code
paidAmount
money
Required
Paid amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
cumulativePaymentAmount
money
Cumulative payment amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
paidBills
string
1 - 6 characters
Hexadecimal format of binary of flag of paid bills
totalAmount
money
Total amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
trxDateTime
string
25 characters
Information 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 characters
Payment auth code generated by Bank
journalNum
string
1 - 6 characters
Sequence journal number in PJP Core System
paymentType
string
1 characters
Payment type. The values include:
  • 1 = Cash
  • 2 = Transfer
flagAdvise
string
1 characters
Status is this is a retry notification:
  • Y = Retry notification
  • N = New notification
subCompany
string
1 - 5 characters
Sub Company code generated by partner
billDetails
array of json object
Information of bill details
billCode
string
2 characters
Bill code for customer choose
billName
string
1 - 20 characters
Bill Name
billAmount
money
Bill amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
billSubCompany
string
1 - 5 charactersConditional
Partner's product code
Conditional Info
Y:= subCompany was sent
freeTexts
array of multilanguagetext
Information of free text using multi language text
english
string
Required
English language text.
The length defines as below:
  • Freetexts: 32 max
  • paymentFlagReason: 200 max
indonesia
string
Required
Indonesia language text.
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 charactersRequired
Content type, value always application/json
X-TIMESTAMP
string
25 charactersRequired
Transaction date time, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)

responseCode
string
7 charactersRequired
Refer to response code list
responseMessage
string
1 - 150 charactersRequired
Refer to response code list
virtualAccountData
json object
Required
Contains virtual account data
paymentFlagReason
json object
Reason for payment flag status using multi language text
english
string
1 - 200 characters
Reason for payment status in english
indonesia
string
1 - 200 characters
Reason for payment status in bahasa
partnerServiceId
string
8 charactersRequired
Biller/merchant code of the virtual account. 8 digit left padding with space
customerNo
string
1 - 20 charactersRequired
Unique number (up to 20 digits). Combine partnerServiceId and customerNo or virtualAccountNo
virtualAccountNo
string
1 - 28 charactersRequired
Information of virtual account number which combine partnerServiceId and customerNo
virtualAccountName
string
1 - 255 charactersRequired
Information of customer name
trxId
string
1 - 64 charactersConditional
Transaction identifier in partner (Bank) system
Conditional Info
Y:= Payment comes from the Create VA request
paymentRequestId
string
1 - 64 charactersRequired
Unique 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
Required
Paid amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
totalAmount
money
Total amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO
value
string
1 - 19 charactersRequired
Value 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 charactersRequired
Currency
trxDateTime
string
25 characters
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 characters
Payment auth code generated by Bank
paymentType
string
1 characters
Payment type. The values include:
  • 1 = Cash
  • 2 = Transfer
flagAdvise
string
1 characters
Status is this is a retry notification:
  • Y = Retry notification
  • N = New notification
paymentFlagStatus
string
2 charactersRequired
Status 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 Bank
  • 01 - 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 user
  • 02 - 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 characters
Information of free text using multi language text
english
string
Required
English language text.
The length defines as below:
  • Freetexts: 32 max
  • paymentFlagReason: 200 max
indonesia
string
Required
Indonesia language text.
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":{
}
}
}

ResponseCauseSolution
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)
  • If the response code prefix are 202 and 5XX, mark Payment VA process as Pending & retry request periodically or Mark Payment VA as Success & hold the money Pending
  • If empty field/field does not exist, mark Payment VA process as Pending & retry request periodically or Mark Payment VA as Success & hold the money
ask AIAI Assistant
Need help with our documentation?
Start from our frequently asked questions or feel free to ask anything else.

AI generated responses may contain mistakes.