Payment Instruction
Introduction
Dokumen ini dibuat untuk standar komunikasi antara aplikasi mitra ESPay dengan system ESPay. File ini menjelaskan webservice, data flow, dan field-field untuk penggunaan webservice B2B Online Banking
Seluruh service Payment Instruction dilakukan dengan ketentuan sebagai berikut :
- Two-Way communication, setiap request akan dibalas dengan response.
- Menggunakan protokol HTTPS.
- Client mengirimkan parameter dalam format HTTP POST.
- Server akan membalas dengan response format JSON.
Authentication
Setiap request yang masuk ke sistem ESPay akan selalu diverifikasi dengan metode basic auth. Client akan diberikan username dan password di media terpisah dan harus dijaga kerahasiannya. Pada setiap request yang dikirim harus menyertai header Authorization dengan value Basic diikuti dengan username dan password dengan format username:password yang telah di encode dengan encoding base64.
Contoh
Username: Romeo
Password: Juliet
Format sebelum di encode : Romeo:Juliet
Hasil Base64 encoding: Um9tZW86SnVsaWV0
Header yang dikirim :
Authorization : Basic Um9tZW86SnVsaWV0
Signature Validation
Setiap request service harus dilengkapi parameter signature untuk divalidasi. Client akan diberikan Secret Key di dokumen atau media terpisah dan diharuskan menjaga kerahasian Secret Key agar tidak disalahgunakan oleh pihak yang tidak berkepentingan. Secret Key yang dimiliki Client akan diolah untuk menjadi signature dari kombinasi parameter di setiap webservice.
Parameter yang digunakan (berdasarkan webservice) :
Inquiry Name
- rq_uuid
- rq_datetime
- sender_id
- beneficiary_bank_code
- beneficiary_account_number
- Secret Key
Inquiry Balance
- rq_uuid
- rq_datetime
- sender_id
- bank_code
- Secret Key
Inquiry Status Transfer / Transaksi
- rq_uuid
- rq_datetime
- sender_id
- transaction_id
- Secret Key
Fund Transfer (Inhouse / Interbank)
- rq_uuid
- rq_datetime
- sender_id
- beneficiary_bank_code
- beneficiary_account_number
- amount
- Secret Key
Berikut contoh langkah-langkah pembuatan signature untuk webservice Inquiry Name :
Step 1:
Gabungkan parameter-parameter yang digunakan dengan urutan sebagai berikut :
rq_uuid + rq_datetime + sender_id + beneficiary_bank_code + beneficiary_account_number + Secret Key
Contoh:
Request UUID : CLIENTID123abc-def456
Request Datetime : 2017-12-13 09:17:45
Sender ID : CLIENTID
Beneficiary Bank Code : 014
Beneficiary Account Number : 2731726215
Secret Key : b2bS3cr317kEY
Sehingga akan menjadi rangkaian string sebagai berikut :
Result = CLIENTID123abc-def4562017-12-13 09:17:45CLIENTID014
Step 2:
Uppercase kombinasi parameter pada Step 1 lalu ditambahkan Secret Key pada di akhir :
$tmpSignature = CLIENTID123ABC-DEF4562017-12-13 09:17:45CLIENTID0142731726215
$plainSignature = CLIENTID123ABC-DEF4562017-12-13
09:17:45CLIENTID0142731726215b2bS3cr317kEY
Step 3:
Hash hasil dari Step 2 dengan menggunakan hashing sha256 :
$hash = hash(sha256, CLIENTID123ABC-DEF4562017-12-13
09:17:45CLIENTID0142731726215b2bS3cr317kEY)
Result = 1fa3db27eb462827cad9f77862180f44238615291799a8af9c2e9ddf52d3b412
Hasil dari Step 3 inilah yang akan digunakan sebagai value dari parameter signature.
Inquiry Name
Digunakan untuk mendapatkan informasi atau nama dari pemilik rekening tujuan
API URL
Development : https://sandbox-api.espay.id/b2b/inquiry/name
Production : https://api.espay.id/b2b/inquiry/name
Format message yang dikirimkan harus dalam bentuk URL encoded. Keterangan untuk setiap field dalam HTTP POST message tersebut:
Inquiry Name Request Data :
Nama Field | Attribute | Mandatory | Keterangan |
rq_uuid | ANS 255 | Ya | Request Identifier. ID unik untuk mengidentifikasi request message tersebut dengan message lainnya. Format : Client ID + Unique ID Ex : CLIENTID123abc-def456 |
rq_datetime | ANS 19 | Ya | Tanggal dan waktu di server aplikasi client pada saat message di kirim. Format : YYYY-MM-DD HH:MM:SS Ex : 2014-12-17 12:30:45 |
sender_id | AN 32 | Ya | Identitas unik aplikasi Client yang terdaftar di sistem ESPay |
beneficiary_bank_code | AN 5 | Ya | Kode bank tujuan |
beneficiary_account_number | AN 32 | Ya | Nomor rekening tujuan |
signature | AN 255 | Ya | Signature (lihat Signature Validation) |
source_bank_code | N 3 | Opsional | Kode Bank Sumber. Direct : Menggunakan kode bank yang terdaftar di Espay. Deposit : DIberikan dari Espay. |
transfer_type | N 1 | Opsional | Deposit : Mandatory Menggunakan fix value 5. |
amount | N 15,2 | Opsional | Deposit : Mandatory
Jumlah transaksi Format: 1000000.00 |
category_purpose | N 1 | Opsional | Deposit : Mandatory category_purpose : 0=Investment, 1=Transfer of Wealth, 2=Purchase, 3=Others (for various purposes) |
swift_code | N 3 | Opsional | Deposit : Mandatory Kode bank yang tedaftar di BI sepasang dengan bankcode. Menggunakan kode yang terdaftar di Espay. |
Setelah melakukan request dengan contoh diatas, client akan mendapatkan response. Dengan rincian dan contoh sebagai berikut :
Inquiry Name Response Data :
Nama Field | Attribute | Mandatory | Keterangan |
rq_uuid | ANS 255 | Ya | Request Identifier. ID unik untuk mengidentifikasi request message tersebut dengan message lainnya (echoed from request). Format : Client ID + Unique ID Ex : CLIENTID123abc-def456 |
rs_datetime | ANS 19 | Ya | Tanggal dan waktu di server aplikasi client pada saat message di kirim. Format : YYYY-MM-DD HH:MM:SS Ex : 2014-12-17 12:30:45 |
error_code | ANS 4 | Ya | Kode error |
error_message | ANS 255 | Ya | Deskripsi error |
beneficiary_account_number | AN 32 | Ya | Nomor rekening tujuan |
beneficiary_account_name | AN 32 | Ya | Nama pemilik rekening tujuan |
beneficiary_account_currency | AN 3 | Tidak | Kode mata uang |
beneficiary_account_status | AN 5 | Tidak | Status rekening |
beneficiary_account_type | AN 32 | Tidak | Tipe rekening |
beneficiary_bank_name | AN 32 | Ya | Nama bank tujuan |
transfer_reff | AN 32 | Tidak | Nomor referensi untuk Fund Transfer |
swift_code | AN 3 | Tidak | Deposit : Mandatory Kode bank yang tedaftar di BI sepasang dengan bankcode. Menggunakan kode yang terdaftar di Espay. |
Inquiry Status Transfer / Transaksi
Digunakan untuk mendapatkan status terakhir dari transaksi sebelumnya
API URL
Development : https://sandbox-api.espay.id/b2b/inquiry/status
Production : https://api.espay.id/b2b/inquiry/status
Format message yang dikirimkan harus dalam bentuk URL encoded. Keterangan untuk setiap field dalam HTTP POST message tersebut:
Inquiry Status Transfer / Transaksi Request Data :
Nama Field | Attribute | Mandatory | Keterangan |
rq_uuid | ANS 255 | Ya | Request Identifier. ID unik untuk mengidentifikasi request message tersebut dengan message lainnya. Format : Client ID + Unique ID Ex : CLIENTID123abc-def456 |
rq_datetime | ANS 19 | Ya | Tanggal dan waktu di server aplikasi client pada saat message di kirim. Format : YYYY-MM-DD HH:MM:SS Ex : 2014-12-17 12:30:45 |
sender_id | AN 32 | Ya | Identitas unik aplikasi Client yang terdaftar di sistem ESPay |
signature | AN 255 | Ya | Signature (lihat Signature Validation) |
transaction_id | AN 32 | Ya | Nomor transaksi yang digunakan pada service Fund Transfer |
Setelah melakukan request dengan contoh diatas, client akan mendapatkan response. Dengan rincian dan contoh sebagai berikut :
Inquiry Status Transfer / Transaksi Response Data :
Nama Field | Attribute | Mandatory | Keterangan |
rq_uuid | ANS 255 | Ya | Request Identifier. ID unik untuk mengidentifikasi request message tersebut dengan message lainnya (echoed from request). Format : Client ID + Unique ID Ex : CLIENTID123abc-def456 |
rs_datetime | ANS 19 | Ya | Tanggal dan waktu di server aplikasi client pada saat message di kirim. Format : YYYY-MM-DD HH:MM:SS Ex : 2014-12-17 12:30:45 |
error_code | ANS 4 | Ya | Kode error |
error_message | ANS 255 | Ya | Deskripsi error |
source_bank_code | AN 32 | Tidak | Kode bank pengirim |
source_account_number | AN 32 | Tidak | Nomor rekening pengirim |
beneficiary_bank_code | AN 3 | Ya | Kode bank penerima |
beneficiary_account_number | AN 5 | Ya | Nomor rekening penerima |
amount | NUM 15,2 | Ya | Jumlah transaksi Format: 1000000.00 transaction_datetime Datetime Ya Waktu transaksi |
transaction_datetime | Datetime | Ya | Waktu transaksi |
status_code | ANS 5 | Ya | Kode status transaksi |
status_description | ANS 255 | Ya | Keterangan status transaksi |
Table of Bank Code
Bank Code | Bank Name |
002 | Bank BRI |
008 | Bank Mandiri |
009 | Bank BNI |
009 | Bank BNI Syariah |
011 | Bank Danamon |
014 | Bank BCA |
013 | Bank Permata |
016 | Bank Maybank |
022 | Bank CIMB Niaga |
022 | Bank CIMB Niaga Syariah |
026 | Bank Lippo |
028 | Bank OCBC NISP |
031 | CITIBANK |
147 | Bank Muamalat |
153 | Bank Sinarmas |
157 | Bank Maspion |
200 | Bank Tabungan Negara (BTN) |
422 | Bank BRI Syariah |
426 | Bank MEGA |
441 | Bank BUKOPIN |
451 | Bank Syariah Mandiri |
536 | Bank BCA Syariah |
Table Error Payment Instruction
Response Code | Description |
0000 | Success |
0011 | Invalid Signature |
0032 | Error while execution |
0033 | Internal error |
0037 | Service maintenance |
0050 | Incomplete field / mandatory field empty or not set |
0051 | Zero amount |
0052 | Invalid account or currency |
0060 | Transaction rejected |
0061 | Timeout from core banking |
0062 | Request not set to core banking, please retry |
9999 | Suspect / timeout |