Direct Debit v1.2
Apa itu BRI Direct Debit?
Saat ini, kebutuhan akan transaksi digital yang mudah dan cepat semakin tinggi. Salah satu solusi atas kebutuhan tersebut adalah dengan mengimplementasikan fitur direct debit pada bisnis digital. Direct debit atau debit langsung adalah suatu cara pembayaran elektronik yang memungkinkan bank untuk menarik sejumlah dana secara otomatis dari rekening nasabah guna melakukan suatu pembayaran. Dengan menggunakan fitur Direct Debit BRIAPI ini, pelanggan dari bisnis digital Anda cukup melakukan registrasi kartu satu kali, kemudian untuk transaksi berikutnya pelanggan cukup memasukkan kode one time password (OTP) yang diterima. Selain memberikan kemudahan dalam pembayaran, penggunaan OTP pada transaksi ini juga akan memberikan rasa aman saat pelanggan bertransaksi.
Contoh Penggunaan API BRI Direct Debit
Direct Debit merupakan cara bertransaksi yang tepat untuk berbagai kebutuhan bisnis digital seperti e-commerce, layanan berlangganan, top up e-wallet, asuransi, ataupun berinvestasi. Dengan mengintegrasikan bisnis digital Anda dengan API ini, konsumen anda dapat lebih mudah melakukan transaksi karena hal tersebut bisa diselesaikan dengan sekali klik.
API Information
Judul | Direct Debit V1.2 |
---|---|
Versi | v1.2 |
URL Sandbox | https://sandbox.partner.api.bri.co.id/v1.2/directdebit |
URL Production |
Kendali Versi
Versi Dok | Versi API | Tanggal | Tautan Dokumen | Deskripsi | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
v1.0 |
v1.2 |
6 Desember 2021 | Buka Docs | Baseline version. | ||||||||||||||||
v2.0 |
v1.2 |
14 juni 2022 |
Halaman Ini |
|
||||||||||||||||
v2.1 |
v1.2 |
12 september 2022 |
Halaman Ini |
list error dengan detail sebagai berikut :
|
||||||||||||||||
v3.0 |
v1.2 |
26 September 2022 |
Halaman Ini |
|
||||||||||||||||
v4.0 |
v1.2 |
26 Oktober 2022 |
Halaman Ini |
|
||||||||||||||||
v4.1 |
v1.2 |
7 Februari 2023 |
Halaman Ini |
Menambahkan catatan bahwa "OTP dan Notif (Binding dan Payment) yang sebelumnya dikirim melalui SMS akan dikirimkan melalui Whatsapp" | ||||||||||||||||
v4.2 |
v1.2 |
27 April 2023 |
Halaman Ini |
Mengubah deskripsi jumlah permintaan OTP maksimum menjadi 3 kali pada Response Code 0924 pada 3 endpoint di bawah ini :
|
||||||||||||||||
v4.3 |
v1.2 |
03 Juli 2023 |
Halaman Ini |
Update mandatory untuk field exp_date dari O menjadi M pada endpoint Create Card Token (Binding) OTP *Notes Perubahan ini berlaku mulai tanggal 14 Agustus 2023 |
Product Overview
Introduction Part
Fitur pembayaran e-Commerce yang menghubungkan akun e-Commerce Anda dengan kartu debit BRI sebagai Source of Fund (SoF) sehingga proses pembayaran transaksi berlangsung cepat dengan satu proses registrasi.
Flow API (actor interaction)
Sequence Diagram
-
Binding Step
-
Payment Step
-
Refund Step
Standards (items that applicable for all endpoint)
- Semua datatime harus dalam format ISO 8601.
Additional Requirement
Partner yang memiliki lisensi PCI-DSS, card_pan dapat dikirimkan dalam format penuh (16 digit), jika tidak hanya dikirimkan 4 digit terakhir.
Remark Rekening Koran
16 karaketer (DRDBT/DRRFN+5 digit kode partner+2 digit kode transaksi+4 digit terakhir kartu)+spasi+12 digit paymentid+spasi+10 karakter trx_id partner yang diambil dari (metadata>trx_id / metadata>trx_refund_id).
Catatan: OTP dan Notif (Binding dan Payment) yang sebelumnya dikirimkan melalui SMS akan dikirimkan melalui Whatsapp.
Endpoint
1. Create card token (binding) OTP
Endpoint Description
Binding API memverifikasi bahwa informasi yang diberikan oleh pengguna cocok dengan data bank. Card_token yang diperoleh memiliki masa aktif satu tahun atau setelah masa berlaku kartu habis. Jika card_token telah kedaluwarsa, pengguna diharuskan binding lagi untuk mendapatkan card_token baru untuk melakukan transaksi.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1/directdebit/tokens |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-TIMESTAMP |
|
M |
- |
ISO 8601 format |
X-BRI-SIGNATURE |
|
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_pan |
varchar |
M |
16 |
4 digit terakhir nomor kartu atau 16 digit penuh untuk partner dengan lisensi PCI-DSS |
5221123456789101 |
phone_number |
varchar |
M |
15 |
nomor telepon terdaftar di bank |
6289912345678 |
|
varchar |
M |
50 |
User email |
|
exp_date |
varchar |
M |
4 |
expired date dengan format MMYY. |
0525 |
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan binding |
- |
location |
JSON |
O |
- |
Lokasi saat pertama kali dilakukan binding |
{ "lat": "123", "lon": "-123" } |
metadata |
JSON |
O |
- |
Merchant metadata |
Anda dapat mengisi bagian ini dengan data internal yang dipilih |
Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
registration_token |
String |
M |
- |
String code for OTP verification |
TOK_CBF6XTIWO4HKQ3LJ2QPAG W445LORLPF5 |
status |
String |
M |
- |
Value will be "PENDING_USER_VERIFICATION" only |
PENDING_USER_VERIFICATION |
Request & Response Payload Sample
Request:
{ curl -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/tokens' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body": { "card_pan": "5221123456789101", "phone_number": "6289912345678", "email":"foo.bar@baz.com" } }'
Normal Response :
{ "body": { "status": "PENDING_USER_VERIFICATION", "token": "TOK_CBF6XTIWO4HKQ3LJ2QPAGW445LORLPF5" } }
Error Response :
{ "error": { "code": "0113", "message": "Card Information Invalid" }, "status_code": 400, "recorded_at": "2021-02-10T11:07:28Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
PENDING_USER _VERIFICATION |
- |
Proses permintaan otp sukses diidentifikasi oleh token permintaan otp yang tidak kosong dan status = PENDING_USER_VERIFICATIO |
400 |
0102 |
400 |
- |
the expired date is incorrect |
Permintaan binding gagal |
400 |
0103 |
400 |
- |
card was expired |
Permintaan binding gagal |
400 |
0105 |
400 |
- |
card status not activated |
Permintaan binding gagal |
400 |
0108 |
400 |
- |
National Id Number not matched |
Permintaan binding gagal |
400 |
0109 |
400 |
- |
Your card is blocked or disabled |
Permintaan binding gagal |
400 |
0110 |
400 |
- |
Your card is already registered |
Permintaan binding gagal |
400 |
0113 |
400 |
- |
Card Information Invalid |
Permintaan binding gagal |
400 |
0407 |
400 |
- |
account is closed or frozen |
Permintaan binding gagal |
400 |
0112 |
400 |
- |
Exceed limit binding |
Percobaan binding maksimum adalah 3 kali. Lebih dari itu, akan mendapatkan error ini. |
400 |
0924 |
400 |
- |
OTP requests have reached the maximum |
Permintaan otp maksimum. Setelah 3 kali permintaan otp tidak akan diverifikasi atau verifikasi gagal |
400 |
0921 |
400 |
- |
Send OTP Failed |
Pengiriman OTP gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
2. Create Card Token (Binding) OTP Verify
Endpoint Description
Create Card Token (Binding) OTP Verify adalah endpoint untuk memverifikasi permintaan Binding OTP.
Catatan: OTP dan Notif (Binding dan Payment) yang sebelumnya dikirimkan melalui SMS akan dikirimkan melalui Whatsapp.
General Information
HTTP Method |
PATCH |
---|---|
Path |
/v1/directdebit/tokens |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-TIMESTAMP |
timestamp |
M |
- |
- |
X-BRI-SIGNATURE |
signature |
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
registration_token |
varchar |
M |
40 |
Kode string token OTP yang akan diverifikasi dengan passcode yang diperoleh pengguna |
TOK_TKNCPPPHUVL3IJVAX ZI5GG4WBEC77YZ6 |
passcode |
int |
M |
6 |
Passcode yang telah dikirim ke pengguna |
545195 |
Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 | mengidentifikasi bahwa proses binding berhasil |
“0000” |
phone_number |
varchar |
M |
15 |
nomor telepon terdaftar di bank |
6289912345678 |
last4 |
varchar |
M |
4 |
4 digit terakhir kartu |
5566 |
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan pembayaran |
- |
card_token |
Text |
M |
- |
token untuk memvalidasi transaksi dan status binding anda |
card_xxxx |
|
varchar |
M |
50 |
User email |
|
location |
JSON |
O |
- |
Lokasi saat pertama kali dilakukan binding |
- |
metadata |
JSON |
M |
- |
Merchant metadata |
{ “refnum”:”123” } |
card_type |
varchar |
M |
10 |
Ada 6 status card_type: PVRGLR, PVGOLD, PVPLAT, RGLR, GOLD, PLAT |
- |
Error Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
error |
JSON |
M |
- |
Detail informasi error |
{ "code":"0918", "message": "Invalid Passcode" } |
status_code |
String |
M |
3 |
Kode status error |
400 |
recorded_at |
String |
M |
- |
Timestamp data tersimpan |
2021-02-10T11:09:43Z |
Request & Response Payload Sample
Request:
{ curl -X PATCH 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/tokens' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "registration_token": "TOK_TKNCPPPHUVL3IJVAXZI5GG4WBEC77YZ6::ADVQ", "passcode": "545195" } }'
Normal Response :
{ "body": { "status": "0000", "phone_number": "6289912345678", "device_id": "09864ADCASA", "card_token": "card_.eyJleHAiOjE2ODU0OTExOTksImlhdCI6MTU0MDE5NjUwMCwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiJhMGM2MjlhNS1hYWI5LTQ5OWMtODg5MS0yNzA1NDg3NGRmYWUiLCJuYmYiOjE1NDAx OTY1MDEsInBhcnRuZXJJZCI6Iu_vSIsInNlcnZpY2VOYW1lIjoiRERfRVhURVJOQUxfU0VSVklDRSJ9.hceS_BQtzCIyMJCVMMvPWSfTvqIrW9TIL9arAUi95e- P6Kq9bvmQNuGLcfV6GLnQEc07fKF6IbaLLkUquEm2iDfsP1HMLv_crXiF9snwzqzTk5vJqYvLmRGDqhZk-tFw- MwX0NWop2iyRUhwSTB7rCNVOyfeIGfif7dKpu2PdFT98VUimnsKRWqHjAR7uCVKXweDbfKVpLHpgcR914MvSthqt4a7eHzUxm6o6eqyjQjf_vkQi4Fl_iG98JOVuzVuXft5P50QKcKwAhnrIiGMCVd4DZWQ1rMVbx1iS LvGzBrR1xm3wIYYlmyR0pUVlDdGaE04N1Gz_dvcsgx15Ecw", "location": { "lat": "", "lon": "" }, "last4": "1234", "email": "foo.bar@baz.com", "metadata": { "example1": "example1" }, "card_type": "PVRGLR", "limit_transaction": "" } } "body": { "status": "PENDING_USER_VERIFICATION", "token": "TOK_CBF6XTIWO4HKQ3LJ2QPAGW445LORLPF5" } }
Error Response :
{ "error": { "code": "0918", "message": "Invalid Passcode" }, "status_code": 400, "recorded_at": "2021-02-10T11:09:43Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
0000 |
binding success |
Sukses binding, status akan berisi 0000 |
400 |
0603 |
400 |
- |
Expired Card Token |
Binding Gagal |
400 |
0918 |
400 |
- |
Invalid Passcode |
Binding Gagal |
400 |
0919 |
400 |
- |
Error Validate OTP Passcode |
Binding Gagal |
400 | 0920 |
400 |
- |
Expired OTP |
Binding Gagal |
400 |
0922 |
400 |
- |
Invalid OTP Token |
Binding Gagal |
400 |
0106 |
400 |
- |
binding failed |
Binding Gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
3. Delete Card Token (Unbinding)
Endpoint Description
API unbinding digunakan untuk menghapus akun pengguna yang telah terdaftar sebelumnya.
General Information
HTTP Method |
DELETE |
---|---|
Path |
/v1/directdebit-enterprise/tokens |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-TIMESTAMP |
|
M |
- |
- |
X-BRI-SIGNATURE |
|
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_token |
Text |
M |
40 |
token untuk memvalidasi transaksi dan binding status Anda |
card_.XXXXXX |
Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
mengidentifikasi bahwa proses binding berhasil |
“0000” |
Request & Response Payload Sample
Request:
{ curl -X DELETE 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/tokens' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "card_token": "card_.eyJleHAiOjE1ODkzNDk2ODgsImlhdCI6MTU1NzcyNzI4OCwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiJhNTcxZDA3OC0xYmMyLTQ4NGUtOTQ2NC0yOGMzZmE2MWFhNGQiLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.EUOaGaCI6giha7 GmRsycxMBrVXQgeF9cHfonXYZcT_3R3ykXw6PFOS9r32fMVP8al2lf26_Q6VIZ3sm71e7Sbd1KoigtGdcTPeJseSMMP190Ful_2DA2cRqhvN1dzJx-6keaG_AzLzo6sWMzuonQuR9tk-o5YMkGzfHJ-ZOS0zWvmN9lWRmvKlZPOBH_8Q430Yu5CeSjIF9ocfQQ6oguk_bXVRCX4_u8WYISHrsatIeptBAADpQZktLpjBj0gXELwDed0PXQ4TeArcsUvj7d66hG8KPCuhCWa41JWnDxycqlJK_fldsnY0ewofkudSnSJzg5Nh0FILxl83bBPj4Pw" } }'
Normal Response :
{ "body": { "status": "0000" } }
Error Response :
{ "error": { "code": "0006", "message": "Invalid card token" }, "status_code": 400, "recorded_at": "2021-02-10T11:11:10Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
0000 |
- |
Unbinding berhasil, status = 0000 |
400 |
0201 |
400 |
- |
unbinding was unsuccessful |
Unbinding Gagal |
400 |
0006 |
400 |
- |
Invalid card token |
card_token tidak ditemukan atau sudah di-unbinding |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
4. Retrieve Payment Charges & Refunds
Endpoint Description
Permintaan API ini digunakan untuk menampilkan semua status pembayaran yang telah dibuat.
*NOTE:Normal case partner akan mendapatkan payment_id saat charge dan menggunakannya untuk inquiry transaksi, namun jika transaksi sudah timeout, partner bisa melakukan inquiry menggunakan Metadata.Partner diharapkan untuk memastikan bahwa nilai dalam Metadata unik karena akan digunakan untuk inquiry transaksi. Jika tidak, hasil inquiry akan mengembalikan data terakhir.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1/directdebit-enterprise/charges/inquiry |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-Timestamp |
timestamp |
M |
- |
- |
X-BRI-Signature |
signature |
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
payment_id |
varchar |
M |
15 |
payment_id dari API response payment |
|
metadata |
JSON |
M |
- |
Metadata untuk inquiry |
|
remarks |
varchar |
O |
255 |
remarks sebagai penanda transaksi |
|
>trx_id | varchar | M | 64 | Transaction partner ID |
Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
Kode 0000 menunjukkan bahwa inquiry berhasil diproses |
0000 |
payment_id |
varchar |
M |
15 |
payment_id dari API response payment |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
kode ISO mata uang tiga huruf |
IDR |
payment_status |
varchar |
M |
7 |
ada 3 status pembayaran pada inquiry: SUCCESS (untuk transaksi sukses), FAILED (untuk transaksi gagal), "" (kosong untuk status update gagal di database dan dapat ditandai sebagai transaksi gagal) |
|
remarks |
varchar |
M |
255 |
remakrs sebagai penanda pembayaran. Contoh "ext989898" |
|
refund_history |
JSON |
M |
- |
List array riwayat refund |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan payment charge |
|
location |
JSON |
O |
- |
Lokasi payment charge dilakukan |
{ "lat": "", "lon": "" } |
metadata |
JSON |
M |
- |
Merchant metadata |
{ "trx_id_":"0007654321" } |
>trx_id | varchar | M | 64 | Transaction partner ID |
CATATAN:Gunakan "payment_status" untuk mengidentifikasi apakah pembayaran SUCCESS atau FAILED
Structure Array Refund History
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
refund_id |
varchar |
M |
4 |
refund_id dibuat setelah transaksi |
|
amount |
number (2 Decimal Points) |
M |
15 |
jumlah proses refund dana. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
kode ISO tiga huruf untuk mata uang. Mata uang yang digunakan untuk refund |
|
reason |
varchar |
M |
255 |
remaks untuk refund |
|
date |
date |
M |
- |
tanggal proses refund dana dalam format ISO-8601 |
|
status |
varchar |
M |
7 |
ada 3 status refund dana pada inquiry: SUCCESS (untuk pengembalian dana yang berhasil), FAILED (untuk pengembalian dana yang gagal), "" (kosong untuk status pembaruan yang gagal di database dan dapat ditandai sebagai pengembalian dana yang gagal) |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan refund |
|
location |
JSON |
O |
- |
Lokasi refund dilakukan |
|
metadata |
JSON |
O |
- |
Merchant metadata |
|
CATATAN: Gunakan "status" untuk menentukan apakah pembayaran berhasil atau gagal.
Error Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
error |
JSON |
M |
- |
Detail informasi error |
{ "code": "0301", "message": "Payment id not found" } |
status_code |
String |
M |
3 |
Kode status error |
400 |
recorded_at |
string |
M |
- |
Timestamp data tersimpan |
2021-02-10T11:09:43Z |
CATATAN:Gunakan "payment_status" untuk mengidentifikasi apakah pembayaran SUCCESS atau FAILED
Request & Response Payload Sample
Request:
v{ curl -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/charges/inquiry' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body" : { "payment_id": "657314642873", "metadata": { "trx_id": "0007654321" } } }'
Normal Response :
{ "body": { "status": "0000", "amount": "50000.00", "currency": "IDR", "payment_id": "657314642873", "remarks_merchant": "payment directlink", "payment_status": "SUCCESS", "refund_history": [ { "refund_id": "447343838470", "amount": "10000.00", "currency": "IDR", "reason": "incorrect stuff", "date": "2019-08-28T02:28:30.246199Z", "status": "SUCCESS", "device_id": "lg-lllll", "location": { "lat": "", "lon": "" }, "metadata": { "trx_id": "000012345000" } } ], "device_id": "lg-lllll", "location": { "lat": "", "lon": "" }, "metadata": { "trx_id": "0007654321" } } }
Error Response :
{ "error": { "code": "0301", "message": "Payment id not found" }, "status_code": 400, "recorded_at": "2021-02-10T11:15:43Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
---|---|---|---|---|
200 |
- |
- |
0000 |
inquiry payment was success |
400 |
0301 |
400 |
- |
payment_id not found |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
5. Create Payment Charge Multi Giro OTP
Endpoint Description
API ini digunakan untuk pembayaran dari transaksi berdasarkan nomor kartu kartu pada card_token yang diperoleh dari proses bidning (pembuatan token kartu).
Pembayaran akan terhenti jika: 1. Mata uang yang digunakan untuk transaksi belum didukung. 2. Jumlah pembayaran melebihi batas kredit nasabah atau dana di rekening tidak cukup (ditentukan oleh bank). 3. Rekening atau kartu nasabah tidak lagi aktif. Untuk setiap kasus di atas, dana nasabah tidak boleh didebet.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1.2/directdebit-enterprise/charges/multiple |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-Timestamp
|
timestamp |
M |
- |
- |
X-BRI-Signature
|
signature |
M |
64 |
- |
Content-Type |
application/json |
M |
- |
- |
Idempotency-Key |
Unique ID |
M |
- |
request unique id untuk mencegah duplikasi data pada saat yang sama |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_token |
Text |
M |
|
token untuk memvalidasi transaksi dan status binding Anda |
|
amount |
number (2 Decimal Points) |
M |
|
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar(3) |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
|
giro_account_no |
string |
M |
|
Giro Account Partner |
|
remarks |
varchar |
O |
255 |
Remarks sebagai penanda pembayaran. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. Contoh "ext123456" |
|
device_id |
varchar(55) |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan payment charge. |
|
location |
JSON |
O |
|
Lokasi pembayaran dilakukan |
|
metadata |
JSON |
M |
|
Merchant metadata. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. sample: { "trx_id":"1234566789" } |
|
otp_bri_status |
varchar(3) |
O |
3 |
otp bri status untuk menandakan bahwa transaksi menggunakan OTP atau tidak. Jika YES maka akan menggunakan OTP, jika NO maka tidak menggunakan OTP. Secara default jika nilainya kosong maka akan menggunakan OTP. *CATATAN: jika otp_bri_status = NO maka akan langsung diproses transaksinya dengan response sukses dan daftar error code yang berbeda. Silahkan melihat ke contoh response dan daftar error atau response code. |
|
Normal Response Structure & Sample untuk yang memakai OTP
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
40 |
Pending User Verification |
|
Charge_token |
varchar |
M |
40 |
kode string untuk verifikasi OTP |
|
Normal Response Structure & Sample untuk yang tanpa OTP
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi |
0000 |
payment_id |
varchar |
M |
12 |
payment_id menghasilkan setelah transaksi |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
|
payment_status |
varchar |
M |
7 |
Nilainya akan SUCCESS untuk pembayaran yang berhasil. Jika pembayaran gagal, payment_status tidak akan dikembalikan (sistem akan mengembalikan kode error dan pesan error) |
|
remarks |
varchar |
M |
15 |
remarks sebagai penanda payment charge |
|
device_id |
varchar |
O |
55 |
device ID yang digunakan oleh pengguna untuk melakukan payment charge |
|
location |
JSON |
O |
- |
Lokasi payment charge dilakukan |
|
metadata |
JSON |
M |
- |
Merchant metadata |
|
Error Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
error |
JSON |
M |
- |
Detail informasi error |
{ "code": "0006", "message": "Invalid card token" } |
status_code |
String |
M |
3 |
Kode status error |
400 |
recorded_at |
string |
M |
- |
Timestamp data tersimpan |
2021-02-10T11:09:43Z |
Request & Response Payload Sample
Request:
{ curl -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit-enterprise/charges/multiple' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 0.6434517166433735' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "card_token": "card_.eyJleHAiOjE1ODkzNTA4NDEsImlhdCI6MTU1NzcyODQ0MSwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiJlM2YzNTQxNC00MTc4LTRlYzgtYmY2Ny03MjI2MzkyNjY3YTciLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.PMuH4Fq9TkacFS QE2nwr-Dr7icRPlOOxYv2_XeoOjzidTm8dRwD9xy1lpvc_JJiUUQ_WFsL-o267BkL4tpnUWNxjA0ggnfsIsJQzZUSKtQYPozi7ZSLgV4VHOMqDJxBAFb-TeuNhN6obQBpsWBc4g3e0iOvEWKvk56AviR9Hs-CIQvqoYUEds8PgOyWCdbCnT76LLBzBWjML6JVXSMbtRJ3nDvE4ykq_ajDkgVeHbgFiTPiBtnsXVskbDGZMma1kVijr5GS4cxdqAq7xzYRnFpbVNHyxUrzVKYrGGgYoHM6K3-zM8wlhfHqssjyO86DyvdmfTF1398ZT-B8uv9zog", "amount":"25099.00", "currency":"IDR", "giro_account_no":"020601006205303", "Remarks":"Remarks Merchant", "otp_bri_status":"YES", "metadata":{ "trx_id":"12345687" } } }'
Normal Response untuk yang memakai OTP:
{ "body": { "Charge_token": "CHARGE_M3AVZN3LQSX5Q3YZSUHDLT7UAUMANZAP", "status": "PENDING_USER_VERIFICATION" } }
Normal Response untuk yang tanpa OTP:
{ "body": { "status": "0000", "payment_id": "175226995569", "amount": "20000.00", "currency": "IDR", "remarks": "payment", "device_id": "", "payment_status": "SUCCESS", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "payment_id": "0984645728", "trx_id":"12345687" } } }
Error Response :
{ "error": { "code": "0006", "message": "Invalid card token" }, "status_code": 400, "recorded_at": "2021-02-10T11:11:10Z" }
List of Error/Response Code untuk yang memakai OTP
HTTP Status |
Kode |
StatusCode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
PENDING_USER_VERIFICATION |
- |
sukses diidentifikasi oleh otp token yang tidak kosong (untuk |
400 |
0402 |
400 |
- |
payment currency not supported |
Permintaan Charge OTP gagal |
400 |
0109 |
400 |
- |
Your card is blocked or disabled |
Permintaan Charge OTP gagal |
400 |
0407 |
400 |
- |
account is closed or frozen |
Permintaan Charge OTP gagal |
400 |
0413 |
400 |
- |
Transaction Timeout |
Transaction Timeout |
400 |
0111 |
400 |
- |
Duplicate Idempotency Key |
Permintaan Charge OTP gagal |
400 |
0113 |
400 |
- |
Giro Account Not Allowed |
Rekening giro belum terdaftar |
400 |
0924 |
400 |
- |
OTP requests have reached the maximum |
Permintaan otp maksimum setelah 5 kali permintaan otp tidak diverifikasi atau verifikasi gagal |
400 |
0921 |
400 |
- |
Send OTP Failed |
Gagal Mengirim Layanan OTP |
400 |
0006 |
400 |
- |
Invalid card token |
Permintaan Charge OTP gagal |
List of Error/Response Code untuk yang tanpa OTP
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
0000 |
payment success |
transaksi telah diproses, payment charge berhasil ditunjukkan dengan payment_status = SUCCESS |
400 |
0113 |
400 |
- |
Giro Account Not Allowed |
Rekening giro belum terdaftar |
400 |
0401 |
400 |
- |
over limit |
Charge Gagal |
400 |
0403 |
400 |
- |
charge payment failed |
Charge Gagal |
400 |
0404 |
400 |
- |
insufficient balance |
Charge Gagal |
400 |
0405 |
400 |
- |
account is frozen |
Charge Gagal |
400 |
0406 |
400 |
- |
account is closed |
Charge Gagal |
400 |
0407 |
400 |
- |
account is closed or frozen |
Charge Gagal |
400 |
0408 |
400 |
- |
account not found |
Charge Gagal |
400 |
0402 |
400 |
- |
payment currency not supported |
Permintaan Charge OTP gagal |
400 |
0413 |
400 |
- |
Transaction Timeout |
Transaction Timeout |
400 |
0109 |
400 |
- |
Your card is blocked or disabled |
Permintaan Charge OTP gagal |
400 |
0111 |
400 |
- |
Duplicate Idempotency Key |
Permintaan Charge OTP gagal |
400 |
0006 |
400 |
- |
Invalid card token |
Permintaan Charge OTP gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
6. Create Payment Charge Multi Giro OTP Verify
Endpoint Description
API ini digunakan untuk memverifikasi Request OTP charge dari transaksi.
Catatan: OTP dan Notif (Binding dan Payment) yang sebelumnya dikirimkan melalui SMS akan dikirimkan melalui Whatsapp.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1.2/directdebit/charges/multiple/verify |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-TIMESTAMP |
timestamp |
M |
- |
- |
X-BRI-SIGNATURE |
signature |
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_token |
Text |
M |
- |
token untuk memvalidasi transaksi dan status binding Anda |
card_token.xxxxx |
charge_token |
varchar |
M |
40 |
Kode string OTP yang akan diverifikasi dengan passcode yang diperoleh pengguna |
CHARGE_XXXXX |
passcode |
int |
M |
6 |
passcode yang telah dikirim ke pengguna |
999999 |
Normal Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi |
0000 |
payment_id |
varchar |
M |
12 |
payment_id menghasilkan setelah transaksi |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
|
remarks |
varchar |
M |
15 |
remark sebagai payment charge |
|
device_id |
varchar |
O |
55 |
device ID yang digunakan oleh pengguna untuk melakukan payment charge |
|
payment_status |
varchar |
M |
77 |
Nilainya akan SUCCESS untuk pembayaran yang berhasil. Jika pembayaran gagal, payment_status tidak akan dikembalikan (sistem akan mengembalikan kode error dan pesan error) |
|
location |
JSON |
O |
- |
Lokasi payment charge dilakukan |
|
metadata |
JSON |
O |
- |
Merchant metadata |
|
Error Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
error |
JSON |
M |
- |
Detail informasi error |
{ "code":"0403", "message":"charge payment failed" } |
status_code |
string |
M |
3 |
Kode status error |
400 |
recorder_at |
string |
M |
- |
Timestamp data tersimpan |
2021-02-10T11:09:43Z |
Request & Response Payload Sample
Request:
url -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/charges/multiple/verify' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "card_token": "card_.eyJleHAiOjE1ODk0MjE0MzcsImlhdCI6MTU1Nzc5OTAzNywiaX NzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiIxMGI4M2U2Yy0zMmUxLTQxNDctYjI5My 01OTg5YWU3Nzk5NTYiLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0V YVEVSTkFMX1NFUlZJQ0UifQ.MAdArs3zmCsehnWcwhA5m-fwCUory6oudxVtmMS9d C7bXCnRjq91AwRxBADjWLu2S6Ra_RxRAnHU03_H8QJclvLad9L6P-pqZX_pRKDPOI1Y _i0xVYOfc8ea6B2so1aEuvFoOQNFMbGSsaLz4JO-OuJ6EYfoApTFSMIKOh__jkcxcXqpM 1sO3ZlkquXKGpx_zf87boVPNY58KbIPWgzCC-6V2Vxpm4DPGunKkEwVMz4z12vTTbv 3Ph9rc1Gf0jRXw8b8wo3k2ZeVGoHwiKbyJ_8J7FTVxkm3funDpcQtPzFzgBMPRgWWtfT 7IOZddrVwsFt9FKLUKLHTVyiu5R4ZYw", "charge_token": "CHARGE_XEHK6S4SNTBRSTCFBDB65W3GHQXBEFI4::De5g", "passcode":"210074" } }'
Normal Response:
{ "body": { "status": "0000", "payment_id": "175226995569", "amount": "20000.00", "currency": "IDR", "remarks": "payment", "device_id": "", "payment_status": "SUCCESS", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "payment_id": "0984645728" } } }
Error Response :
{ "error": { "code": "0403", "message": "charge payment failed" }, "status_code": 400, "recorded_at": "2021-02-10T05:36:27Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
0000 |
payment success |
transaksi telah diproses, payment charge berhasil ditunjukkan dengan payment_status = SUCCESS |
400 |
0918 |
400 |
- |
Invalid Passcode |
Charge Gagal |
400 |
0919 |
400 |
- |
Error Validate OTP Passcode |
Charge Gagal |
400 |
0920 |
400 |
- |
Expired OTP |
Charge Gagal |
400 |
0922 |
400 |
- |
Invalid OTP Token |
Charge Gagal |
400 |
0401 |
400 |
- |
over limit |
Charge Gagal |
400 |
0403 |
400 |
- |
charge payment failed |
Charge Gagal |
400 |
0404 |
400 |
- |
insufficient balance |
Charge Gagal |
400 |
0405 |
400 |
- |
account is frozen |
Charge Gagal |
400 |
0406 |
400 |
- |
account is closed |
Charge Gagal |
400 |
0407 |
400 |
- |
account is closed or frozen |
Charge Gagal |
400 |
0408 |
400 |
- |
account not found |
Charge Gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
7. Create Payment Refund Multi Giro
Endpoint Description
Refund API digunakan untuk membuat permintaan pengembalian dana untuk pembayaran sukses sebelumnya. Pengembalian dana dapat dilakukan dengan jumlah penuh atau sebagian.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1.2/directdebit/refunds/multiple |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-TIMESTAMP |
timestamp |
M |
- |
- |
X-BRI-SIGNATURE |
signature |
M |
64 |
- |
Content-type |
application/json |
M |
- |
- |
IdempotencyKey |
Unique ID |
M |
- |
request unique id untuk mencegah duplikasi data pada saat yang sama |
Request Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_token |
Text |
O |
- |
token untuk memvalidasi transaksi dan status binding Anda |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount proses refund. Contoh 20000.00 |
|
payment_id |
varchar |
M |
12 |
payment_id dari respons API charge |
|
giro_account_no |
string |
M |
|
Giro Account Partner |
|
currency |
varchar |
M |
3 |
mata uang yang digunakan untuk refund |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan refund |
|
location |
JSON |
O |
- |
Lokasi refund dilakukan |
|
metadata |
JSON |
M |
- |
Merchant metadata. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund.sample: { "trx_id":"1234566789" } |
|
trx_refund_id |
varchar |
M |
64 |
ID Refund Transaksi Partner |
Normal Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi refund |
0000 |
refund_id |
varchar |
M |
12 |
Refund_id dihasilkan setelah transaksi refund sukses |
|
payment_id |
varchar |
M |
12 |
Payment_id untuk transaksi charge terkait |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang diproses refund. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang yang digunakan untuk refund ke pengguna |
|
reason |
varchar |
O |
15 |
reason sebagai remark refund |
|
refund_status |
varchar |
M |
6 |
Nilainya akan SUCCESS untuk pengembalian dana yang berhasil. Jika pengembalian dana gagal, refund_status tidak akan dikembalikan (sistem akan mengembalikan kode kesalahan dan pesan kesalahan) |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan refund |
|
location |
JSON |
O |
- |
Lokasi refund dilakukan |
|
metadata |
JSON |
M |
- |
Merchent meta data |
|
trx_refund_id |
varchar |
M |
64 |
ID Refund Transaksi Partner |
Error Response Structure & Sample
Field |
Tipe Data |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
error |
JSON |
M |
- |
Detail informasi error |
{ "code": "0504" , "message": "refund payment failed to get payment id" } |
status_code |
String |
M |
3 |
Kode status error |
400 |
recorded_at |
string |
M |
- |
Timestamp data tersimpan |
2021-02-10T11:09:43Z |
Request & Response Payload Sample
Request:
{ curl -X POST 'https://sandbox.partner.bri.co.id/v1.2/directdebit/refunds/multiple' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 0.6434517166433735' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body": { "card_token": "card_.eyJleHAiOjE1ODMzOTM4OTIsImlhdCI6MTU1MTc3MTQ5MiwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiIyNWQ4MWZmNy04NmY3LTQ5NWItYWUwNi04MTQ1ZGRlMTI1MmMiLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.tVaYUv8VZS bAr6_wQCDCQuGiD_5malWPu33RCTM9l1N0cGHTLO5Czh6SYGxT4tfFLRAesfNB1qBKtPc0SA_bMHkJDsQ8E68KPDpoIEkh33BxHrStrordGy6-De9jDKleHmz1qos4h0ZeYTvetBjWkhugOZgYQBRJDKT0z7GhRa5MtkK8X4yV2zXypZiDy_AZd7TJH9AvMt5zH6duyfLDtfqf5DmS6gnG5DwbwLPSYm7WlTJ8UTh94kZjdQW-t-UEVHfatNyitayQmZVwRkWwz-TyUABzZWgRluu4Hfsp_jTydYr_yEhv0TE-CFCgP7RmDNJEqpQ2q4DXFtD3i3oOg", "amount":"500.00", "payment_id": "989453118305", "giro_account_no":"020601006205303", "currency": "IDR", "metadata": { "trx_refund_id": "12345687" } } }'
Normal Response:
{ "body": { "status": "0000", "refund_id": "6218763823", "payment_id": "89937492374", "amount": "20000.00", "currency": "IDR", "reason": "incorrect stuff", "refund_status": "SUCCESS", "device_id": "lg-lllll", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "trx_refund_id":"12345687" } } }
Error Response :
{ "error": { "code": "0504", "message": "refund payment failed to get payment id" }, "status_code": 400, "recorded_at": "2021-02-10T11:22:03Z" }
List of Error/Response Code
HTTP Status |
Kode |
StatusKode |
Status |
Pesan |
Deskripsi |
---|---|---|---|---|---|
200 |
- |
- |
0000 |
transaction processed |
refund telah diproses, refund berhasil ditunjukkan dengan refund_status = SUCCESS |
400 |
0113 |
400 |
- |
Giro Account Not Allowed |
Rekening giro belum terdaftar |
400 |
0501 |
400 |
- |
refund currency not supported |
Refund gagal |
400 |
0502 |
400 |
- |
refund amount is greater than paid amount |
Refund gagal |
400 |
0503 |
400 |
- |
refund payment failed |
Refund gagal |
400 |
0405 |
400 |
- |
account is frozen |
Refund gagal |
400 |
0406 |
400 |
- |
account is closed |
Refund gagal |
400 |
0408 |
400 |
- |
account not found |
Refund gagal |
400 |
0404 |
400 |
- |
insufficient balance |
Refund gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
8. Create Payment Charge OTP
Endpoint Description
API ini digunakan untuk pembayaran dari transaksi berdasarkan nomor kartu pada card_token yang diperoleh dari proses bidning (pembuatan token kartu).
Pembayaran akan terhenti jika:
1. Mata uang yang digunakan untuk transaksi belum didukung.
2. Jumlah pembayaran melebihi batas kredit nasabah atau dana di rekening tidak cukup (ditentukan oleh bank).
3. Rekening atau kartu nasabah tidak lagi aktif. Untuk setiap kasus di atas, dana nasabah tidak boleh didebet.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1/directdebit/charges |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-Timestamp |
M |
- |
- |
|
X-BRI-Signature |
M |
64 |
- |
|
Content-Type |
application/json |
M |
- |
- |
Idempotency-Key |
Unique ID |
M |
- |
request unique id untuk mencegah duplikasi data pada saat yang sama |
Request Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
card_token |
Text |
M |
token untuk memvalidasi transaksi dan status binding Anda |
||
amount |
number (2 Decimal Points) |
M |
Jumlah amount proses refund. Contoh 20000.00 |
||
currency |
varchar (3) |
M |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
||
remarks |
varchar (255) |
O |
remarks sebagai penanda pembayaran. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. Contoh "ext123456" |
||
device_id |
varchar (55) |
O |
Device ID yang digunakan oleh pengguna untuk melakukan payment charge |
||
location |
JSON |
O |
Lokasi pembayaran dilakukan |
||
metadata |
JSON |
O |
Merchant metadata. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. |
||
>trx_id |
Varchar |
M |
ID Transaksi Partner |
||
otp_bri_status |
varchar (3) |
O |
otp bri status untuk menandakan bahwa transaksi menggunakan OTP atau tidak. Jika YES maka akan menggunakan OTP, jika NO maka tidak menggunakan OTP. Secara default jika nilainya kosong maka akan menggunakan OTP. *CATATAN: jika otp_bri_status = NO maka akan langsung diproses transaksinya dengan response sukses dan daftar error code yang berbeda. Silahkan melihat ke contoh response dan daftar error atau response code. |
||
callback_url |
string |
O |
Url untuk mengirim callback notification. Wajib hanya jika partner menggunakan fitur callback. Jika tidak, tidak perlu. |
Response Structure & Sample untuk yang memakai OTP
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
status |
varchar |
M |
40 |
Pending User Verification |
|
charge_token |
varchar |
M |
40 |
kode string untuk verifikasi OTP |
Response Structure & Sample untuk yang tanpa OTP
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi |
0000 |
payment_id |
varchar |
M |
12 |
payment_id menghasilkan setelah transaksi |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
|
payment_status |
varchar |
M |
7 |
Nilainya akan SUCCESS untuk pembayaran yang berhasil. Jika pembayaran gagal, payment_status tidak akan dikembalikan (sistem akan mengembalikan kode error dan pesan error) |
|
remarks |
varchar |
M |
15 |
remakrs sebagai penanda payment charge |
|
>trx_id |
varchar |
M |
64 |
ID Transaksi Partner |
|
device_id |
varchar |
O |
55 |
device ID yang digunakan oleh pengguna untuk melakukan payment charge |
|
location |
JSON |
O |
- |
Lokasi payment charge dilakukan |
|
metadata |
JSON |
M |
- |
Merchant metadata |
|
code | varchar | M | 4 | Hanya berlaku untuk pembayaran gagal. Error Code | |
message | text | M | - | Hanya berlaku untuk pembayaran gagal. Error Description | |
status_code | varchar | M | 3 | Hanya berlaku untuk pembayaran gagal. Status Code. | |
recorded_at | datetime | M | - | Hanya berlaku untuk pembayaran gagal. Error Response Datetime. |
Request & Response Payload Sample
Request:
curl -X POST ' https://sandbox.partner.api.bri.co.id/v1.2/directdebit/charges' \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 0.6434517166433735' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "card_token": "card_.eyJleHAiOjE1ODkzNTA4NDEsImlhdCI6MTU1NzcyODQ0MSwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiJlM2YzNTQxNC00MTc4LTRlYzgtYmY2Ny03MjI2MzkyNjY3YTciLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.PMuH4Fq9TkacFSQE2nwr-Dr7icRPlOOxYv2_XeoOjzidTm8dRwD9xy1lpvc_JJiUUQ_WFsL-o267BkL4tpnUWNxjA0ggnfsIsJQzZUSKtQYPozi7ZSLgV4VHOMqDJxBAFb-TeuNhN6obQBpsWBc4g3e0iOvEWKvk56AviR9Hs-CIQvqoYUEds8PgOyWCdbCnT76LLBzBWjML6JVXSMbtR-J3nDvE4ykq_ajDkgVeHbgFiTPiBtnsXVskbDGZMma1kVijr5GS4cxdqAq7xzYRnFpbVNHyxUrzVKYrGGgYoHM6K3-zM8wlhfHqssjyO86DyvdmfTF1398ZT-B8uv9zog", "amount":"25099.00", "currency":"IDR", "remarks":"Remakrs Merchant", "otp_bri_status": "YES", "metadata":{ "trx_id":"12345687" } "callback_url": "http://(url_partner)/directdebit/notif/charges" } }'
Normal Response untuk yang memakai OTP:
{ "body": { "charge_token":"CHARGE_M3AVZN3LQSX5Q3YZSUHDLT7UAUMANZAP", "status": "PENDING_USER_VERIFICATION" } }
Normal Response untuk yang tanpa OTP:
{ "body": { "status": "0000", "payment_id": "175226995569", "amount": "20000.00", "currency": "IDR", "remarks": "payment", "device_id": "", "payment_status": "SUCCESS", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "trx_id":"12345687" } } }
Error Response (berlaku untuk memakai OTP atau tanpa OTP):
{ "error": { "code": "0006", "message": "Invalid card token" }, "status_code": 400, "recorded_at": "2021-02-10T11:11:10Z" }
List of Error/Response Code untuk yang memakai OTP
Http Status |
Code |
Status Code | Status |
Message |
Description |
---|---|---|---|---|---|
200 |
- |
- | PENDING_USER_VERIFICATION |
- |
sukses diidentifikasi oleh otp token |
400 |
0402 |
400 | - |
payment currency not supported |
Permintaan Charge OTP gagal |
400 |
0109 |
400 | - |
Your card is blocked or disabled |
Permintaan Charge OTP gagal |
400 |
0407 |
400 | - |
account is closed or frozen |
Permintaan Charge OTP gagal |
400 |
0413 |
400 | - |
Transaction Timeout |
Transaction Timeout |
400 |
0111 |
400 | - |
Duplicate Idempotency Key |
Permintaan Charge OTP gagal |
400 |
0924 |
400 | - |
OTP requests have reached the maximum |
Permintaan otp maksimum setelah 5 kali permintaan otp tidak diverifikasi atau verifikasi gagal |
400 |
0921 |
400 | - |
Send OTP Failed |
Gagal Mengirim Layanan OTP |
400 |
0006 |
400 | - |
Invalid card token |
Gagal Mengirim Layanan OTP |
List of Error/Response Code untuk yang tanpa OTP
Http Status | Code | Status Code | Status | Message | Description |
---|---|---|---|---|---|
200 |
- |
- | 0000 |
payment success |
transaksi telah diproses, payment charge berhasil ditunjukkan dengan payment_status = SUCCESS |
400 |
0401 |
400 | - |
over limit |
Charge Gagal |
400 |
0403 |
400 | - |
charge payment failed |
Charge Gagal |
400 |
0404 |
400 | - |
insufficient balance |
Charge Gagal |
400 |
0405 |
400 | - |
account is frozen |
Charge Gagal |
400 |
0406 |
400 | - |
account is closed |
Charge Gagal |
400 |
0407 |
400 | - |
account is closed or frozen |
Charge Gagal |
400 | 0408 | 400 | - | account not found | Charge Gagal |
400 |
0402 |
400 | - |
payment currency not supported |
Permintaan Charge OTP gagal |
400 |
0413 |
400 | - |
Transaction Timeout |
Transaction Timeout |
400 |
0109 |
400 | - |
Your card is blocked or disabled |
Permintaan Charge OTP gagal |
400 |
0111 |
400 | - |
Duplicate Idempotency Key |
Permintaan Charge OTP gagal |
400 |
0006 |
400 | - |
Invalid card token |
Permintaan Charge OTP gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
9. Create Payment Charge OTP Verify
Endpoint Description
API ini digunakan untuk memverifikasi Request OTP charge dari transaksi.
Catatan: OTP dan Notif (Binding dan Payment) yang sebelumnya dikirimkan melalui SMS akan dikirimkan melalui Whatsapp.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1/directdebit/charges/verify |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Description |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-Timestamp |
M |
- |
- |
|
X-BRI-Signature |
M |
64 |
- |
|
Content-Type |
application/json |
M |
- |
- |
Request Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
card_token |
Text |
M |
- |
token untuk memvalidasi transaksi dan status binding Anda |
card_token.xxxxx |
charge_token |
varchar |
M |
40 |
Kode string OTP yang akan diverifikasi dengan passcode yang diperoleh pengguna |
CHARGE_XXXXX |
passcode |
int |
M |
6 |
passcode yang telah dikirim ke pengguna |
999999 |
Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi |
0000 |
payment_id |
varchar |
M |
12 |
payment_id menghasilkan setelah transaksi |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang dibayarkan oleh pengguna. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang akan digunakan untuk payment charge |
|
payment_status |
varchar |
M |
7 |
Nilainya akan SUCCESS untuk pembayaran yang berhasil. Jika pembayaran gagal, payment_status tidak akan dikembalikan (sistem akan mengembalikan kode error dan pesan error) |
|
remarks |
varchar |
M |
15 |
remakrs sebagai penanda payment charge |
|
device_id |
varchar |
O |
55 |
device ID yang digunakan oleh pengguna untuk melakukan payment charge |
|
location |
JSON |
O |
- |
Lokasi payment charge dilakukan |
|
metadata |
JSON |
O |
- |
Merchant metadata |
|
code | varchar | M | 4 | Hanya berlaku untuk pembayaran gagal. Error Code. | |
message | text | M | - | Hanya berlaku untuk pembayaran gagal. Error Description. | |
status_code | varchar | M | 3 | Hanya berlaku untuk pembayaran gagal. Status Code. | |
recorded_at | datetime | M | - | Hanya berlaku untuk pembayaran gagal. Error Response Datetime |
Request & Response Payload Sample
Request:
curl -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/charges/verify' -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body":{ "card_token": "card_.eyJleHAiOjE1ODk0MjE0MzcsImlhdCI6MTU1Nzc5OTAzNywiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiIxMGI4M2U2Yy0zMmUxLTQxNDctYjI5My01OTg5YWU3Nzk5NTYiLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.MAdArs3zmCsehnWcwhA5m-fwCUory6oudxVtmMS9dC7bXCnRjq91AwRxBADjWLu2S6Ra_RxRAnHU03_H8QJclvLad9L6P-pqZX_pRKDPOI1Y_i0xVYOfc8ea6B2so1aEuvFoOQNFMbGSsaLz4JO-OuJ6EYfoApTFSMIKOh__jkcxcXqpM1sO3ZlkquXKGpx_zf87boVPNY58KbIPWgzCC-6V2Vxpm4DPGunKkEwVMz4z12vTTbv3Ph9rc1Gf0jRXw8b8wo3k2ZeVGoHwiKbyJ_8J7FTVxkm3funDpcQtPzFzgBMPRgWWtfT7IOZddrVwsFt9FKLUKLHTVyiu5R4ZYw", "charge_token": "CHARGE_XEHK6S4SNTBRSTCFBDB65W3GHQXBEFI4::De5g", "passcode":"210074" } }'
Normal Response :
{ "body": { "status": "0000", "payment_id": "175226995569", "amount": "20000.00", "currency": "IDR", "remarks": "payment", "device_id": "", "payment_status": "SUCCESS", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "payment_id": "0984645728" } } }
Error Response :
{ "error":{ "code": "0403", "message": "charge payment failed" }, "status_code": 400, "recorded_at": "2021-02-10T05:36:27Z" }
List of Error/Response Code
Http Status |
Code |
Status Code | Status |
Message |
Description |
---|---|---|---|---|---|
200 |
- |
- | 0000 |
payment success |
transaksi telah diproses, payment charge berhasil ditunjukkan dengan payment_status = SUCCESS |
400 |
0918 |
400 | - |
Invalid Passcode |
Charge Gagal |
400 |
0919 |
400 | - |
Error Validate OTP Passcode |
Charge Gagal |
400 |
0920 |
400 | - |
Expired OTP |
Charge Gagal |
400 |
0922 |
400 | - |
Invalid OTP Token |
Charge Gagal |
400 |
0401 |
400 | - |
over limit |
Charge Failed |
400 |
0403 |
400 | - |
charge payment failed |
Charge Gagal |
400 |
0404 |
400 | - |
insufficient balance |
Charge Gagal |
400 |
0405 |
400 | - |
account is frozen |
Charge Gagal |
400 |
0406 |
400 | - |
account is closed |
Charge Failed |
400 |
0407 |
400 | - |
account is closed or frozen |
Charge Gagal |
400 | 0408 | 400 | - | account not found | Charge Gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
10. Create Payment Refund
Endpoint Description
API Refund digunakan untuk membuat permintaan pengembalian dana untuk pembayaran yang berhasil sebelumnya. Pengembalian dana dapat dilakukan dengan jumlah penuh atau sebagian.
General Information
HTTP Method |
POST |
---|---|
Path |
/v1/directdebit/refunds |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Description |
---|---|---|---|---|
Authorization |
Bearer {token} |
M |
N/A |
Access Token |
BRI-Timestamp |
M |
- |
- |
|
X-BRI-Signature |
M |
64 |
- |
|
Content-Type |
application/json |
M |
- |
- |
Idempotency-Key |
Unique ID |
M |
- |
unique id request for preventing duplicate requests at the same time |
Request Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
card_token |
Text |
O |
- |
token untuk memvalidasi transaksi dan status binding Anda |
|
payment_id |
varchar |
M |
12 |
payment_id dari respons API charge |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount proses refund. Contoh 20000.00 |
|
currency |
varchar |
M |
3 |
mata uang yang digunakan untuk refund |
|
reason |
text |
O |
- |
Alasan pengguna melakukan refund yang dijadikan remark. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan refund |
|
location |
JSON |
O |
- |
Lokasi refund dilakukan |
|
metadata |
JSON |
O |
- |
Merchant metadata. Harus mengandung nilai unik jika digunakan untuk inquiry payment charge dan refund. |
|
callback_url |
string |
O |
Url untuk mengirim callback notification. Wajib hanya jika partner menggunakan fitur callback. Jika tidak, tidak perlu |
Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
status |
varchar |
M |
4 |
status proses transaksi refund |
0000 |
refund_id |
varchar |
M |
12 |
Refund_id dihasilkan setelah transaksi refund sukses |
|
payment_id |
varchar |
M |
12 |
Payment_id untuk transaksi charge terkait |
|
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang diproses refund. Contoh 20000.00
|
|
currency |
varchar |
M |
3 |
Kode ISO tiga huruf untuk mata uang. Mata uang yang digunakan untuk refund ke pengguna |
|
reason |
varchar |
O |
15 |
reason sebagai remark refund |
|
refund_status | varchar | M | 6 |
Nilainya akan SUCCESS untuk pengembalian dana yang berhasil. Jika pengembalian dana gagal, refund_status tidak akan dikembalikan (sistem akan mengembalikan kode kesalahan dan pesan kesalahan) |
|
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan refund |
|
location |
JSON |
O |
- |
Lokasi refund dilakukan |
|
metadata |
JSON |
M |
- |
Merchant metadata |
Request & Response Payload Sample
Request:
curl -X POST 'https://sandbox.partner.api.bri.co.id/v1.2/directdebit/refunds \ -H 'Authorization: Bearer {{TOKEN}}' \ -H 'BRI-Timestamp: 2019-05-14T02:25:06.379Z' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 0.6434517166433735' \ -H 'X-BRI-Signature: {{SIGNATURE}}' \ -d '{ "body": { "card_token": "card_.eyJleHAiOjE1ODMzOTM4OTIsImlhdCI6MTU1MTc3MTQ5MiwiaXNzIjoiQmFuayBCUkkgLSBEQ0UiLCJqdGkiOiIyNWQ4MWZmNy04NmY3LTQ5NWItYWUwNi04MTQ1ZGRlMTI1MmMiLCJwYXJ0bmVySWQiOiLvv70iLCJzZXJ2aWNlTmFtZSI6IkREX0VYVEVSTkFMX1NFUlZJQ0UifQ.tVaYUv8VZSbAr6_wQCDCQuGiD_5malWPu33RCTM9l1N0cGHTLO5Czh6SYGxT4tfFLRAesfNB1qBKtPc0SA_bMHkJDsQ8E68KPDpoIEkh33BxHrStrordGy6-De9jDKleHmz1qos4h0ZeYT-vetBjWkhugOZgYQBRJDKT0z7GhRa5MtkK8X4yV2zXypZiDy_AZd7TJH9AvMt5zH6duyfLDtfqf5DmS6gnG5DwbwLPSYm7WlTJ8UTh94kZjdQW-t-UEVHfatNyitayQmZVwRkWwz-TyUABzZWgRluu4Hfsp_jTydYr_yEhv0TE-CFCgP7RmDNJEqpQ2q4DXFtD3i3oOg", "amount":"500.00", "payment_id": "989453118305", "currency": "IDR", "reason": "DANAREFUND", "metadata": { "trx_refund_id": "12345687" } "callback_url": "http://(url_partner)/directdebit/notif/refunds" } }'
Normal Response :
{ "body": { "status": "0000", "refund_id": "6218763823", "payment_id": "89937492374", "amount": "20000.00", "currency": "IDR", "reason": "incorrect stuff", "refund_status": "SUCCESS", "device_id": "lg-lllll", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "trx_refund_id":"12345687" } }
Error Response :
{ "error": { "code": "0504", "message": "refund payment failed to get payment id" }, "status_code": 400, "recorded_at": "2021-02-10T11:22:03Z" }
List of Error/Response Code
Http Status |
Code |
Status Code | Status |
Message |
Description |
---|---|---|---|---|---|
200 |
- |
- | 0000 |
transaction processed |
refund telah diproses, refund berhasil ditunjukkan dengan refund_status = SUCCESS |
400 |
0501 |
400 | - |
refund currency not supported |
Refund Gagal |
400 |
0502 |
400 | - |
refund amount is greater than paid amount |
Refund Gagal |
400 |
0503 |
400 | - |
refund payment failed |
Refund Gagal |
400 |
0405 |
400 | - |
account is frozen |
Refund Gagal |
400 |
0406 |
400 | - |
account is closed |
Refund Gagal |
400 | 0408 | 400 | - | account not found | Refund Gagal |
400 |
0404 |
400 | - |
insufficient balance |
Refund Gagal |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
11. Callback API Direct Debit Charges
Endpoint Description
Callback API untuk mengirim pemberitahuan dari charge
* CATATAN: Transaksi berhasil jika parameter status = 0000 dan parameter payment_status = SUCCESS,
sedangkan transaksi gagal jika parameter status = 0000 dan parameter payment_status = GAGAL
General Information
HTTP Method |
POST |
---|---|
Path |
/directdebit/notif/charges |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Description |
---|---|---|---|---|
Merchant-Key |
{client_id} |
M |
N/A |
useclient_idfromdevelopers.bri.co.id |
BRI-Timestamp |
M |
- |
- |
|
X-BRI-Signature |
M |
64 |
- |
|
Content-Type |
application/json |
M |
- |
- |
Contoh payload signature:
path=/directdebit/notif/charges&verb=POST&token={{Merchant-Key}}×tamp=2019-01-02T13:14:15.678Z&body={{Body Payload}}
Data payload dienkripsi dengan algoritma SHA256-HMAC menggunakan client_secret Anda. Signature dibentuk oleh payload yang sudah ditentukan. Hasil signature kemudian di- encode dengan Base64 dan diisi ke dalam header permintaan API X-BRI-Signature.
Request Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
Text |
M |
- |
status pengiriman callback, jika partner berhasil menerima callback, nilainya akan selalu '0000' |
0000 |
payment_id |
varchar |
M |
12 |
payment_id dari respon API charge |
12345678901 |
amount |
number (2 Decimal Points) |
M |
- |
Jumlah proses amount transaksi |
20000.00 |
currency |
varchar |
M |
3 |
mata uang yang digunakan untuk pembayaran |
IDR |
remarks |
text |
O |
- |
Remarks sebagai penanda pembayaran |
trx_123456 |
device_id |
varchar |
O |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan pembayaran |
1234567 |
location |
JSON |
O |
- |
Lokasi payment dilakukan |
{ "lon":"", "lat":"" } |
metadata |
JSON |
O |
- |
Merchant metadata |
{ "trx_id:"123456" } |
payment_status |
string |
M |
Mengindikasikan status payment (FAILED / SUCCESS) |
SUCCESS |
Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
response_code |
varchar |
M |
4 |
code of process transaction |
merujuk tabel List of Error/Response Code di bawah ini |
response_description |
varchar |
M |
40 |
description of code |
merujuk tabel List of Error/Response Code di bawah ini |
Request & Response Payload Sample
Request:
{ "body": { "status": "0000", "payment_id": "950414364491", "amount": "1000.00", "currency": "IDR", "remarks": "TESTFEN", "device_id": "", "payment_status": "SUCCESS", "location": { "lat": "", "lon": "" }, "metadata": { "trx_id": "12345687" }, "limit_transaction": "-" } }
Response:
{ "response_code": "0000", "response_description": "success", }
List of Error/Response Code
Http Status |
Response Code |
Response Description |
---|---|---|
200 |
0000 |
notification send |
400 |
1010 |
notification failed |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan
12. Callback API Direct Debit Refunds
Endpoint Description
Callback API untuk mengirimkan pemberitahuan dari refund
*CATATAN: Refund berhasil jika parameter status = 0000 dan parameter refund_status = SUCCESS,
sedangkan refund gagal jika parameter status = 0000 dan parameter refund_status = FAILED
General Information
HTTP Method |
POST |
---|---|
Path |
/directdebit/notif/refunds |
Tipe Format |
JSON |
Authentication |
OAuth 2.0 with Access Token |
Header Structure & Sample
Key |
Value |
Mandatory |
Length |
Deskripsi |
---|---|---|---|---|
Merchant-Key |
{client_id} |
M |
N/A |
Using client_id fromdevelopers.bri.co.id |
BRI-Timestamp |
M |
- |
- |
|
X-BRI-Signature |
M |
64 |
- |
|
Content-Type |
application/json |
M |
- |
- |
Contoh payload signature:
path=/directdebit/notif/refunds&verb=POST&token={{Merchant-Key}}×tamp=2019-01-02T13:14:15.678Z&body={{Body Payload}}
Data payload dienkripsi dengan algoritma SHA256-HMAC menggunakan client_secret Anda. Signature dibentuk oleh payload yang sudah ditentukan. Hasil signature kemudian di- encode dengan Base64 dan diisi ke dalam header permintaan API X-BRI-Signature.
Request Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Deskripsi |
Contoh |
---|---|---|---|---|---|
status |
Text |
M |
- |
status pengiriman callback, jika partner berhasil menerima panggilan balik, nilainya akan selalu '0000' |
'0000' |
payment_id |
varchar |
M |
12 |
Payment_id untuk transaksi charge terkait |
12345678901 |
refund_id |
varchar |
M |
12 |
Refund_id dihasilkan setelah transaksi refund sukses |
12345678901 |
amount |
number (2 Decimal Points) |
M |
- |
Jumlah amount yang diproses refund |
20000.00 |
currency |
varchar |
M |
3 |
mata uang yang digunakan untuk refund |
IDR |
reason |
text |
N |
- |
reason sebagai remark refund |
trx_123456 |
device_id |
varchar |
N |
55 |
Device ID yang digunakan oleh pengguna untuk melakukan pembayaran |
123456 |
location |
JSON |
N |
- |
Lokasi refund dilakukan |
{ "lon":"", "lat":"" } |
metadata |
JSON |
N |
- |
Merchant metadata |
{ "trx_id:"123456" } |
refund_status |
string |
M |
Mengindikasikan status refund (FAILED / SUCCESS) |
Response Structure & Sample
Field |
Data Type |
Mandatory |
Length |
Description |
Example |
---|---|---|---|---|---|
response_code |
varchar |
M |
4 |
code of process transaction |
merujuk tabel List of Error/Response Code di bawah ini |
response_description |
varchar |
M |
40 |
description of code |
merujuk tabel List of Error/Response Code di bawah ini |
Request & Response Payload Sample
Request:
{ "body": { "status": "0000", "refund_id": "6218763823", "payment_id": "89937492374", "amount": "20000.00", "currency": "IDR", "reason": "incorrect stuff", "refund_status": "SUCCESS", "device_id": "lg-lllll", "location": { "lat": "-6.21462", "lon": "106.84513" }, "metadata": { "example1": "example1" } }
Response:
{ "response_code": "0000", "response_description": "success", }
List of Error/Response Code
Http Code |
Response Code |
Response Description |
---|---|---|
200 |
0000 |
notification send |
400 |
1010 |
notification failed |
Common Error
Http Code |
Response Code |
Message |
Deskripsi |
---|---|---|---|
400 |
0001 |
Wrong message format |
invalid input format |
400 |
0003 |
Invalid BRI API Key |
ada masalah intermitent pada koneksi ke database dalam sistem BRI |
400 |
0006 |
Invalid card token |
|
400 |
0009 |
Missing Card Pan |
|
400 | 0998 | Gateway Timeout | |
400 | 0999 | General Error | |
401 | 0601 | Invalid Token | |
401 | 0602 | Invalid Signature |
Seluruh response error yang tidak tercantum dalam list response BRIAPI memiliki status pending dan perlu dilakukan pengecekan