Skip to main content

Account Binding DANA

Flow

Registration Account Binding​

API ini digunakan oleh merchant untuk melakukan binding akun pengguna ke sistem penyelenggara pembayaran, seperti DANA. Merchant perlu mengirimkan nomor telepon pengguna dan metadata channel pembayaran yang digunakan. API ini akan mengembalikan referenceNo dan URL otorisasi untuk proses lanjutan.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-account-binding
  • Service Code: 07

Header Registration Account Binding​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓Jenis konten permintaanapplication/json
X-TIMESTAMPstring✓Timestamp dalam format ISO-86012025-05-05T13:57:57+07:00
X-SIGNATUREstring✓Signature terenkripsi, lihat bagian AuthenticationWDcJOiayTD1St7bhI+6...
X-PARTNER-IDstring✓ID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)✓ID permintaan unik dari merchant804346
CHANNEL-IDstring✓Nilai tetap DOITPAYDOITPAY
Authorizationstring✓Token akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Registration Account Binding​

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostring✓ID unik referensi transaksi dari merchant01JTFKSCPE94ERTKVVCBHK3PKG
phoneNostring✓Nomor telepon pelanggan+6287722728028
additionalInfoobject✓Metadata channel pembayaran, lihat tabel di bawah

additionalInfo​

ParameterTipeMandatoriKeteranganContoh
paymentChannelstring✓Channel pembayaran, misalnya DANA, OVO, dllDANA
paymentMethodstring✓Jenis metode pembayaran, misalnya EWALLET, VAEWALLET

Example Request​

{
"additionalInfo": {
"paymentChannel": "DANA",
"paymentMethod": "EWALLET"
},
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKG",
"phoneNo": "+6287722728028"
}

Response Body​

{
"responseCode": "2000700",
"responseMessage": "Successful",
"referenceNo": "01JTFKSD339DJJ9WDWNDFFNC63",
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKG",
"redirectUrl": "https://m.sandbox.dana.id/...",
"additionalInfo": {
"paymentMethod": "EWALLET",
"paymentChannel": "DANA",
"status": "PENDING",
"accountNo": "+6287722728028"
}
}

Response Code Table​

KodeKeterangan
2000700Berhasil membuat binding akun
4090700PartnerReferenceNo sudah digunakan
4000701Field tidak valid
4010700Signature tidak valid

Registration Account Inquiry​

API ini digunakan untuk melakukan pengecekan status hasil dari proses account binding. Endpoint ini menggunakan partnerReferenceNo sebagai identifikasi unik terhadap request binding yang telah dikirim sebelumnya.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-account-inquiry
  • Service Code: 08

Header Registration Account Inquiry​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓Jenis konten permintaanapplication/json
X-TIMESTAMPstring✓Timestamp dalam format ISO-86012025-05-05T14:06:20+07:00
X-SIGNATUREstring✓Signature terenkripsi, lihat bagian AuthenticationEuMVu75OKfVcIQcy67k5wcqWAHMqniEc/...
X-PARTNER-IDstring✓ID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)✓ID permintaan unik dari merchant166140
CHANNEL-IDstring✓Nilai tetap DOITPAYDOITPAY
Authorizationstring✓Token akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Registration Account Inquiry​

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostring✓ID unik referensi transaksi dari merchant saat proses binding01JTFM51FR3Y130R3G1AGMAE8E

Example Request​

{
"partnerReferenceNo": "01JTFM51FR3Y130R3G1AGMAE8E"
}

Response Body​

{
"responseCode": "2000800",
"responseMessage": "Successful",
"referenceNo": "01JTFM51KRJJDCE6GDFZQ6JYZQ",
"partnerReferenceNo": "01JTFM51FR3Y130R3G1AGMAE8E",
"accountCurrency": "IDR",
"additionalInfo": {
"paymentMethod": "EWALLET",
"paymentChannel": "DANA",
"status": "NEED_APPLY_TOKEN",
"accountNo": "+6287722728028",
"authCode": "MBntChzFOrBtZSSsd7wpgJ8yF8QQiofJBLJB7700"
}
}

Response Code Table​

KodeKeterangan
2000800Inquiry berhasil
4040800Data tidak ditemukan
4000801Field tidak valid
4010800Signature atau token tidak sah

Access Token (B2B2C)​

API ini digunakan untuk mendapatkan token akses (access token) dan token refresh untuk melakukan proses otorisasi transaksi Debit Card setelah pengguna melakukan binding dan mendapatkan authCode.

  • Method: POST
  • Type: application/json
  • Path: /auth/v1.0/access-token/b2b2c
  • Service Code: 74

