Virtual Account
Partner Service ID
Bank Channel | Partner Service ID | Max Length Customer No |
---|---|---|
BCA_VA | 1010001 | 6 |
BNI_VA | 1020002 | 6 |
CIMB_VA | 1030003 | 9 |
PERMATA_VA | 1040004 | 8 |
BRI_VA | 1050005 | 8 |
MANDIRI_VA | 1070007 | 7 |
BNC_VA | 1080008 | 10 |
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
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
Content-Type | string | ✓ | string yang menunjukkan jenis media. | application/json |
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Doitpay SNAP API Documentation Authentication bagian symmetric signature | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string(64) | ✓ | Nilai seharusnya DOITPAY | |
Authorization | string | ✓ | Otentikasi dengan bearer token lihat disini pada bagian access token | Bearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0 |
Request Body Create
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
partnerServiceId | string | ✓ | Prefix dari DoitPay dapat dilihat di sini disini | 1234 |
customerNo | string | ✓ | Nomor untuk VA. Panjang setiap bank channel dapat dilihat di disini | 1234567890 |
virtualAccountNo | string | ✓ | Diisi kosong ““ untuk nantinya akan diberi VA number oleh doitpay dengan customerNo sebagai suffix | |
trxId | string | ✓ | ID Transaksi dari sisi merchant, unik setiap VA Number | 0001 |
virtualAccountName | string | ✓ | Nama akan ditampilkan di sisi bank. | DoitPay |
expiredDate | string | ✓ | ISO-8601. | 2022-09-16T13:00:00+07:00 |
X-virtualAccountTrxType-KEY | string | ✓ | Close Amount : C Untuk saat ini hanya mendukung Close Amount (C) | C |
totalAmount | object | ✓ | Lihat tabel di bawah ini. | |
additionalInfo | object | ✗ | Lihat tabel di bawah ini. |
Total Amount create
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
value | string | ✓ | ISO4217 dengan 2 desimal. | 100000.00 |
currency | string | ✓ | Kode mata uang, hanya menerima IDR . | IDR |
additionalInfo create
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
minAmount | string | ✓ | ISO4217 Close Amount atur nilainya “0.00”. | 0.00 |
maxAmount | string | ✓ | ISO4217 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
Parameter | Tipe | Keterangan |
---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah |
responseMessage | string | Penjelasan terhadap response code yang diterima |
virtualAccountData | object | Lihat tabel di bawah ini |
virtualAccountData Create
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
partnerServiceId | string | Prefix dari DoitPay | 12345 |
customerNo | string | Nomor untuk VA | 1111 |
virtualAccountNo | string | Nomor Virtual Account untuk dibayar | 123456567 |
trxId | string | ID Transaksi dari sisi merchant, unik setiap VA Number | trx_123 |
virtualAccountName | string | Nama akan ditampilkan di sisi bank. | Jane Doe |
totalAmount | object | ISO-8601. | lihat tabel dibawah ini |
expiredDate | string | Waktu kadaluwarsa VA | 2020-12-31T23:59:59+07:00 |
additionalInfo | object | Lihat 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
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
value | string | ISO4217 dengan 2 desimal | 1000.00 |
currency | string | Kode mata uang, hanya menerima IDR | IDR |
additionalInfo Create
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
minAmount | string | max VA amount dalam ISO4217 format. 0.00 untuk close amount | 0.00 |
maxAmount | string | min VA amount dalam ISO4217 format.0.00 untuk close amount | 0.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
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
Content-Type | string | ✓ | string yang menunjukkan jenis media. | application/json |
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Doitpay SNAP API Documentation Authentication bagian symmetric signature | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string(64) | ✓ | Nilai seharusnya DOITPAY | |
Authorization | string | ✓ | Otentikasi dengan bearer token lihat disini pada bagian access token | Bearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0 |
Request Body Delete
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
partnerServiceId | string | ✓ | Prefix dari DoitPay | 1234 |
customerNo | string | ✓ | Nomor untuk VA saat create VA | 1234567890 |
virtualAccountNo | string | ✓ | Diisi dengan nomor VA yang didapat saat create VA | |
trxId | string | ✓ | ID Transaksi dari sisi merchant untuk VA yang sebelumnya dibuat | 0001 |
Example Delete
{
"partnerServiceId": " 088899",
"customerNo": "12345678901234567890",
"virtualAccountNo": " 08889912345678901234567890",
"trxId": "abcdefgh1234"
}
Response Body Delete
Parameter | Tipe | Keterangan |
---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah |
responseMessage | string | Penjelasan terhadap response code yang diterima |
virtualAccountData | object | Lihat tabel di bawah ini |
virtualAccountData Delete
Key | Value | Description | Contoh |
---|---|---|---|
partnerServiceId | string | Prefix dari DoitPay | 12345 |
customerNo | string | Nomor untuk VA | 1111 |
virtualAccountNo | string | Nomor Virtual Account untuk dibayar | 123456567 |
trxId | string | ID Transaksi dari sisi merchant, unik setiap VA Number | trx_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
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
Content-Type | string | ✓ | string yang menunjukkan jenis media. | application/json |
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Doitpay SNAP API Documentation Authentication bagian symmetric signature | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string(64) | ✓ | Nilai seharusnya DOITPAY | |
Authorization | string | ✓ | Otentikasi dengan bearer token lihat disini pada bagian access token | Bearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0 |
Request Body Check
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
partnerServiceId | string | ✓ | Prefix dari DoitPay | 1234 |
customerNo | string | ✓ | Nomor untuk VA saat create VA | 1234567890 |
virtualAccountNo | string | ✓ | Diisi dengan nomor VA yang didapat saat create VA | |
inquiryRequestId | string | ✓ | ID Transaksi dari sisi merchant untuk VA yang sebelumnya dibuat | 0001 |
Body Request example for Check Status
{
"partnerServiceId": " 088899",
"customerNo": "12345678901234567890",
"virtualAccountNo": " 08889912345678901234567890",
"inquiryRequestId": "abcdefgh1234"
}
Response Body Check
Parameter | Tipe | Keterangan |
---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah |
responseMessage | string | Penjelasan terhadap response code yang diterima |
virtualAccountData | object | Lihat tabel di bawah ini |
virtualAccountData Check
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
partnerServiceId | string | Prefix dari DoitPay | 12345 |
customerNo | string | Nomor untuk VA | 1111 |
virtualAccountNo | string | Nomor Virtual Account untuk dibayar | 123456567 |
inquiryRequestId | string | ID Transaksi dari sisi merchant, unik setiap VA Number | trx_123 |
virtualAccountName | string | Nama akan ditampilkan di sisi bank. | Jane Doe |
paymentRequestId | string | ID unique setiap pembayaran terjadi | 123 |
paymentFlagStatus | string | Status pembayaran. 00 : SUCCESS,01 : PROCESS, 02 : EXPIRED | 00 |
expiredDate | string | Waktu kadaluwarsa VA | 2020-12-31T23:59:59+07:00 |
trxDateTime | string | Tanggal pembayaran | |
paymentFlagReason | object | Lihat tabel di bawah ini | |
totalAmount | object | Lihat tabel di bawah ini | |
paidAmount | object | Lihat tabel di bawah ini |
paymentFlagReason Check
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
English | string | Status pembayaran dalam bahasa inggris | Success |
Indonesia | string | Status pembayaran dalam bahasa indonesia | Sukses |
totalAmount Check
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
value | string | ISO4217 dengan 2 desimal | 1000.00 |
currency | string | Kode mata uang, hanya menerima IDR . | IDR |
paidAmount Check
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
value | string | ISO4217 dengan 2 desimal. Menunjukkan nominal pembayaran. | 1000.00 |
currency | string | Kode mata uang, hanya menerima IDR . | IDR |
additionalInfo Check
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
minAmount | string | max VA amount dalam ISO4217 format. 0.00 untuk close amount | 0.00 |
maxAmount | string | min VA amount dalam ISO4217 format. 0.00 untuk close amount | 0.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
.
-
HttpMethod
adalah string nama metode yang sedang digunakan. Bisa sajaPOST
,PUT
, atauDELETE
. -
Endpoint
adalah relative URL atau full path URL yang mana tanpa host atau domainnya. -
MerchantRef
adalah nilai token yang Anda dapatkan dari Merchant Reference. -
RequestBody
adalah payload yang ingin Anda kirim. -
Timestamp
menggunakan ISO-8601. -
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
Parameter | Tipe | Mandatori | Keterangan | Contoh |
---|---|---|---|---|
X-TIMESTAMP | string | ✓ | ISO-8601 | 2022-09-16T13:00:00+07:00 |
X-SIGNATURE | string | ✓ | Lihat Symmetric Signature Payment Notification | |
X-PARTNER-ID | string | ✓ | Merchant Ref dari dashboard Doitpay | 01JP4QP4R908GVK9X5KN7YCJEG |
X-EXTERNAL-ID | string(64) | ✓ | Request ID yang unik. | |
CHANNEL-ID | string | ✓ |
Request Body Payment
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
partnerServiceId | string | Prefix dari DoitPay | 12345 |
customerNo | string | Nomor untuk VA | 1111 |
virtualAccountNo | string | Nomor Virtual Account untuk dibayar | 123456567 |
inquiryRequestId | string | ID Transaksi dari sisi merchant, unik setiap VA Number | trx_123 |
paymentRequestId | string | ID unique setiap pembayaran terjadi | 123 |
paidAmount | object | Lihat tabel di bawah ini | |
additionalInfo | object | Lihat tabel di bawah ini. |
paidAmount Payment
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
value | string | ISO4217 dengan 2 desimal. Menunjukkan nominal pembayaran. | 1000.00 |
currency | string | Kode mata uang, hanya menerima IDR . | IDR |
additionalInfo Payment
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
reference | string | No referensi dari Doitpay | 123 |
paymentCode | string | No referensi dari bank | 123 |
Response Body Payment
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
responseCode | string | Kode response, lihat bagian daftar Response Code di bawah | |
responseMessage | string | Penjelasan terhadap response code yang diterima | |
virtualAccountData | object | Lihat table di bawah ini |
virtualAccountData Payment
Parameter | Tipe | Keterangan | Contoh |
---|---|---|---|
partnerServiceId | string | Prefix dari DoitPay | 12345 |
customerNo | string | Nomor untuk VA | 1111 |
virtualAccountNo | string | Nomor Virtual Account untuk dibayar | 123456567 |
paymentRequestId | string | ID unique setiap pembayaran terjadi | 123 |
paidAmount | object | Lihat tabel di bawah ini | |
virtualAccountName | string | Nama akan ditampilkan di sisi bank. | Doitpay |
Response Code Payment
Kode | Keterangan |
---|---|
2002700 | Berhasil membuat virtual account |
4092700 | Conflict external ID saat membuat virtual account |
2002800 | Berhasil update virtual account |
2003000 | Berhasil inquiry virtual account |
2003100 | Berhasil menghapus virtual account |
2002600 | Berhasil check payment status virtual account |
2002500 | Berhasil menerima callback payment virtual account |
400XX01 | Invalid field format. Dimana XX adalah service code untuk setiap API VA. |
400XX02 | Missing mandatory field. Dimana XX adalah service code untuk setiap API VA. |
401XX00 | Unauthorized Signature. Dimana XX adalah service code untuk setiap API VA. |
401XX01 | Invalid Access Token. Dimana XX adalah service code untuk setiap API VA. |
500XX00 | Terjadi kesalahan sistem di doitpay, mohon dibantu menghubungi doitpay untuk mendapatkan detail. Dimana XX adalah service code untuk setiap API VA |