Skip to main content

Transfer to Bank

POST/v1.0/emoney/transfer-bank.htm

This API is used for merchant to do transfer to Bank request via DANA.

API Type
SNAP API
Expected Timeout
8 second
SNAP Service Code
43
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
Authorization-Customer
string
1 - 512 charactersConditional
  • Contains customer token, which has been obtained from binding process
  • If request is coming from user interaction, this field is mandatory. If not, just filled customerNumber
Conditional Info
Y:= customerNumber is not exist
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
X-IP-ADDRESS
string
15 characters
IP address of the end user (customer) using IPv4 format
X-DEVICE-ID
string
1 - 400 charactersConditional
Device identification on which the API services is currently being accessed by the end user (customer)
Sample:
  • Web Application:
    • Mozilla / 5.0 (Windows NT 10.0; Win64; x64)
    • AppleWebKit / 537.36 (KHTML, like Gecko)
    • Chrome / 75.0.3770.100
    • Safari / 537.36 OPR / 62.0.3331.99
  • Mobile Application:
    • Android: android-20013adf6cdd8123f
    • iOS: 72635bdfd223yvjm7246nsdj34hd455 9393kjh42
Conditional Info
Y:= Authorization Customer is exist
CHANNEL-ID
string
1 - 5 charactersRequired
Device identification on which the API services is currently being accessed by the end user (customer)

partnerReferenceNo
string
1 - 64 charactersRequired
Unique 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

customerNumber
string
1 - 32 characters
Customer account number, in format 628xxx
accountType
string
1 - 32 charactersRequired
Customer account type
beneficiaryAccountNumber
string
1 - 32 charactersRequired
Beneficiary’s account number
beneficiaryBankCode
string
1 - 8 charactersRequired
Beneficiary’s Bank identifier code
amount
money
Required
Amount. Contains two sub-fields:
  1. Value: Transaction amount, including the cents
  2. Currency: Currency code based on ISO, always has value: IDR
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
additionalInfo
json object
Additional information
additionalInfo.fundType
string
1 - 64 charactersRequired
Additional information of top up fund type, value always MERCHANT_WITHDRAW_FOR_CORPORATE
additionalInfo.externalDivisionId
string
1 - 64 characters
Additional information of external division identifier.
(fundType: MERCHANT_WITHDRAW_FOR_CORPORATE)
Note

It is generally optional, but becomes mandatory if the additionalInfo.chargeTarget value is set to DIVISION.

additionalInfo.chargeTarget
string
1 - 64 characters
Additional information of charge target. The values are:
  • null
  • DIVISION
  • MERCHANT
Note

If the value is DIVISION, externalDivisionId will be Mandatory

additionalInfo.needNotify
boolean
Additional information of flag result notification on transaction completed (result sync/async)
additionalInfo.subScenario
string
1 - 64 charactersConditional
Additional information of sub scenario, value always GLOBAL_REMITTANCE
Conditional Info
Y:= Cross border remittance scenario
additionalInfo.beneficiaryAccountName
string
1 - 128 characters
Additional information of beneficiary account name for validation purpose
additionalInfo.extendInfo
json object
1 - 4096 characters
Additional information of extend
additionalInfo.extendInfo.instructedAmountType
string
1 - 64 characters
Additional information of type of instructed amount
additionalInfo.extendInfo.payerPaymentMethod
json object
Required
Additional information of method of payer payment
walletDetail
json object
Conditional
Information details of cash/wallet
Conditional Info
Y:= paymentMethodType=CASH/WALLET
walletName
string
1 - 128 charactersRequired
Wallet name
customerId
string
1 - 64 charactersRequired
Customer unique identifier assigned by participant
customerName
json object
Information details of customer name
customerName.firstName
string
1 - 32 characters
Customer’s first name
customerName.lastName
string
1 - 32 characters
Customer’s last name
customerName.fullName
string
1 - 128 charactersRequired
Customer’s full name
customerName.middleName
string
1 - 32 characters
Customer’s middle name
paymentMethodType
string
1 - 32 charactersRequired
Payer’s type of payment method, which has values:
  • WALLET
  • BANK
  • CASH
sourceOfFund
string
1 - 32 characters
Fund source, which has values:
  • SALARY
  • BUSSINESS
  • UNKNOWN