Header Access Token​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓Jenis konten permintaanapplication/json
X-TIMESTAMPstring✓Timestamp dalam format ISO-86012025-05-05T14:08:31+07:00
X-SIGNATUREstring✓Signature terenkripsi, lihat bagian AuthenticationDhSIDkF6gHFkzbdx...
X-CLIENT-KEYstring✓Client key dari Doitpay01J20VM8W11EP9M6KBHHJZMHPW

Request Body Access Token​

ParameterTipeMandatoriKeteranganContoh
authCodestring✓Kode otorisasi yang didapat dari proses binding accountMBntChzFOrBtZSSsd7wpgJ8yF8QQ...
grantTypestring✓Jenis grant yang digunakan (authorization_code atau refresh_token)authorization_code
refreshTokenstring✗Token refresh jika grantType = refresh_token
additionalInfoobject✗Tambahan informasi jika diperlukan

Example Request​

{
"additionalInfo": {},
"authCode": "MBntChzFOrBtZSSsd7wpgJ8yF8QQiofJBLJB7700",
"grantType": "authorization_code",
"refreshToken": ""
}

Response Body​

{
"responseCode": "2007400",
"responseMessage": "Successful",
"accessToken": "<access_token_jwt>",
"tokenType": "BearerToken",
"accessTokenExpiryTime": "1296000",
"refreshToken": "<refresh_token_jwt>",
"refreshTokenExpiryTime": "5184000",
"additionalInfo": null
}

Response Code Table​

KodeKeterangan
2007400Token berhasil dibuat
4007401Format field salah
4017400AuthCode tidak valid atau expired
4017401Signature/token tidak valid
5007400Error sistem internal

Account Unbinding​

API ini digunakan untuk melakukan unbinding akun pengguna ke sistem penyelenggara pembayaran, seperti DANA. Merchant perlu mengirimkan access token yang telah terdaftar saat binding sebelumnya.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-account-unbinding
  • Service Code: 09

Header Account Unbinding​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓Jenis konten permintaanapplication/json
X-TIMESTAMPstring✓Timestamp dalam format ISO-86012025-05-05T14:06:20+07:00
X-SIGNATUREstring✓Signature terenkripsi, lihat bagian AuthenticationEuMVu75OKfVcIQcy67k5wcqWAHMqniEc/...
X-PARTNER-IDstring✓ID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)✓ID permintaan unik dari merchant166140
CHANNEL-IDstring✓Nilai tetap DOITPAYDOITPAY
Authorizationstring✓Token akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Account Unbinding​

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostring✓ID unik referensi transaksi dari merchant saat proses binding01JTFM51FR3Y130R3G1AGMAE8E

Example Request​

{
"partnerReferenceNo": "01JTFM51FR3Y130R3G1AGMAE8E"
}

Response Body​

{
"responseCode": "2000900",
"responseMessage": "Successful",
"referenceNo": "01JTFM51KRJJDCE6GDFZQ6JYZQ",
"partnerReferenceNo": "01JTFM51FR3Y130R3G1AGMAE8E",
"accountCurrency": "IDR",
"additionalInfo": {
"paymentMethod": "EWALLET",
"paymentChannel": "DANA",
"status": "UNBOUND",
"accountNo": "+6287722728028"
}
}

Response Code Table​

KodeKeterangan
2000900Unbinding berhasil
4040900Data tidak ditemukan
4000901Field tidak valid
4010900Signature atau token tidak sah

Balance Inquiry​

API ini digunakan oleh merchant untuk mengetahui saldo terkini pengguna berdasarkan akun yang telah dibinding. Permintaan ini memerlukan access token pelanggan yang valid.

  • Method: POST
  • Path: /api/v1.0/debit/balance-inquiry
  • Content-Type: application/json
  • Service Code: 11

Header Balance Inquiry​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓Jenis konten permintaanapplication/json
X-TIMESTAMPstring✓Timestamp dalam format ISO-86012025-05-05T14:27:43+07:00
X-SIGNATUREstring✓Signature terenkripsi, lihat bagian Authenticationi+4/6rjYpkBrq7Nh...
X-PARTNER-IDstring✓ID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)✓ID permintaan unik dari merchant277049
CHANNEL-IDstring✓Nilai tetap DOITPAYDOITPAY
Authorizationstring✓Bearer token milik merchantBearer eyJhbGc...
Authorization-Customerstring✓Bearer token milik customer (access token hasil binding)Bearer eyJhbGc...

Request Body Balance Inquiry​

ParameterTipeMandatoriKeteranganContoh
accessTokenstring✓Token akses pelanggan (customer access token)eyJh...
paymentChannelstring✓Channel pembayaran, misalnya DANADANA
paymentMethodstring✓Jenis metode pembayaran, misalnya EWALLETEWALLET

Example Request​

{
"additionalInfo": {
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"paymentChannel": "DANA",
"paymentMethod": "EWALLET"
}
}

