Skip to main content

Virtual Account

Partner Service ID

Bank ChannelPartner Service IDMax Length Customer No
BCA_VA10100016
BNI_VA10200026
CIMB_VA10300039
PERMATA_VA10400048
BRI_VA10500058
MANDIRI_VA10700077
BNC_VA108000810
info

Perlu dicatat apabila "Customer No" yang dikirimkan oleh merchant tidak tersedia maka VA number akan dibuatkan dari angka acak oleh sistem doitpay.

Create Virtual Account

API Create Virtual Account adalah layanan API yang dapat digunakan oleh Merchant untuk mendapatkan akun virtual baru dengan nomor akun virtual unik (virtualAccountNo) dan pengidentifikasi transaksi (trxId), Kemudian merchant dapat mengirimkan nomor akun virtual tersebut untuk dapat menerima pembayaran dari pelanggan menggunakan aplikasi penyelenggara.

  • Method: POST
  • Type:application/json
  • Path: /va/v1.0/transfer-va/create-va
  • Service Code: 27

Header Create Virtual Account

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Doitpay SNAP API Documentation Authentication bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstring(64)Nilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Create

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay dapat dilihat di sini disini1234
customerNostringNomor untuk VA. Panjang setiap bank channel dapat dilihat di disini1234567890
virtualAccountNostringDiisi kosong ““ untuk nantinya akan diberi VA number oleh doitpay dengan customerNo sebagai suffix
trxIdstringID Transaksi dari sisi merchant, unik setiap VA Number0001
virtualAccountNamestringNama akan ditampilkan di sisi bank.DoitPay
expiredDatestringISO-8601.2022-09-16T13:00:00+07:00
X-virtualAccountTrxType-KEYstringClose Amount : C Untuk saat ini hanya mendukung Close Amount (C)C
totalAmountobjectLihat tabel di bawah ini.
additionalInfoobjectLihat tabel di bawah ini.

Total Amount create

ParameterTipeMandatoriKeteranganContoh
valuestringISO4217 dengan 2 desimal.100000.00
currencystringKode mata uang, hanya menerima IDR.IDR

additionalInfo create

ParameterTipeMandatoriKeteranganContoh
minAmountstringISO4217 Close Amount atur nilainya “0.00”.0.00
maxAmountstringISO4217 Close Amount atur nilainya “0.00”.0.00

Example create

{
"partnerServiceId": " 088899",
"customerNo": "12345678901234567890",
"virtualAccountNo": "",
"virtualAccountName": "Jokul Doe",
"virtualAccountEmail": "[email protected]",
"virtualAccountPhone": "6281828384858",
"trxId": "abcdefgh1234",
"totalAmount": {
"value": "12345678.00",
"currency": "IDR"
},
"virtualAccountTrxType": "C", // C for Close
"expiredDate": "2020-12-31T23:59:59+07:00",
"additionalInfo": {
"minAmount": "0.00",
"maxAmount": "0.00"
}
}

Response Body Create

ParameterTipeKeterangan
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
virtualAccountDataobjectLihat tabel di bawah ini

virtualAccountData Create

ParameterTipeKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
trxIdstringID Transaksi dari sisi merchant, unik setiap VA Numbertrx_123
virtualAccountNamestringNama akan ditampilkan di sisi bank.Jane Doe
totalAmountobjectISO-8601.lihat tabel dibawah ini
expiredDatestringWaktu kadaluwarsa VA2020-12-31T23:59:59+07:00
additionalInfoobjectLihat tabel di bawah ini.lihat tabel dibawah ini

example totalAmount

"totalAmount": {
"value": "12345678.00",
"currency": "IDR"
}

example additionalInfo

"additionalInfo": {
"minAmount": "0.00",
"maxAmount": "0.00"
}

totalAmount Create

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

additionalInfo Create

ParameterTipeKeteranganContoh
minAmountstringmax VA amount dalam ISO4217 format. 0.00 untuk close amount0.00
maxAmountstringmin VA amount dalam ISO4217 format.0.00 untuk close amount0.00

Delete Virtual Account

API Delete Virtual Account adalah layanan API yang dapat digunakan oleh Merchant untuk membuat akun virtual kedaluwarsa untuk memastikannya tidak dapat lagi menerima pembayaran, memanfaatkan virtualAccountNo dan trxId asli untuk identifikasi. API ini hanya bisa diakses apabila status dari nomor virtual account dalam keadaan active (belum terbayar/kadaluwarsa)

  • Method: DELETE
  • Type:application/json
  • path: /va/v1.0/transfer-va/delete-va
  • Service Code: 31

Header Delete Virtual Account

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Doitpay SNAP API Documentation Authentication bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstring(64)Nilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Delete

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay1234
customerNostringNomor untuk VA saat create VA1234567890
virtualAccountNostringDiisi dengan nomor VA yang didapat saat create VA
trxIdstringID Transaksi dari sisi merchant untuk VA yang sebelumnya dibuat0001