bankDetail
json object
Conditional
Information details of Bank/cash
Conditional Info
Y:= paymentMethodType=BANK
accountType
string
1 - 32 characters
Type of account
accountNo
string
1 - 64 charactersConditional
Account number
Conditional Info
Y:= paymentMethodType=BANK
accountName
string
1 - 128 characters
Account name
bankName
string
1 - 128 charactersConditional
Bank name
Conditional Info
Y:= paymentMethodType=BANK
officeOpeningAccount
string
1 - 128 characters
The Bank of account opening
swiftCode
string
1 - 16 charactersConditional
Bank identifier code for cross-border financial transactions
Conditional Info
Y:= paymentMethodType=BANK
currency
string
1 - 3 characters
Currency, always has value: IDR
iban
string
1 - 64 characters
An international Bank account code to identify offshore bank accounts
additionalInfo.extendInfo.bizSceneType
string
1 - 64 characters
Additional information of type of Bizscene
additionalInfo.extendInfo.transferToAmount
money
Additional information of transfer to amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO, always has value: IDR
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
additionalInfo.extendInfo.transferFromAmount
money
Additional information of transfer from amount. Contains two sub-fields:
  1. Value: Amount, including the cents
  2. Currency: Currency code based on ISO, always has value: IDR
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
additionalInfo.extendInfo.additionalTransferDetails
json object
Additional information of transfer details
beneficiary
json object
Required
Beneficiary user information
nationality
string
2 characters
Code of nationality. Refer to ISO-3166 country/region code. Always has value: ID (Indonesia)
userName
json object
Information details of user name
userName.firstName
string
1 - 32 characters
User’s first name
userName.lastName
string
1 - 32 characters
User’s last name
userName.fullName
string
1 - 128 charactersRequired
User’s full name
userName.middleName
string
1 - 32 characters
User’s middle name
transferPurpose
string
1 - 32 characters
Type of transfer purpose, such as:
  • FAMILY_SUPPORT
  • SALARY
  • EDUCATION
  • OTHER
transferFromRegion
string
2 charactersRequired
Payer’s country or region. Refer to ISO-3166 country/region code
payer
json object
Required
Information details of payer
userAddress
json object
Required
Information detail of user address
userAddress.zipCode
string
1 - 32 characters
ZIP or postal code of user
userAddress.city
string
1 - 32 charactersRequired
City, district, suburb, town, or village
userAddress.address2
string
1 - 256 characters
Address line 2
userAddress.address1
string
1 - 256 characters
Address line 1
userAddress.region
string
2 charactersRequired
Code of region. Refer to ISO-3166 country/region code
userAddress.province
string
1 - 32 characters
User’s address province
userAddress.district
string
1 - 32 characters
User’s address district
nationality
string
2 characters
Payer’s nationality code. Refer to ISO-3166 country/region code
certificate
json object
Information details of certificate
certificate.certificateNo
string
1 - 64 charactersRequired
Payer’s identity certificate number, if not available, can use the passport
certificate.certificateType
string
1 - 32 characters
Type of certificate, which has values:
  • ID_CARD
  • Passport
certificate.certificateIssuingCountry
string
1 - 2 characters
Payer's certificate issuance country. Refer to ISO-3166 country/region code
userName
json object
Information details of user name
userName.firstName
string
1 - 32 characters
User’s first name
userName.lastName
string
1 - 32 characters
User’s last name
userName.fullName
string
1 - 128 charactersRequired
User’s full name
userName.middleName
string
1 - 32 characters
User’s middle name
userId
string
1 - 64 characters
Unique user identifier
birthDate
string
1 - 8 characters
Date of birth. Formatted in YYYYMMDD
title
string
1 - 8 characters
User’s title, which has values:
  • MR
  • MRS
  • MS
gender
string
1 - 16 characters
User’s gender, which has values:
  • MALE
  • FEMALE
birthPlace
string
1 - 64 characters
Payer’s birthplace
politicalExposedPerson
string
1 characters
A Politically Exposed Person (PEP) options, which has values:
  • Y
  • N
occupation
string
1 - 64 characters
Payer’s occupation
userPhoneNo
string
1 - 32 charactersRequired
Payer’s contact number
userPhoneAreaCode
string
1 - 8 characters
Payer’s phone area code
userPhoneExtension
string
1 - 8 characters
Payer’s phone extension
email
string
1 - 128 characters
Payer’s email
transferToRegion
string
2 charactersRequired
Beneficiary’s country or region. Refer to ISO-3166 country/region code. Always has value: ID (Indonesia)
additionalInfo.accessToken
string
1 - 512 charactersConditional
  • Contains customer token, which has been obtained from binding process
  • If request is coming from user interaction, this field is mandatory. If not, just filled customerNumber
