Direct API

Virtual Account

Virtual Account adalah nomor rekening unik yang dihasilkan secara elektronik oleh bank atau penyedia layanan pembayaran, seperti Espay Payment Gateway. Virtual Account ini dirancang untuk memfasilitasi transaksi pembayaran dengan cara yang lebih mudah dan terorganisir.

Sebelum Integrasi

Pastikan Anda sudah menerima kredensial dari tim Espay.

Langkah Integrasi

Berikut ini merupakan langkah-langkah yang dapat Anda gunakan untuk integrasi dengan Direct API – Virtual Account.

1. Menampilkan metode pembayaran

Inquiry Merchant Info adalah layanan yang dapat Anda gunakan untuk mengetahui kode bank dan produk yang aktif. Dengan layanan ini, Anda dapat menyesuaikan antarmuka pengguna (UI) saat memilih metode pembayaran. Pelajari Inquiry Merchant Info

2. Membuat Inquiry dan Payment

Anda diharuskan untuk menyediakan callback yang dapat diakses oleh Espay Payment Gateway. Pelajari lebih lanjut Inquiry (Virtual Account Dinamis) dan Payment.

3. Membuat Virtual Account

Flow

Anda melakukan permintaan dengan mengirimkan parameter yang dibutuhkan, dan Espay Payment Gateway akan memberikan respons dalam bentuk JSON.

API URL

Environment URL
Sandbox
https://sandbox-api.espay.id/rest/merchantpg/sendinvoice
Production
https://api-merchant.espay.id/rest/merchantpg/sendinvoice
Environment URL
Sandbox
https://sandbox-api.espay.id/rest/merchantpg/sendinvoice
Production
https://api.espay.id/rest/merchantpg/sendinvoice
Key Value
Method
HTTP Post
Connection
keep-alive
Content-Length
250
Content-Type
application/x-www-form-urlencoded
Accept
*/*

Parameter Permintaan

Parameter Tipe Mandatory Keterangan
rq_uuid
String (64)
Y
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.
rq_datetime
String (19)
Y
Tanggal dan waktu transaksi yang dikirim dari server merchant.

Format:
yyyy-MM-dd hh:mi:ss

Contoh:
2024-03-14 07:49:28
order_id
String (32)
Y
Kode unik untuk mengidentifikasi pesanan / penagihan / faktur.

Contoh:
Nomor transaksi, invoice id, dll.
amount
String (17)
Y
Jumlah yang dibayarkan.

Format:
Desimal .00

Contoh:
150000.00
ccy
String (3)
Y
Kode mata uang transaksi.

Format:
  • Rupiah: IDR
comm_code
String (32)
Y
Merchant code yang diberikan oleh tim Espay.

Contoh
SGWYESSISHOP
remark1
String (17)
C
Deskripsi pertama. Mandatory bisa “Ya” mengkuti skema. Diisi dengan No Handphone
remark2
String (30)
Y
Deskripsi kedua yang dapat diisi dengan nama.

Format:
Alfanumerik dan Spasi.

Contoh:
Yessishop
remark3
String (50)
O
Deskripsi ketiga yang dapat diisi dengan alamat email.

Format:
Email

Contoh:
[email protected]
remark4
String (32)
C
Deskripsi keempat yang berisi ID Unik merchant, digunakan oleh Espay untuk melakukan validasi. Khusus Fixed Virtual Account (virtual account statis).
update
String (1)
Y
Kondisi transaksi.

Format:
  • Update transaksi berdasarkan order_id: Y
  • Buat transaksi dengan order_id baru: N
bank_code
String (3)
Y
Kode bank. Lihat daftar kode bank di sini.
va_expired
String (20)
O
Waktu kedaluwarsa virtual account dalam satuan menit.

Contoh:
60 menit = 60
signature
String (64)
Y
Kode yang digunakan untuk melakukan validasi transaksi. Pelajari Payment Gateway | Hash-Based Signature.
Y: Yes, O: Optional, C: Conditional

Parameter Respons

Parameter Tipe Mandatory Keterangan
rq_uuid
String (64)
Y
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.
rs_datetime
String (32)
Y
Tanggal dan waktu transaksi yang dikirim dari server Espay.

Format:
yyyy-MM-dd hh:mi:ss

Contoh:
2024-03-14 07:49:28
error_code
String (4)
Y
Kode respons.
error_message
String (32)
Y
Deskripsi respons.
va_number
String (16)
Y
Nomor virtual account yang digunakan untuk membayar.
expired
String (19)
Y
Tanggal dan waktu virtual account kedaluwarsa.

Contoh:
60 menit: 60
description
String (32)
Y
Deskripsi transaksi.
total_amount
String (17)
Y
Jumlah yang dibayarkan ditambah dengan biaya transaksi.

Format:
amount + fee. Desimal.00 (ISO 4217)

Contoh:
155000.00
amount
String (17)
Y
Jumlah yang dibayarkan.

Format:
Desimal .00 (ISO 4217)

Contoh:
150000.00
fee
String (17)
Y
Biaya transaksi.

Format:
Desimal .00 (ISO 4217)

Contoh:
5000.00
va_list
Object
C
List virtual account jika bank_code tidak diisi (null).
Y: Yes, O: Optional, C: Conditional
5. Setelah Pembayaran
Espay Payment Gateway menyediakan API Opsional yang dapat Anda gunakan untuk mendukung kebutuhan pembayaran lainnya.

Try It!

Anda bisa coba masukkan data sesuai dengan input yang telah disediakan. Setelah itu Anda submit dan lihat hasilnya!

Request

Value

Response

FAQ
Espay menyediakan tiga jenis Virtual Account:
  • Dynamic Close VA:
    Nomor Virtual Account dibuat per transaksi, memiliki nominal pembayaran yang pasti, serta masa berlaku yang dapat disesuaikan. Callback yang digunakan adalah Inquiry dan Payment.
  • Static Open VA:
    Nomor Virtual Account bersifat tetap dan dapat menerima pembayaran dengan nominal bebas. Callback yang digunakan adalah Payment.
  • Static Close VA:
    Nomor Virtual Account bersifat tetap dan memiliki nominal pembayaran yang pasti. Callback yang digunakan adalah Payment.
Jika Anda tidak mengatur value parameter va_expired, maka default expirednya 1440 menit (24 jam). Ketentuan ini berlaku untuk Dynamic Close dan Static Close VA.
Jika parameter va_expired pada request tidak diisi, maka masa berlaku akan mengikuti default Espay.

Apabila waktu masa berlaku yang muncul berbeda dari default, kemungkinan nilai expiredDatetime pada response Inquiry telah terisi dan digunakan sebagai acuan masa berlaku.

Simulasi pembayaran dapat dilakukan melalui portal sandbox Espay. Lihat tata simulasi pembayaran di sini.

Error “Duplicate Order ID” muncul karena order_id tersebut sudah pernah digunakan.

Untuk menggunakan kembali order_id yang sama, silakan isi parameter update dengan nilai Y pada request Send Invoice.

































































































Sample Headers

POST /rest/merchantpg/sendinvoice HTTP/1.1
Host: sandbox-api.espay.id
Connection: keep-alive
Content-Length: 250
Content-Type: application/x-www-form-urlencoded
Accept: */*
               





