Skip to main content

Virtual Account Direct Inquiry

Virtual Account Direct Inquiry adalah proses ketika bank melakukan permintaan informasi (inquiry) ke sistem merchant atau payment gateway secara real-time.

Hal ini terjadi saat nasabah bank memasukkan nomor Virtual Account di channel bank (ATM, mobile banking, internet banking). Sebelum menampilkan detail pembayaran, sistem bank akan melakukan Direct Inquiry ke host merchant/payment gateway untuk:

  • Mengecek apakah Virtual Account tersebut valid dan masih aktif.
  • Mengambil detail informasi seperti nama pemilik, deskripsi, dan nominal pembayaran (jika fixed amount).
  • Mendapatkan status apakah VA tersebut bisa digunakan untuk transaksi.

Flow Diagram Virtual Account Direct Inquiry

Customer No Rule

Bank ChannelMax Length Customer No
BNI_VA14
CIMB_VA6
PERMATA_VA6
BRI_VA7
MANDIRI_VA5

Signature

Asymmetric

Formula:

stringToSign = ClientKey + “|” + Timestamp
hash = SHA256withRSA(stringToSign, privateKey)
signature = Base64(hash)

Penjelasan formula stringToSign.

  1. ClientKey adalah client ID untuk doitpay yang digenerate-kan oleh merchant.
  2. Timestamp menggunakan ISO-8601.
  3. privateKey adalah kunci RSA yang Anda buat. Untuk mekanisme direct VA inquiry, doitpay akan memberikan public key untuk digunakan merchant saat process validasi signature.

Hash stringToSign menggunakan SHA256withRSA cryptographic dan secret key. Kemudian, encode dengan Base 64. Masukkan nilainya ke X-SIGNATURE.

Symmetric

Formula:

stringToSign = HttpMethod + “:” + Endpoint + “:” + AccessToken + “:” + LowerCase(HexEncode(SHA-256(Minify(RequestBody)))) + “:” + Timestamp
hash = HMAC_SHA512(stringToSign, secretKey)
signature = Base64(hash)

Penjelasan formula 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. AccessToken adalah nilai token yang didapatkan dari API Get Token.

  4. RequestBody adalah payload yang ingin Anda kirim.

  5. Timestamp menggunakan ISO-8601.

  6. secretKey akan digenerate-kan oleh merchant saat proses integrasi.

Hash stringToSign menggunakan HMAC_SHA512 cryptographic dan secret key. Kemudian, encode dengan Base 64. Masukkan nilainya ke X-SIGNATURE.

Get Token API

  • Method: POST
  • Type: application/json
  • Development: https://yourdomain.com/v1.0/access-token/b2b
  • Service Code: 73

Header :

ParameterTipeMandatoriKeteranganContoh
Content-TypestringString yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringPemeriksaan Non-Repudiasi & Integritas X-Signature dengan algoritma asimetris.
X-CLIENT-KEYstringClient ID untuk doitpay yang digenerate-kan oleh merchant.DXXXX

body:

ParameterTipeMandatoriKeteranganContoh
grantTypestringThe value is client_credentials"client_credentials"

response:

CodeMessageKeterangan
2007300SuccessfulBerhasil di proses dan mendapatkan accessToken.
4007301Invalid Field Format {grantType}Nilai value yang tidak tepat untuk parameter grantType.
4007302Invalid Mandatori Field {grantType}Parameter grantType tidak ada.
4007302Invalid Client Key or Timestamp or SignatureTerjadi kesalahan di antara Client Key, Timestamp atau Signature.
4017300Invalid Client KeyKekeliruan pada Client Key.
4017300Invalid SignatureKekeliruan pada Signature.

Inquiry Virtual Account

  • Method: POST
  • Type: application/json
  • URL: https://yourdomain.com/v1.0/transfer-va/inquiry
  • Service Code: 24
