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-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 Card Binding

ParameterTipeMandatoriKeteranganContoh
custIdMerchantstringID unik referensi transaksi dari merchant01JTFKSCPE94ERTKVVCBHK3PKG
phoneNostringNomor telepon pelanggan+6287722728028
cardDatastringData kartu yang terenkripsiUIdFgZi9BhWx9Scbz/YK+...
additionalInfoobjectMetadata channel pembayaran, lihat tabel di bawah

additionalInfo

ParameterTipeMandatoriKeteranganContoh
paymentChannelstringChannel pembayaran, misalnya BTN, CIMBBTN
paymentMethodstringJenis 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
custIdMerchantstringID 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
originalPartnerReferenceNostringPartner reference no dari registrasi01JTFKSCPE94ERTKVVCBHK3PKG
originalReferenceNostringReference no dari response registrasi01JTFKSD339DJJ9WDWNDFFNC63
otpstringKode OTP 6 digit123456
typestringTipe 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-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

ParameterTipeMandatoriKeteranganContoh
partnerReferenceNostringReference no baru01JTFKSCPE94ERTK...
bankCardTokenstringToken kartu dari response bind6d7963617264746f...
limitstringLimit transaksi harian1000000
additionalInfoobjectInformasi 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
partnerReferenceNostringReference no baru untuk unbinding01JTFKSCPE94ERTKVVCBHK3PKI
tokenstringToken kartu yang akan di-unbind6d7963617264746f6b656e
additionalInfoobjectInformasi 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-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
}

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-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": "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-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 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-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 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