Response Body​

{
"responseCode": "2001100",
"responseMessage": "Successful",
"balance": {
"amount": "977000.00",
"type": "Available Balance"
},
"additionalInfo": {
"accountNo": "+6287722728028",
"paymentMethod": "EWALLET",
"paymentChannel": "DANA"
}
}

Response Field Description​

ParameterTipeKeterangan
responseCodestringKode hasil response dari sistem
responseMessagestringPenjelasan dari responseCode
balanceobjectData saldo pengguna
additionalInfoobjectMetadata tambahan terkait akun

balance​

ParameterTipeKeteranganContoh
amountstringJumlah saldo dalam IDR977000.00
typestringTipe saldo (misal: Available)Available Balance

additionalInfo​

ParameterTipeKeterangan
accountNostringNomor akun pelanggan
paymentMethodstringJenis metode pembayaran
paymentChannelstringChannel pembayaran

Response Code Table​

KodeKeterangan
2001100Balance inquiry berhasil
4001101Format permintaan tidak valid
4011100Token akses tidak sah
4031100Akses ditolak, customer belum terdaftar
5001100Kesalahan sistem internal

Debit Payment Host-to-Host​

API ini digunakan untuk melakukan permintaan pembayaran langsung dari merchant ke penyelenggara (contoh: DANA) secara host-to-host. Diperlukan access token pengguna dan informasi pembayaran.

  • Method: POST
  • Path: /api/v1.0/debit/payment-host-to-host
  • Content-Type: application/json
  • Service Code: 54

Header Payment Host-to-Host​

ParameterTipeMandatoriKeterangan
Content-Typestring✓application/json
X-TIMESTAMPstring✓Timestamp format ISO-8601
X-SIGNATUREstring✓Signature terenkripsi
X-PARTNER-IDstring✓Partner ID dari dashboard Doitpay
X-EXTERNAL-IDstring✓ID unik permintaan
CHANNEL-IDstring✓DOITPAY
Authorizationstring✓Bearer token merchant
Authorization-Customerstring✓Bearer token customer (hasil binding access token)

Request Body Payment Host-to-Host​

{
"additionalInfo": {
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"channel": "DANA",
"customerEmail": "[email protected]",
"customerName": "Andika",
"customerPhone": "+6287722728028"
},
"amount": {
"currency": "IDR",
"value": "13000.00"
},
"partnerReferenceNo": "01JTFNSMTWYMTH49S90VM02WBP",
"urlParam": [
{
"isDeeplink": "N",
"type": "PAY_NOTIFY",
"url": "https://andikawhy.free.beeceptor.com/debit card"
},
{
"isDeeplink": "N",
"type": "PAY_RETURN",
"url": "https://doitpay.co"
}
],
"validUpTo": "2025-05-05T15:03:02+07:00"
}

Response Body​

{
"responseCode": "2005400",
"responseMessage": "Successful",
"partnerReferenceNo": "01JTFNSMTWYMTH49S90VM02WBP",
"appRedirectUrl": "",
"webRedirectUrl": "https://m.sandbox.dana.id/n/cashier/new/checkout?...",
"additionalInfo": {
"originalReferenceNo": "01JTFNSMYWZFMMM10NB2F4PESG",
"channelCode": "DANA"
}
}

Response Field Description​

ParameterTipeKeterangan
responseCodestringKode hasil response dari sistem
responseMessagestringPesan respon
partnerReferenceNostringID transaksi yang dikirimkan merchant
appRedirectUrlstringURL redirect ke aplikasi
webRedirectUrlstringURL redirect ke halaman web pembayaran
additionalInfoobjectMetadata tambahan

additionalInfo​

ParameterTipeKeterangan
originalReferenceNostringReferensi transaksi sebelumnya
channelCodestringChannel kode pembayaran

Response Code Table​

KodeKeterangan
2005400Permintaan debit berhasil diproses
4005401Format request tidak valid
4015400Token akses tidak valid atau kadaluarsa
5005400Kesalahan sistem internal

Check Payment Status Debit Card​

API Check Payment Status Debit Card adalah layanan API yang dapat digunakan oleh Merchant untuk mengetahui status pembayaran dari Debit Card menggunakan ID transaksi.

  • Method: POST
  • Type:application/json
  • Path: /api/v1.0/debit/status
  • Service Code: 55

Header Check Payment​

ParameterTipeMandatoriKeteranganContoh
Content-Typestring✓string yang menunjukkan jenis media.application/json
X-TIMESTAMPstring✓ISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstring✓Lihat bagian symmetric signature
X-PARTNER-IDstring✓Merchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)✓Request ID yang unik.
CHANNEL-IDstring✓Nilai seharusnya DOITPAY
Authorizationstring✓Otentikasi dengan bearer token ,Lihat pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Check Payment​

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostring✓Referensi transaksi asliORDER12345678 9
additionalInfoobject✓Informasi tambahan queryLihat additionalInfo