Example Delete

{
"partnerServiceId": " 088899",
"customerNo": "12345678901234567890",
"virtualAccountNo": " 08889912345678901234567890",
"trxId": "abcdefgh1234"
}

Response Body Delete

ParameterTipeKeterangan
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
virtualAccountDataobjectLihat tabel di bawah ini

virtualAccountData Delete

KeyValueDescriptionContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
trxIdstringID Transaksi dari sisi merchant, unik setiap VA Numbertrx_123

Check Payment Status Virtual Account

API Check Payment Status Virtual Account adalah layanan API yang dapat digunakan oleh Merchant untuk mengetahui status pembayaran virtualAccountNo dan trxId terkait.

  • Method: POST
  • Type:application/json
  • path: /va/v1.0/transfer-va/status
  • Service Code: 26

Header Check

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Doitpay SNAP API Documentation Authentication bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstring(64)Nilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Check

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay1234
customerNostringNomor untuk VA saat create VA1234567890
virtualAccountNostringDiisi dengan nomor VA yang didapat saat create VA
inquiryRequestIdstringID Transaksi dari sisi merchant untuk VA yang sebelumnya dibuat0001

Body Request example for Check Status

{
"partnerServiceId": " 088899",
"customerNo": "12345678901234567890",
"virtualAccountNo": " 08889912345678901234567890",
"inquiryRequestId": "abcdefgh1234"
}

Response Body Check

ParameterTipeKeterangan
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
virtualAccountDataobjectLihat tabel di bawah ini

virtualAccountData Check

ParameterTipeKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
inquiryRequestIdstringID Transaksi dari sisi merchant, unik setiap VA Numbertrx_123
virtualAccountNamestringNama akan ditampilkan di sisi bank.Jane Doe
paymentRequestIdstringID unique setiap pembayaran terjadi123
paymentFlagStatusstringStatus pembayaran. 00: SUCCESS,01: PROCESS, 02: EXPIRED00
expiredDatestringWaktu kadaluwarsa VA2020-12-31T23:59:59+07:00
trxDateTimestringTanggal pembayaran
paymentFlagReasonobjectLihat tabel di bawah ini
totalAmountobjectLihat tabel di bawah ini
paidAmountobjectLihat tabel di bawah ini

paymentFlagReason Check

ParameterTipeKeteranganContoh
EnglishstringStatus pembayaran dalam bahasa inggrisSuccess
IndonesiastringStatus pembayaran dalam bahasa indonesiaSukses

totalAmount Check

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

paidAmount Check

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

additionalInfo Check

ParameterTipeKeteranganContoh
minAmountstringmax VA amount dalam ISO4217 format. 0.00 untuk close amount0.00
maxAmountstringmin VA amount dalam ISO4217 format. 0.00 untuk close amount0.00

Payment VA (callback)

  • Method: POST
  • Type:application/json
  • URL: https://yourdomain.com/v1.0/transfer-va/payment
  • Service Code: 25

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)

signature = Base64(hash)

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

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

ParameterTipeKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
inquiryRequestIdstringID Transaksi dari sisi merchant, unik setiap VA Numbertrx_123
paymentRequestIdstringID unique setiap pembayaran terjadi123
paidAmountobjectLihat tabel di bawah ini
additionalInfoobjectLihat tabel di bawah ini.

paidAmount Payment

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

additionalInfo Payment

ParameterTipeKeteranganContoh
referencestringNo referensi dari Doitpay123
paymentCodestringNo referensi dari bank123

Response Body Payment

ParameterTipeKeteranganContoh
responseCodestringKode response, lihat bagian daftar Response Code di bawah
responseMessagestringPenjelasan terhadap response code yang diterima
virtualAccountDataobjectLihat table di bawah ini

virtualAccountData Payment

ParameterTipeKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
paymentRequestIdstringID unique setiap pembayaran terjadi123
paidAmountobjectLihat tabel di bawah ini
virtualAccountNamestringNama akan ditampilkan di sisi bank.Doitpay

Response Code Payment

KodeKeterangan
2002700Berhasil membuat virtual account
4092700Conflict external ID saat membuat virtual account
2002800Berhasil update virtual account
2003000Berhasil inquiry virtual account
2003100Berhasil menghapus virtual account
2002600Berhasil check payment status virtual account
2002500Berhasil menerima callback payment virtual account
400XX01Invalid field format. Dimana XX adalah service code untuk setiap API VA.
400XX02Missing mandatory field. Dimana XX adalah service code untuk setiap API VA.
401XX00Unauthorized Signature. Dimana XX adalah service code untuk setiap API VA.
401XX01Invalid Access Token. Dimana XX adalah service code untuk setiap API VA.
500XX00Terjadi kesalahan sistem di doitpay, mohon dibantu menghubungi doitpay untuk mendapatkan detail. Dimana XX adalah service code untuk setiap API VA