ParameterTipeMandatoriKeteranganContoh
X-TIMESTAMPstringISO-86012025-09-03T16:23:58+07:00
X-SIGNATUREstringLihat Symmetric Signature Inquiry RequestdZuUi/OjZ21QrjRStx655lYdWtypdTK...
X-PARTNER-IDstringPartner ID yang digenerate-kan merchant untuk doitpay12345
X-EXTERNAL-IDstring(64)Request ID yang unik.1756891439401023433
CHANNEL-IDstringChannel transaksi12345
AUTHORIZATIONstringBearer tokenBearer <token>

Body

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay1899103003
customerNostringNomor untuk VA1121123456722
virtualAccountNostringNomor Virtual Account untuk dibayar18991121123456722
inquiryRequestIdstringID Transaksi dari sisi merchant, unik setiap VA Number1756891438256771593
trxDateInitstringWaktu transaksi dalam format ISO-86012025-09-03T16:23:58+07:00
channelCodestringKode channel6011
additionalInfoobjectInformasi tambahanlihat tabel di bawah

additionalInfo

ParameterTipeMandatoriKeteranganContoh
channelstringChannel transaksi VAVIRTUAL_ACCOUNT_BANK_CIMB

Response

ParameterTipeMandatoriKeteranganContoh
responseCodestringKode response, lihat bagian daftar Response Code di bawah2003600
responseMessagestringPenjelasan terhadap response code yang diterimaInquiry successful
virtualAccountDataobjectLihat tabel di bawah ini

virtualAccountData

ParameterTipeMandatoriKeteranganContoh
inquiryStatusstringStatus dari VA number00
• 00: Success
• 01: Initiated
• 02: Paying
• 03: Pending
• 04: Refunded
• 05: Canceled
• 06: Failed
• 07: Not found
inquiryReasonobjectAlasan status inquirylihat tabel bawah
partnerServiceIdstringPrefix dari DoitPay1899
customerNostringNomor untuk VA1121123456722
virtualAccountNostringNomor Virtual Account untuk dibayar18991121123456722
virtualAccountNamestringNama pemilik akunJohn Doe
virtualAccountEmailstringEmail pemilik akunjohndoe@example.com
virtualAccountPhonestringNomor telepon pemilik akun6281234567890
inquiryRequestIdstringID InquiryDIPCVA011T25...
totalAmountobjectNominal pembayaran VAlihat tabel bawah
paymentFlagStatusstringStatus pembayaran01
virtualAccountTrxTypestringJenis transaksi (C/D)C
expiredDatestringTanggal kedaluwarsa2025-08-20T...

inquiryReason

ParameterTipeMandatoriKeteranganContoh
englishstringPesan dalam bahasa InggrisValid account
indonesiastringPesan dalam bahasa IndonesiaRekening valid

totalAmount

ParameterTipeMandatoriKeteranganContoh
valuestringNominal pembayaran dengan 2 desimal10000.00
currencystringKode mata uang, hanya IDRIDR

Example Request

{
"partnerServiceId": "1899103003",
"customerNo": "1121123456722",
"virtualAccountNo": " 18991121123456722",
"inquiryRequestId": "1756891438256771593",
"trxDateInit": "2025-09-03T16:23:58+07:00",
"channelCode": "6011",
"additionalInfo": {
"channel": "VIRTUAL_ACCOUNT_BANK_CIMB"
}
}

Example Response

{
"responseCode": "2003600",
"responseMessage": "Inquiry successful",
"virtualAccountData": {
"inquiryStatus": "00",
"inquiryReason": {
"english": "Valid account",
"indonesia": "Rekening valid"
},
"partnerServiceId": " 1899",
"customerNo": "1121123456722",
"virtualAccountNo": " 18991121123456722",
"virtualAccountName": "John Doe",
"virtualAccountEmail": "johndoe@example.com",
"virtualAccountPhone": "081234567890",
"inquiryRequestId": "DIPCVA011T250819131202268TcCS1PXfuBb",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"paymentFlagStatus": "01",
"virtualAccountTrxType": "C",
"expiredDate": "2025-08-20T23:59:59+07:00"
}
}

Payment VA

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

Header

