Skip to main content

API Card Binding BTN

Registration Card Binding​

API ini digunakan oleh merchant untuk melakukan registrasi kartu pelanggan ke sistem penyelenggara pembayaran, seperti BTN. Merchant perlu mengirimkan data kartu yang terenkripsi untuk proses binding yang aman.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-card-bind
  • Service Code: 01

Header Registration Card 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 Card Binding​

ParameterTipeMandatoriKeteranganContoh
custIdMerchantstring✓ID unik referensi transaksi dari merchant01JTFKSCPE94ERTKVVCBHK3PKG
phoneNostring✓Nomor telepon pelanggan+6287722728028
cardDatastring✓Data kartu yang terenkripsiUIdFgZi9BhWx9Scbz/YK+...
additionalInfoobject✓Metadata channel pembayaran, lihat tabel di bawah

additionalInfo​

ParameterTipeMandatoriKeteranganContoh
paymentChannelstring✓Channel pembayaran, misalnya BTN, CIMBBTN
paymentMethodstring✓Jenis metode pembayaran BANKBANK

Example Request​

{
"custIdMerchant": "01JTFKSCPE94ERTKVVCBHK3PKG",
"phoneNo": "+6287722728028",
"cardData": "UIdFgZi9BhWx9Scbz/YK+JiMsPiKyhAFDaIRQe0wxMZY...",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN"
}
}

Response Body​

{
"responseCode": "2000100",
"responseMessage": "Successful",
"referenceNo": "01JTFKSD339DJJ9WDWNDFFNC63",
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKG",
"chargeToken": "abcd63617264746f6b656e",
"tokenExpiryTime": "2025-05-05T14:00:00+07:00",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN",
"authCode": "MBntChzFOrBtZSSsd7wpgJ8yF8QQiofJBLJB7700",
"status": "NEED_APPLY_TOKEN"
}
}

Card Binding Inquiry​

API ini digunakan untuk mengetahui status kartu yang sudah didaftarkan.

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

Request Body​

ParameterTipeMandatoriKeteranganContoh
custIdMerchantstring✓ID customer merchant8a95f0026d2860f301

Response Body​

{
"responseCode": "2000300",
"responseMessage": "Successful",
"referenceNo": "01JTFM51KRJJDCE6GDFZQ6JYZQ",
"partnerReferenceNo": "01JTFM51FR3Y130R3G1AGMAE8E",
"accountCurrency": "IDR",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN",
"status": "NEED_APPLY_TOKEN",
"authCode": "MBntChzFOrBtZSSsd7wpgJ8yF8QQiofJBLJB7700",
"chargeToken": "MBntChzFOrBtZSSsd7wpgJ8yF8QQiofJBLJB7700"
}
}

OTP Verification​

API ini digunakan untuk verifikasi OTP dalam proses card binding.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/otp-verification
  • Service Code: 04

Request Body​

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostring✓Partner reference no dari registrasi01JTFKSCPE94ERTKVVCBHK3PKG
originalReferenceNostring✓Reference no dari response registrasi01JTFKSD339DJJ9WDWNDFFNC63
otpstring✓Kode OTP 6 digit123456
typestring✓Tipe proses (BINDING atau PAYMENT)BINDING

Example Request​

{
"originalPartnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKG",
"originalReferenceNo": "01JTFKSD339DJJ9WDWNDFFNC63",
"otp": "123456",
"type": "BINDING"
}

Response Body​

{
"responseCode": "2000400",
"responseMessage": "Successful",
"originalReferenceNo": "01JTFKSD339DJJ9WDWNDFFNC63",
"originalPartnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKG"
}

Card Set Limit​

API ini digunakan untuk mengatur limit transaksi pada kartu yang sudah di-bind.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-card-bind-limit
  • Service Code: 02

Request Header​

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​

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostring✓Reference no baru01JTFKSCPE94ERTK...
bankCardTokenstring✓Token kartu dari response bind6d7963617264746f...
limitstring✓Limit transaksi harian1000000
additionalInfoobject✗Informasi tambahan

Example Request​

{
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKH",
"bankCardToken": "6d7963617264746f6b656e",
"limit": "1000000",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN"
}
}

Response Body​

{
"responseCode": "2000200",
"responseMessage": "Successful",
"referenceNo": "01JTFKSD339DJJ9WDWNDFFNC64",
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKH",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN",
"status": "ACTIVE"
}
}

Card Unbinding​

API ini digunakan untuk membatalkan binding kartu.

  • Method: POST
  • Type: application/json
  • Path: /api/v1.0/registration-card-unbind
  • Service Code: 05

Request Body​

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostring✓Reference no baru untuk unbinding01JTFKSCPE94ERTKVVCBHK3PKI
tokenstring✓Token kartu yang akan di-unbind6d7963617264746f6b656e
additionalInfoobject✗Informasi tambahan

Example Request​

{
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKI",
"token": "6d7963617264746f6b656e",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN"
}
}

Response Body​

{
"responseCode": "2000500",
"responseMessage": "Successful",
"referenceNo": "01JTFKSD339DJJ9WDWNDFFNC65",
"partnerReferenceNo": "01JTFKSCPE94ERTKVVCBHK3PKI",
"additionalInfo": {
"paymentMethod": "BANK",
"paymentChannel": "BTN",
"status": "UNBOUND"
}
}

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
}

Debit Payment Host-to-Host​

API ini digunakan untuk melakukan permintaan pembayaran langsung dari merchant ke penyelenggara (contoh: BTN) 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": "BTN"
},
"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",
"additionalInfo": {
"originalReferenceNo": "01JTFNSMYWZFMMM10NB2F4PESG",
"channelCode": "BTN",
"status": "ACTIVE"
}
}

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

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 paymentBTN

Example Check Payment​

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

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 paymentBTN

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