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 |
| MAYBANK_VA | 1060006 | 6 |
| MANDIRI_VA | 1070007 | 7 |
| BNC_VA | 1080008 | 10 |
| DANAMON_VA | 1100010 | 7 |
| BTN_VA | 1110011 | 9 |
| BSI_VA | 1120012 | 7 |
| SINARMAS_VA | 1130013 | 6 |
| ALFAMART | 1140014 | 6 |
| INDOMARET | 1150015 | 6 |
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": "jokul@email.com",
"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.
-
HttpMethodadalah string nama metode yang sedang digunakan. Bisa sajaPOST,PUT, atauDELETE. -
Endpointadalah relative URL atau full path URL yang mana tanpa host atau domainnya. -
MerchantRefadalah nilai token yang Anda dapatkan dari Merchant Reference. -
RequestBodyadalah payload yang ingin Anda kirim. -
Timestampmenggunakan ISO-8601. -
secretKeyadalah 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 |
| trxId | 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 |
Example
{
"partnerServiceId": "1020002",
"customerNo": "1234567890",
"virtualAccountNo": "1020002831234567890",
"paymentRequestId": "",
"trxId": "Doitpay251015-013",
"paidAmount": { "value": "150000.00", "currency": "IDR" },
"additionalInfo": { "reference": "", "paymentCode": "" }
}
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 |