Direct Debit Payment
POST/rest/redirection/v1.0/debit/payment-host-to-host
This API is used to initiate payment from merchant's platform to DANA
API Type
SNAP API
Expected Timeout
8 second
SNAP Service Code
54
Accept
application/json
Content Type
applciation/json
This API is used for the following solution:
Seamlessly integrate DANA payments into merchant's platform, allowing customers to link their DANA accounts for faster, smoother transactions across all merchant's services.
This API is used for the following solution:
Integrate DANA as a payment method in merchant's platform without account binding. Users simply select DANA, get redirected to the DANA App, and complete payments using their DANA account.
Idempotent Key & Usage Rules
- If there is no OTT, meaning when accessing the checkout URL user has to do login otherwise user can directly go to the cashier page.
- Idempotent is controlled by Idempotent Key(merchantId+partnerReferenceNo)
- If Idempotent Key has been created and the key information is consistent, then Response code 2005400 (success) will be returned.
- If Idempotent Key has been created but the key information isn't consistent, then Response code 4045418 (inconsistent request) will be returned.
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)
X-SIGNATURE
string
RequiredSignature need to be generated with
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)
partnerReferenceNo
string
1 - 64 charactersRequiredUnique transaction identifier in partner system for each transaction.
Note: When retrying after a timeout or unexpected response, use the same partnerReferenceNo as in the original request
Note: When retrying after a timeout or unexpected response, use the same partnerReferenceNo as in the original request
merchantId
string
1 - 64 charactersRequiredMerchant identifier that is unique per each merchant
subMerchantId
string
1 - 32 charactersSub merchant identifier, known as externalDivisionId must be registered in the DANA system before use. To register a new externalDivisionId, use the Create Division API
amount
money
RequiredAmount. Contains two sub-fields:
1. Value: Transaction amount, including the cents
2. Currency: Currency code based on ISO
1. Value: Transaction amount, including the cents
2. 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
urlParams
array of json object
Notify URL that merchant must send the payment notification to
url
string
1 - 512 charactersRequiredURL link
type
string
1 - 32 charactersRequiredURL type with values:
•
•
•
NOTIFICATION: When finish payment, DANA will notify to the URL that has been defined by partner •
PAY_RETURN: After the payment, the user will be redirected to merchant pageisDeeplink
string
1 charactersRequiredDeeplink URL or not
externalStoreId
string
1 - 64 charactersStore identifier to indicate to which store this payment belongs to, known as externalShopId must be registered in the DANA system before use. To register a new externalShopId, use the Create Shop API
validUpTo
string
25 charactersThe time when the payment will be automatically expired, in format YYYY-MM-DDTHH:mm:ss+07:00.
Time must be in GMT+7 (Jakarta time)
Time must be in GMT+7 (Jakarta time)
pointOfInitiation
string
1 - 20 charactersUsed for getting more info regarding source of request of the user
disabledPayMethods
string
1 - 64 charactersPayment method(s) that cannot be used for this
payOptionDetails
array of json object
Payment option that will be used for this payment
payMethod
string
1 - 64 charactersRequiredPayment Method. e.g.
CREDIT_CARD. Refer to PayMethodEnumBALANCE
string
Payment method with balance
COUPON
string
Payment method with coupon
NET_BANKING
string
Payment method with internet banking
CREDIT_CARD
string
Payment method with credit card
DEBIT_CARD
string
Payment method with debit card
VIRTUAL_ACCOUNT
string
Payment method with virtual account
OTC
string
Payment method with OTC
DIRECT_DEBIT_CREDIT_CARD
string
Payment method with direct debit of credit card
DIRECT_DEBIT_DEBIT_CARD
string
Payment method with direct debit of debit card
ONLINE_CREDIT
string
Payment method with online credit
LOAN_CREDIT
string
Payment method with DANA Cicil
NETWORK_PAY
string
Payment method with e-wallet
payOption
string
1 - 64 charactersRequiredPayment option which shows the provider of this payment e.g.
CREDIT_CARD_VISAtransAmount
money
Trans amount. Contains two sub-fields:
1. Value: Transaction amount, including the cents
2. Currency: Currency code based on ISO
1. Value: Transaction amount, including the cents
2. 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
feeAmount
money
Fee amount. Contains two sub-fields:
1. Value: Transaction amount, including the cents
2. Currency: Currency code based on ISO
1. Value: Transaction amount, including the cents
2. 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
cardToken
string
1 - 64 charactersCard token used for this payment
merchantToken
string
1 - 64 charactersMerchant token used for this payment
additionalInfo
json object
Additional information
topupAndPay
boolean
Top up and pay
payerAccountNo
string
1 - 64 charactersNumber account of payer
saveCardAfterPay
boolean
Information save card after payment process
channelInfo
string
1 - 4096 charactersInformation of channel
issuingCountry
string
1 - 8 charactersInformation of issuing country
assetType
string
1 - 64 charactersType of asset
extendInfo
string
1 - 4096 charactersExtend information
additionalInfo
json object
Additional information
additionalInfo.supportDeepLinkCheckoutUrl
string
1 - 64 charactersAdditional information of deeplink checkout URL. For Mini Program, DANA will treat as
falseadditionalInfo.phoneNumber
string
1 - 64 charactersAdditional information of user's phone number
additionalInfo.publicUserId
string
1 - 64 charactersAdditional information of public user's identifier
additionalInfo.productCode
string
1 - 32 charactersRequiredAdditional information of product code
additionalInfo.order.buyer
json object
Additional information of buyer
userId
string
1 - 32 charactersDANA's user identifier
externalUserId
string
1 - 32 charactersConditionalExternal user identifier
Conditional Info
Y:= externalUserType is filled
externalUserType
string
1 - 32 charactersConditionalType of external user
Conditional Info
Y:= externalUserId is filled
nickname
string
1 - 64 charactersNickname, user's nick name in DANA's
additionalInfo.order.seller
json object
Additional information of seller
userId
string
1 - 32 charactersDANA's user identifier
externalUserId
string
1 - 32 charactersConditionalExternal user identifier
Conditional Info
Y:= externalUserType is filled
externalUserType
string
1 - 32 charactersConditionalType of external user
Conditional Info
Y:= externalUserId is filled
nickname
string
1 - 64 charactersNickname, user's nick name in DANA's
additionalInfo.order.orderTitle
string
1 - 64 charactersRequiredAdditional information of order title
additionalInfo.order.merchantTransType
string
1 - 64 charactersAdditional information of merchant transaction type
additionalInfo.order.orderMemo
string
1 - 64 charactersAdditional information of order memo
additionalInfo.order.createdTime
string
25 charactersAdditional information of created time, in format YYYY-MM-DDTHH:mm:ss+07:00.
Time must be in GMT+7 (Jakarta time)
Time must be in GMT+7 (Jakarta time)
additionalInfo.order.goods
array of json object
Additional information of goods
unit
string
1 - 64 charactersGoods unit
category
string
1 - 64 charactersRequiredGoods category
price
money
RequiredGoods price. Contains two sub-fields:
1. Value: Transaction amount, including the cents
2. Currency: Currency code based on ISO
1. Value: Transaction amount, including the cents
2. 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
merchantShippingId
string
1 - 64 charactersShipment identifier provided by merchant
merchantGoodsId
string
1 - 64 charactersRequiredGoods identifier provided by merchant
description
string
1 - 1024 charactersRequiredGoods description
snapshotUrl
string
1 - 512 charactersThe URL of good's snapshot web page
quantity
string
1 - 16 charactersRequiredCount of items
extendInfo
string
1 - 4096 charactersExtend information
additionalInfo.order.shippingInfo
array of json object
Additional information of shipping
chargeAmount
money
Charge amount. Contains two sub-fields:
1. Value: Transaction amount, including the cents
2. Currency: Currency code based on ISO
1. Value: Transaction amount, including the cents
2. 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
lastName
string
1 - 64 charactersRequiredLast name
trackingNo
string
1 - 64 charactersNumber of tracking
countryName
string
1 - 64 charactersRequiredName of country
merchantShippingId
string
1 - 64 charactersRequiredMerchant shipping identifier
cityName
string
1 - 64 charactersRequiredName of city
address1
string
1 - 256 charactersRequiredInformation of address 1
address2
string
1 - 256 charactersInformation of address 2
phoneNo
string
1 - 32 charactersPhone number
areaName
string
1 - 64 charactersName of area
email
string
1 - 128 charactersEmail
zipCode
string
1 - 32 charactersRequiredZip code
stateName
string
1 - 64 charactersRequiredName of state
faxNo
string
1 - 32 charactersFax number
carrier
string
1 - 64 charactersInformation of carrier
firstName
string
1 - 64 charactersRequiredFirst name
mobileNo
string
1 - 32 charactersMobile number
additionalInfo.order.extendInfo
string
1 - 4096 charactersAdditional information of extend
additionalInfo.mcc
string
1 - 64 charactersRequiredAdditional information of merchant category code. This parameter is used to identify the type of business in which a merchant is engaged. Refer to Details of Merchant Category Code
additionalInfo.envInfo
json object
RequiredAdditional information of environment
sessionId
string
1 - 128 charactersSession identifier
tokenId
string
1 - 128 charactersToken identifier
websiteLanguage
string
1 - 16 charactersWebsite language
clientIp
string
1 - 32 charactersClient IP address
osType
string
1 - 128 charactersOperating system type
appVersion
string
1 - 128 charactersApp version
sdkVersion
string
1 - 128 charactersSDK version
sourcePlatform
string
1 - 32 charactersRequiredSource platform, refer to SourcePlatformEnum
IPG
string
The source platform is independent payment gateway
orderTerminalType
string
1 - 32 charactersRequiredOrder terminal type, refer to OrderTerminalTypeEnum
APP
string
Mobile Application
WEB
string
Browser Web
WAP
string
Mobile Wap
SYSTEM
string
System Call
terminalType
string
1 - 32 charactersRequiredTerminal type, refer to TerminalTypeEnum
APP
string
Mobile Application
WEB
string
Browser Web
WAP
string
Mobile Wap
SYSTEM
string
System Call
orderOsType
string
1 - 128 charactersOrder operating system type
merchantAppVersion
string
1 - 128 charactersMerchant App version
extendInfo
string
1 - 4096 charactersExtend information
additionalInfo.extendInfo
string
1 - 4096 charactersAdditional information of extend
POST .../rest/redirection/v1.0/debit/payment-host-to-host HTTP/1.2
Content-type: application/json
X-TIMESTAMP: 2020-12-23T08:31:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
CHANNEL-ID: 95221
{
"partnerReferenceNo": "2020102900000000000001",
"merchantId": "23489182303312",
"subMerchantId": "310928924949487",
"amount": {
"value": "12345678.00",
"currency": "IDR"
},
"urlParams": [{
"url": "https://test.bi.go.id/v1/test",
"type": "PAY_RETURN",
"isDeeplink": "Y"
}],
"externalStoreId": "239840198240795109",
"validUpTo": "2020-12-23T07:44:11+07:00",
"pointOfInitiation": "Mobile App",
"disabledPayMethods": "CREDIT_CARD",
"payOptionDetails": [{
"payMethod": "CREDIT_CARD",
"payOption": "CREDIT_CARD_VISA",
"transAmount": {
"value": "12345678.00",
"currency": "IDR"
},
"feeAmount": {
"value": "12345678.00",
"currency": "IDR"
},
"cardToken": "d89ca90ua90sd80as9809",
"merchantToken": "a90ua90sd80d89cas9809",
"additionalInfo": {
"topupAndPay": "true",
"payerAccountNo": "20050000000001503276",
"saveCardAfterPay": "true",
"channelInfo": "{\"key\" : \"value\" }",
"issuingCountry": "IN",
"assetType": "true",
"extendInfo": "{ \"key\" : \"value\" }"
}
}],
"additionalInfo": {
"supportDeepLinkCheckoutUrl": true,
"phoneNumber": "",
"publicUserId": "",
"productCode": "51051000100000000001",
"order": {
"buyer": {
"externalUserType": "",
"nickname": "",
"externalUserId": "",
"userId": ""
},
"seller": {
"externalUserType": "",
"nickname": "mike",
"externalUserId": "",
"userId": "216610000000010034501"
},
"orderTitle": "Women Summer Dress New White Lace Sleeveless Cute Casual Summer Dresses Vestidos roupas femininas WQW1045",
"merchantTransType": "type",
"orderMemo": "Memo",
"createdTime": "2020-12-23T08:31:11+07:00",
"goods": [{
"unit": "Kg",
"category": "travelling/subway",
"price": {
"value": "10.00",
"currency": "IDR"
},
"merchantShippingId": "564314314574327545",
"merchantGoodsId": "24525635625623",
"description": "Women Summer Dress New White Lace Sleeveless Cute Casual Summer Dresses Vestidos roupas femininas WQW1045",
"snapshotUrl": "[http://snap.url.com]",
"quantity": "",
"extendInfo": ""
}],
"shippingInfo": [{
"chargeAmount": {
"value": "20.00",
"currency": "IDR"
},
"lastName": "Li",
"trackingNo": "646431431322332133",
"countryName": "JP",
"merchantShippingId": "564314314574327545",
"cityName": "Atlanta",
"address1": "137 W San Bernardino",
"address2": "4114 Sepulveda",
"phoneNo": "2423-2322342",
"areaName": "Rd",
"email": "abc@gmail.com",
"zipCode": "310001",
"stateName": "GA",
"faxNo": "2123-11113",
"carrier": "Federal Express",
"firstName": "Jim",
"mobileNo": "13765443223"
}],
"extendInfo": ""
},
"mcc": "5732",
"envInfo": {
"sessionId": "8EU6mLl5mUpUBgyRFT4v7DjfQ3fcauthcenter",
"tokenId": "a8d359d6-ca3d-4048-9295-bbea5f6715a6",
"websiteLanguage": "en_US",
"clientIp": "10.15.8.189",
"osType": "Windows.PC",
"appVersion": "1.0",
"sdkVersion": "1.0",
"sourcePlatform": "IPG",
"orderOsType": "IOS",
"merchantAppVersion": "1.0",
"terminalType": "SYSTEM",
"orderTerminalType": "WEB",
"extendInfo": "{\"deviceId\":\"CV19A56370e8a00d54293aab8001e4794\"}"
},
"extendInfo": ""
}
}
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
referenceNo
string
1 - 64 charactersConditionalTransaction identifier on DANA system
Conditional Info
Y:= Successfully processed
partnerReferenceNo
string
1 - 64 charactersRequiredUnique transaction identifier in partner system for each transaction.
Note: When retrying after a timeout or unexpected response, use the same partnerReferenceNo as in the original request
Note: When retrying after a timeout or unexpected response, use the same partnerReferenceNo as in the original request
webRedirectUrl
string
1 - 2048 charactersConditionalDANA checkout URL
Conditional Info
Y:= Successfully processed
additionalInfo
json object
Additional information
Content-Type: application/json
X-TIMESTAMP: 2020-12-23T08:31:11+07:00
{
"responseCode": "2005400",
"responseMessage": "Successful",
"referenceNo": "2020102977770000000009",
"partnerReferenceNo": "2020102900000000000001",
"webRedirectUrl": "https://pjsp.com/universal?bizNo=REF993883&...",
"additionalInfo":{}
}
| Response | Cause | Solution |
|---|---|---|
2005400Successful | Success to be processed | Mark Direct Debit Payment process as Success |
4005400Bad Request | General request failed error | Mark Direct Debit Payment process as Failed. Retry request with proper parameter |
4005401Invalid Field Format | Invalid format for certain field | Mark Direct Debit Payment process as Failed. Retry request with proper parameter |
4005402Invalid Mandatory Field | Missing or invalid format on mandatory field | Mark Direct Debit Payment process as Failed. Retry request with proper parameter |
4015400Unauthorized. [reason] | General unauthorized error | Mark Direct Debit Payment process as Failed. Retry request with proper parameter |
4035402Exceeds Transaction Amount Limit | Exceeds transaction amount limit | Mark Direct Debit Payment process as Failed. Try to adjust the order amount |
4035405Do Not Honor | Account or user status is abnormal | Mark Direct Debit Payment process as Failed. Retry request with proper parameter or can contact DANA to check the user/account status |
4035415Transaction Not Permitted.[reason] | Transaction not permitted | Mark Direct Debit Payment process as Failed. Retry request periodically or consult to DANA |
4045408Invalid Merchant | Merchant does not exist or status abnormal | Mark Direct Debit Payment process as Failed. Retry request with proper parameter |
4045418Inconsistent Request | Inconsistent request parameter found for the same partner reference number/transaction identifier | Mark Direct Debit Payment process as Failed. Retry with proper parameter |
4295400Too Many Requests | Maximum transaction limit exceeded | Mark Direct Debit Payment process as Pending. Retry request periodically by sending same request payload |
5005400General Error | General error non retry-able | Mark Direct Debit Payment process as Failed. Retry request periodically |
5005401Internal Server Error | Unknown internal server failure, please retry the process again | Mark Direct Debit Payment process as Pending. Retry request periodically by sending same request payload |
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) | Do a retry maximum 3 attempts by sending same request payload, if still fails mark Direct Debit Payment process as Pending |
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 Direct Debit Payment process as Pending
• If empty field/field does not exist, mark Direct Debit Payment process as Pending |