additionalInfo Check Payment​

ParameterTipeKeteranganContoh
originalReferenceNostringNomor referensi paymentEW123456789
channelCodestringKode kanal paymentDANA

Example Check Payment​

{
"originalPartnerReferenceNo": "ORDER123456789",
"additionalInfo": {
"originalReferenceNo": "EW123456789",
"channelCode": "DANA"
}
}

Response Body Check Payment​

ParameterTipeKeteranganContoh
responseCodestringKode respons API2005500
responseMessagestringDeskripsi responsSuccessful
originalPartnerReferenceNostringReferensi transaksi asliORDER123456789
serviceCodestringKode tipe layanan untuk service yang digunakan, untuk debit card diisi 5454
latestTransactionStatusstringStatus transaksi terkini00
additionalInfoobjectInformasi tambahan responsLihat additionalInfo

amount Response Body Check Payment​

ParameterTipeKeteranganContoh
valuestringISO4217 dengan 2 desimal1000.00
currencystringKode mata uang, hanya menerima IDR.IDR

additionalInfo Response Body Check Payment​

ParameterTipeKeteranganContoh
originalReferenceNostringNomor referensi paymentEW123456789

Debit Card Payment Notification (callback)​

  • Method: POST
  • Type:application/json
  • Path: https://yourdomain.com/v1.0/debit/notify
  • Service Code: 56

Symmetric Signature Payment Notification​

Saat menerima notifikasi pembayaran, API anda perlu melakukan validasi signature untuk menjamin proses keamanan data. Berikut penjelasannya:

Formula :

stringToSign = HttpMethod + “:” + Endpoint + “:” + MerchantRef + “:” +
LowerCase(HexEncode(SHA-256(Minify(RequestBody)))) + “:” + Timestamp
hash = HMAC_SHA512(stringToSign, secretKey)

Buatlah sebuah variabel stringToSign.

  1. HttpMethod adalah string nama metode yang sedang digunakan. Bisa saja POST, PUT, atau DELETE.

  2. Endpoint adalah relative URL atau full path URL yang mana tanpa host atau domainnya.

  3. MerchantRef adalah nilai token yang Anda dapatkan dari Merchant Reference.

  4. RequestBody adalah payload yang ingin Anda kirim.

  5. Timestamp menggunakan ISO-8601.

  6. secretKey adalah Merchant Reference.

Hash stringToSign menggunakan HMAC_SHA512 cryptographic dan secret key (nama lain saat ini adalah API key). Kemudian, encode dengan Base 64.

Masukkan nilainya ke X-SIGNATURE.

Header Payment Notification​

ParameterTipeMandatoriKeteranganContoh
X-TIMESTAMPstring✓ISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstring✓Lihat Symmetric Signature Payment Notification
X-PARTNER-IDstring✓Merchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)✓Request ID yang unik.
CHANNEL-IDstring✓

Request Body Payment Notification​

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostring✓Referensi transaksi asliORDER123456789
originalReferenceNostring✓Nomor referensi paymentEW123456789
latestTransactionStatusstring✓Status akhir transaksi00
amountobject✓Detail jumlah transaksiLihat amount
additionalInfoobject✓Informasi tambahan notifikasiLihat additionalInfo

amount Request Body Payment Notification​

ParameterTipeKeteranganContoh
valuestringISO4217 dengan 2 desimal. Menunjukkan nominal pembayaran.1000.00
currencystringKode mata uang, hanya menerima IDR.IDR

additionalInfo Request Body Payment Notification​

ParameterTipeKeteranganContoh
channelCodestringKode kanal paymentDANA

Response Body​

ParameterTipeKeteranganContoh
responseCodestringKode response, lihat bagian daftar Response Code di bawah2005600
responseMessagestringPenjelasan terhadap response code yang diterimaSuccessful

Response Code Payment Notification​

KodeKeterangan
200XX00Berhasil membuat request. Dimana XX adalah service code untuk setiap API Debit Card.
409XX00Conflict external ID saat membuat debit card. Dimana XX adalah service code untuk setiap API Debit Card.
400XX01Invalid field format. Dimana XX adalah service code untuk setiap API Debit Card.
400XX02Missing mandatory field. Dimana XX adalah service code untuk setiap API Debit Card.
401XX00Unauthorized Signature. Dimana XX adalah service code untuk setiap API Debit Card.
401XX01Invalid Access Token. Dimana XX adalah service code untuk setiap API Debit Card.
500XX00Terjadi kesalahan sistem di doitpay, mohon dibantu menghubungi doitpay untuk mendapatkan detail. Dimana XX adalah service code untuk setiap API Debit Card