Conditional Info
Y:= customerNumber is not exist
Payment Method is Wallet
POST .../v1.0/emoney/transfer-bank.htm HTTP/1.2
Content-type: application/json
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a
Authorization-Customer: Bearer fa8sjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a
X-TIMESTAMP: 2020-12-21T17:07:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
X-IP-ADDRESS: 172.24.281.24
X-DEVICE-ID: 09864ADCASA
CHANNEL-ID: 95221
{
"partnerReferenceNo": "2020102900000000000001",
"customerNumber": "6281773628883",
"accountType": "SETTLEMENT_ACCOUNT",
"beneficiaryAccountNumber": "01234567890",
"beneficiaryBankCode": "002",
"amount":
{
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo":
{
"fundType": "MERCHANT_WITHDRAW_FOR_CORPORATE",
"externalDivisionId": "91080916Division",
"chargeTarget": "DIVISION",
"subScenario": "GLOBAL_REMITTANCE",
"beneficiaryAccountName": "Holder Name",
"extendInfo":
{
"payerPaymentMethod":
{
"walletDetail":
{
"walletName": "HK_WALLET",
"customerId": "123456789",
"customerName":
{
"firstName": "William",
"lastName": "Clinton",
"fullName": "William Jefferson Clinton",
"middleName": "Jefferson"
}
},
"paymentMethodType": "WALLET",
"sourceOfFund": ""
},
"instructedAmountType": "TRANSFER_TO",
"bizSceneType": "TRANSFER",
"transferToAmount":
{
"currency": "IDR",
"value": "5000000.00"
},
"transferFromAmount":
{
"currency": "USD",
"value": "70000.00"
},
"additionalTransferDetails":
{
"beneficiary":
{
"nationality": "ID",
"userName":
{
"firstName": "Patrick",
"lastName": "Star",
"fullName": "Patrick Star",
"middleName": ""
}
},
"transferPurpose": "FAMILY_SUPPORT",
"transferFromRegion": "KR",
"payer":
{
"userAddress":
{
"zipCode": "04072",
"city": "SEOUL",
"address2": "366-1. Hapjeong-dong",
"address1": "Mapo-gu, Seoul",
"region": "KR",
"province": "Seoul",
"district": "Mapo District"
},
"nationality": "CN",
"userPhoneNo": "01012345678",
"certificate":
{
"certificateNo": "11234578899",
"certificateType": "PASSPORT",
"certificateIssuingCountry": ""
},
"userName":
{
"firstName": "William",
"lastName": "Clinton",
"fullName": "William Jefferson Clinton",
"middleName": "Jefferson"
},
"userId": "123456789",
"birthDate": "20020604",
"title": "",
"gender": "",
"birthPlace": "",
"politicalExposedPerson": "",
"occupation": "",
"userPhoneAreaCode": "",
"userPhoneExtension": "",
"email": "williamjclinton@gmail.com"
},
"transferToRegion": "ID"
}
},
"accessToken" : "fa8sjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a"
}
}

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
referenceNo
string
1 - 64 charactersConditional
Transaction identifier on DANA system
Conditional Info
Y:= Successfully processed
partnerReferenceNo
string
1 - 64 charactersRequired
Unique 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

transactionDate
string
25 characters
Transaction date, in format YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time)
referenceNumber
string
1 - 64 charactersRequired
Reference number
additionalInfo
json object
Additional information
Content-type: application/json
X-TIMESTAMP: 2020-12-21T14:36:19+07:00
{
"responseCode": "2004300",
"responseMessage": "Successful",
"referenceNo": "2020102977770000000009",
"partnerReferenceNo": "2020102900000000000001",
"transactionDate": "2020-12-21T17:48:41+07:00",
"referenceNumber": "2020102977770000000009",
"additionalInfo": {
}
}

ResponseCauseSolution
2004300Successful
Success to be processed
Mark Transfer to Bank process as Success
2024300Request In Progress
Transaction is on process
Mark Transfer to Bank process as Pending. Hold the money and wait notify
4004300Bad Request
General request failed error
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4004301Invalid Field Format
Invalid format for certain field
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4004302Invalid Mandatory Field
Missing or invalid format on mandatory field
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4014300Unauthorized. [reason]
General unauthorized error
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4014301Invalid Token (B2B)
Authorization token are invalid, perhaps due to token expiry for B2B
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4014302Invalid Customer Token
Customer token are invalid, perhaps due to token expiry
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4014304Customer Token Not Found
Customer token not found in the system. This occurs on any API that requires token as input parameter
Mark Transfer to Bank process as Failed. Retry request with proper parameter
4034302Exceeds Transaction Amount Limit
Exceeds transaction amount limit
Mark Transfer to Bank process as Failed. Retry request with proper amount
4034303Suspected Fraud
Suspected fraud
Mark Transfer to Bank process as Failed. Contact DANA to check the user/account status
4034314Insufficient Funds
Insufficient funds
Mark Transfer to Bank process as Failed. Contact DANA to top up deposit balance
4034318Inactive Card/Account/Customer
Indicates inactive account
Mark Transfer to Bank process as Failed. Contact DANA to check merchant configuration
4034320Merchant Limit Exceed
Merchant aggregated purchase amount on that day exceeds the agreed limit
Mark Transfer to Bank process as Failed. Contact DANA to check merchant configuration
4044303Bank Not Supported By Switch
Bank not supported by switch
Mark Transfer to Bank process as Failed. Retry new Transfer to Bank process with different Bank target
4044311Invalid 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 Transfer to Bank process as Failed. Retry request with proper Bank account info
4044318Inconsistent Request
Inconsistent request parameter found for the same partner reference number/transaction identifier
Mark Transfer to Bank process as Success. Contact DANA to check status of Transfer to Bank process
4294300Too Many Requests
Maximum transaction limit exceeded
Mark Transfer to Bank process as Pending. Hold the money and retry request periodically
5004300General Error
General error non retry-able
Mark Transfer to Bank process as Failed. Retry new Transfer to Bank process
5004301Internal Server Error
Unknown internal server failure, please retry the process again
Mark Transfer to Bank process as Pending. Hold the money and retry request periodically
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, if still fails mark Transfer to Bank process as Pending and 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 Transfer to Bank process as Pending and hold the money
  • If empty field/field does not exist, mark Transfer to Bank process as Pending and 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.