Sample Request

rq_uuid:abcbd39734-ed32-490d-98c4-e91bcd91037b
rq_datetime:2024-04-30 17:48:24
order_id:ORDER001
amount:890000
ccy:IDR
comm_code:SGWYESSISHOP
remark1:082138802290
remark2:TravelAja OTA Web Tiara Iyay
remark3:[email protected]
update:N
bank_code:014
va_expired:30
signature:d4787b96b6ee30036e42cf54bbf346559a8200feb0ce81a1df74231759990e31
               




























































Sample Positive Response

{
    "rq_uuid": "fbd39734-ed32-490d-98c4-e91bcd91037a",
    "rs_datetime": "2024-03-15 10:06:16",
    "error_code": "0000",
    "error_message": "",
    "va_number": "8920800679171597",
    "expired": "2024-03-15 10:16:16",
    "description": "Invoice No 123456",
    "total_amount": "10001.00",
    "amount": "10001.00",
    "fee": "0.00",
    "bank_code": "008"
}
                


Sample Positive Respons - va_list

{
    "rq_uuid": "90f47056-8b07-4ed3-b215-67e3fbb18033",
    "rs_datetime": "2025-01-21 12:11:34",
    "error_code": "0000",
    "error_message": "",
    "va_list": {
        "002": {
            "bank_code": "002",
            "expiry_date_time": "2025-12-21 08:30:15",
            "amount": "100.00",
            "va_number": "1248312682631401",
            "fee": 0,
            "total_amount": "100.00",
            "description": "",
            "error_code": "0000",
            "error_message": "Success"
        },
        "013": {
            "bank_code": "013",
            "expiry_date_time": "2025-12-21 08:30:15",
            "amount": "100.00",
            "va_number": "8620000926361111",
            "fee": "2000",
            "total_amount": "2100.00",
            "description": "",
            "error_code": "0000",
            "error_message": "Success"
        },
        "014": {
            "bank_code": "014",
            "expiry_date_time": "2025-12-21 08:30:15",
            "amount": "100.00",
            "va_number": "4490519263232864",
            "fee": 0,
            "total_amount": "100.00",
            "description": "",
            "error_code": "0000",
            "error_message": "Success"
        }
    }
}
                    


Sample Negative Response

{
    "rq_uuid": "abcbd39734-ed32-490d-98c4-e91bcd91037b",
    "rs_datetime": "2024-06-04 20:19:01",
    "error_code": "0031",
    "error_message": "Rejected, Error komunikasi dengan Mitra"
}
                    


HTTP

POST /rest/merchantpg/sendinvoice HTTP/1.1
Host: sandbox-api.espay.id
Content-Type: application/x-www-form-urlencoded
Content-Length: 341

rq_uuid=abcbd39734-ed32-490d-98c4-e91bcd91037b&rq_datetime=2024-04-30%2017%3A48%3A24&order_id=ORDER001&amount=890000&ccy=IDR&comm_code=SGWDIGALLERY&remark1=082138802290&remark2=TravelAja%20OTA%20Web%20Tiara%20Iyay&remark3=test%40gmail.com&bank_code=014&signature=83bf038db3de990fcbc63c315191f313166c7c5e67b21a05f69198e56a077351&va_expired=30
               


CURL

curl --location 'https://sandbox-api.espay.id/rest/merchantpg/sendinvoice' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'rq_uuid=abcbd39734-ed32-490d-98c4-e91bcd91037b' \
--data-urlencode 'rq_datetime=2024-04-30 17:48:24' \
--data-urlencode 'order_id=ORDER001' \
--data-urlencode 'amount=890000' \
--data-urlencode 'ccy=IDR' \
--data-urlencode 'comm_code=SGWYESSISHOP' \
--data-urlencode 'remark1=082138802290' \
--data-urlencode 'remark2=TravelAja OTA Web Tiara Iyay' \
--data-urlencode '[email protected]' \
--data-urlencode 'update=N' \
--data-urlencode 'bank_code=014' \
--data-urlencode 'va_expired=30' \
--data-urlencode 'signature=d4787b96b6ee30036e42cf54bbf346559a8200feb0ce81a1df74231759990e31'
               
Scroll to Top