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-TypestringJenis konten permintaanapplication/json
X-TIMESTAMPstringTimestamp dalam format ISO-86012025-05-05T13:57:57+07:00
X-SIGNATUREstringSignature terenkripsi, lihat bagian AuthenticationWDcJOiayTD1St7bhI+6...
X-PARTNER-IDstringID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)ID permintaan unik dari merchant804346
CHANNEL-IDstringNilai tetap DOITPAYDOITPAY
AuthorizationstringToken akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Registration Account Binding

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostringID unik referensi transaksi dari merchant01JTFKSCPE94ERTKVVCBHK3PKG
phoneNostringNomor telepon pelanggan+6287722728028
additionalInfoobjectMetadata channel pembayaran, lihat tabel di bawah

additionalInfo

ParameterTipeMandatoriKeteranganContoh
paymentChannelstringChannel pembayaran, misalnya DANA, OVO, dllDANA
paymentMethodstringJenis 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-TypestringJenis konten permintaanapplication/json
X-TIMESTAMPstringTimestamp dalam format ISO-86012025-05-05T14:06:20+07:00
X-SIGNATUREstringSignature terenkripsi, lihat bagian AuthenticationEuMVu75OKfVcIQcy67k5wcqWAHMqniEc/...
X-PARTNER-IDstringID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)ID permintaan unik dari merchant166140
CHANNEL-IDstringNilai tetap DOITPAYDOITPAY
AuthorizationstringToken akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Registration Account Inquiry

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostringID 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-TypestringJenis konten permintaanapplication/json
X-TIMESTAMPstringTimestamp dalam format ISO-86012025-05-05T14:08:31+07:00
X-SIGNATUREstringSignature terenkripsi, lihat bagian AuthenticationDhSIDkF6gHFkzbdx...
X-CLIENT-KEYstringClient key dari Doitpay01J20VM8W11EP9M6KBHHJZMHPW

Request Body Access Token

ParameterTipeMandatoriKeteranganContoh
authCodestringKode otorisasi yang didapat dari proses binding accountMBntChzFOrBtZSSsd7wpgJ8yF8QQ...
grantTypestringJenis grant yang digunakan (authorization_code atau refresh_token)authorization_code
refreshTokenstringToken refresh jika grantType = refresh_token
additionalInfoobjectTambahan 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-TypestringJenis konten permintaanapplication/json
X-TIMESTAMPstringTimestamp dalam format ISO-86012025-05-05T14:06:20+07:00
X-SIGNATUREstringSignature terenkripsi, lihat bagian AuthenticationEuMVu75OKfVcIQcy67k5wcqWAHMqniEc/...
X-PARTNER-IDstringID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)ID permintaan unik dari merchant166140
CHANNEL-IDstringNilai tetap DOITPAYDOITPAY
AuthorizationstringToken akses menggunakan format Bearer tokenBearer eyJhbGc...

Request Body Account Unbinding

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostringID 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-TypestringJenis konten permintaanapplication/json
X-TIMESTAMPstringTimestamp dalam format ISO-86012025-05-05T14:27:43+07:00
X-SIGNATUREstringSignature terenkripsi, lihat bagian Authenticationi+4/6rjYpkBrq7Nh...
X-PARTNER-IDstringID partner Doitpay01J20VM8TNRK9VBMGJAQDBSF8X
X-EXTERNAL-IDstring(64)ID permintaan unik dari merchant277049
CHANNEL-IDstringNilai tetap DOITPAYDOITPAY
AuthorizationstringBearer token milik merchantBearer eyJhbGc...
Authorization-CustomerstringBearer token milik customer (access token hasil binding)Bearer eyJhbGc...

Request Body Balance Inquiry

ParameterTipeMandatoriKeteranganContoh
accessTokenstringToken akses pelanggan (customer access token)eyJh...
paymentChannelstringChannel pembayaran, misalnya DANADANA
paymentMethodstringJenis 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-Typestringapplication/json
X-TIMESTAMPstringTimestamp format ISO-8601
X-SIGNATUREstringSignature terenkripsi
X-PARTNER-IDstringPartner ID dari dashboard Doitpay
X-EXTERNAL-IDstringID unik permintaan
CHANNEL-IDstringDOITPAY
AuthorizationstringBearer token merchant
Authorization-CustomerstringBearer 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-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstringNilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token ,Lihat pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Check Payment

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostringReferensi transaksi asliORDER12345678 9
additionalInfoobjectInformasi 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-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Symmetric Signature Payment Notification
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstring

Request Body Payment Notification

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostringReferensi transaksi asliORDER123456789
originalReferenceNostringNomor referensi paymentEW123456789
latestTransactionStatusstringStatus akhir transaksi00
amountobjectDetail jumlah transaksiLihat amount
additionalInfoobjectInformasi 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