ParameterTipeMandatoriKeteranganContoh
X-TIMESTAMPstringISO-86012025-09-03T16:23:58+07:00
X-SIGNATUREstringLihat Symmetric Signature Inquiry RequestdZuUi/OjZ21QrjRStx655lYdWtypdTK...
X-PARTNER-IDstringPartner ID yang digenerate-kan merchant untuk doitpay12345
X-EXTERNAL-IDstring(64)Request ID yang unik.1756891439401023433
CHANNEL-IDstringChannel transaksi12345
AUTHORIZATIONstringBearer tokenBearer <token>

Body

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay1899103003
customerNostringNomor untuk VA1121123456722
virtualAccountNostringNomor Virtual Account untuk dibayar18991121123456722
virtualAccountNamestringNama pemilik akunJohn Doe
virtualAccountEmailstringEmail pemilik akunjohndoe@example.com
virtualAccountPhonestringNomor telepon pemilik akun081234567890
trxIdstringID transaksi unik (dari bank / upstream)abc123
paymentRequestIdstringID unik setiap pembayaran1755583922855...
channelCodestringKode channel6011
hashedSourceAccountNostringNomor rekening sumber dalam bentuk hash
sourceBankCodestringKode bank sumber
paidAmountobjectNominal yang dibayarlihat tabel bawah
cumulativePaymentAmountnumberJumlah kumulatif pembayarannull
paidBillsstringInformasi tagihan yang dibayar
totalAmountobjectTotal dari inquirylihat tabel bawah
trxDateTimestringWaktu transaksi dalam format ISO-86012025-09-04T09...
referenceNostringNomor referensi transaksi dari bank175558392285557
journalNumstringNomor jurnal
paymentTypestringJenis pembayaran
flagAdvisestringFlag notifikasi adviseN
subCompanystringSub company
billDetailsobjectDetail tagihan (opsional)null
freeTextsobjectCatatan tambahannull
additionalInfoobjectInformasi tambahanlihat tabel bawah

totalAmount

ParameterTipeMandatoriKeteranganContoh
valuestringNominal pembayaran dengan 2 desimal10000.00
currencystringKode mata uang, hanya IDRIDR

additionalInfo

ParameterTipeMandatoriKeteranganContoh
channelstringChannel transaksi VAVIRTUAL_ACCOUNT_BANK_CIMB

Response

ParameterTipeMandatoriKeteranganContoh
responseCodestringKode response, lihat bagian daftar Response Code di bawah2003600
responseMessagestringPenjelasan terhadap response code yang diterimaSuccessful
virtualAccountDataobjectLihat tabel di bawah ini

virtualAccountData

ParameterTipeMandatoriKeteranganContoh
partnerServiceIdstringPrefix dari DoitPay12345
customerNostringNomor untuk VA1111
virtualAccountNostringNomor Virtual Account untuk dibayar123456567
paymentRequestIdstringID unik setiap pembayaran123
paidAmountobjectNominal pembayaranlihat bawah
virtualAccountNamestringNama ditampilkan di sisi bankDoitpay

Example Request

{
"partnerServiceId": " 1899103003",
"customerNo": "1121123456722",
"virtualAccountNo": "18991121123456722",
"virtualAccountName": "John Doe",
"virtualAccountEmail": "johndoe@example.com",
"virtualAccountPhone": "081234567890",
"trxId": "",
"paymentRequestId": "1755583922855573699",
"channelCode": 6011,
"hashedSourceAccountNo": "",
"sourceBankCode": "",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"cumulativePaymentAmount": null,
"paidBills": "",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"trxDateTime": "2025-09-04T09:42:00+07:00",
"referenceNo": "175558392285557",
"journalNum": "",
"paymentType": "",
"flagAdvise": "N",
"subCompany": "",
"billDetails": null,
"freeTexts": null,
"additionalInfo": {
"channel": "VIRTUAL_ACCOUNT_BANK_CIMB"
}
}

Example Response

{
"responseCode": "2003600",
"responseMessage": "Successful",
"virtualAccountData": {
"partnerServiceId": "12345",
"customerNo": "1111",
"virtualAccountNo": "123456567",
"paymentRequestId": "123",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"virtualAccountName": "Doitpay"
}
}