Pengantar
Selamat Datang! Di Xendit, misi utama kami adalah untuk menyediakan infrastruktur pembayaran untuk membantu Anda mencapai kesuksesan. Kami akan membantu Anda dalam mengurus uang masuk (menerima pembayaran) dan uang keluar (melakukan pembayaran). Pengguna kami mencakup dari platform bisnis ke perusahaan penyedia pinjaman, dan segala hal diantaranya.
API Xendit dikembangkan berdasarkan konsep REST. API kami dibuat untuk mudah dipahami, berorientasi sumber daya, dan menggunakan kode respons HTTP untuk mendeteksi jika terjadi kesalahan. Kami menggunakan fitur dan fungsi bawaan HTTP sehingga dapat dimengerti oleh klien HTTP umum. Respons API kami memiliki format JSON, termasuk juga pesan kesalahannya.
Untuk mempermudah proses eksplorasi dan pembelajaran API Xendit, kami merangkum seluruh API Xendit dalam bentuk Postman collection yang dapat Anda eksplorasi secara detil di bawah
Silakan kunjungi Panduan Postman untuk pelajari lebih lanjut!
Otentikasi
Untuk dapat sukses melakukan otentikasi dengan API Xendit, Anda harus melakukan otentikasi API key menggunakan
Basic Auth
. Anda dapat mendapatkan API key melalui Dasbor. Sebagai contoh jika API key Anda adalah
xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==
Pilih otentikasi
Basic Auth
. Masukkan nilai API key padausername
dan kosongkanpassword
Format Basic Auth
{{username}}:{{password}}
Ikuti format diatas (dengan titik dua)
xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==:
Lalu, enkripsikan ke frasa sandi Base64
eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==
Tambahkan enkripsi tersebut ke dalam HTTP(s) header
Authorization: Basic eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==
API Xendit dikembangkan berdasarkan konsep REST sehingga rapi dan mudah untuk dimengerti. Sebelum mulai menggunakan API, pastikan Anda sudah melakukan registrasi dan akun Anda sudah terotentikasi karena request API akan gagal apabila akun belum terotentikasi. Anda dapat melakukan otentikasi dengan menambahkan API key Anda ke dalam request.
Anda dapat membuat dan mendapatkan API key Anda melalui Dasbor > Pengaturan > Developers > API Keys. Untuk mempermudah Anda menggunakan API kami, kami menyediakan masing-masing API key untuk test dan live environment. Selalu jaga kerahasiaan dan keamanan API key Anda. Jangan bagikan API key Anda bila tidak diperlukan. Pelajari lebih lanjut mengenai API key disini
Berikut cara membuat API key dan melakukan otentikasi akun Anda untuk mengakses API Xendit:
- Buat API key melalui Dasbor
- Salin API key
- Gunakan Basic Access Authentication atau
BASIC AUTH
sebagai metode otentikasi di server Anda - Format
BASIC AUTH
adalah{{username}}:{{password}}
- Masukkan API key ke dalam
username
dan kosongkanpassword
. Pastikan Anda menyertakan:
di belakang - Enkripsi nilai tersebut dengan Base64
- Sertakan frasa sandi Base64 tersebut ke dalam header
Authorization
Semua request API yang dibuat harus dikirim melalui HTTPS dan bukan HTTP (request melalui HTTP akan otomatis gagal). Semua request yang dibuat dalam mode test tidak akan diteruskan ke jaringan bank sehingga tidak ada uang asli yang terlibat. Semua respon API yang dikembalikan mengikuti format bentuk JSON.
Kami menyediakan PHP client libraries untuk menghemat waktu Anda. Kami juga sedang mengembangkan libraries dan plugins untuk mempermudah penggunaan API Xendit. Bila Anda tertarik untuk berkontribusi, silahkan hubungi kami dan kami akan senang untuk mendengar dari Anda. Sekali lagi, pastikan untuk melakukan otentikasi sebelum Anda menggunakan API kami.
Libraries / SDKs
Xendit memiliki libraries untuk bahasa yang berbeda-beda. Setiap harinya, kami selalu berusaha untuk menambah jumlah libraries yang ada. Jika anda telah membuat library untuk bahasa lain dan ingin menambahkannya ke dalam daftar disini, kirimkan kepada kami link dari kode library tersebut dan kami akan menambahkannya ke daftar library yang telah ada!
Produk yang didukung
- Credit / Debit Cards (melalui Payments API)
- E-Wallets (melalui Payments API)
- QR Codes (melalui Payments API)
- Direct Debit (melalui Payments API)
- Transfer Bank / Virtual Accounts (melalui Payments API)
- Retail Outlets (melalui Payments API)
- Invoices
- Payouts
- Customers
Node.js
Instalasi melalui npm
npm install xendit-node
Lihat kode sumber pada Github Node.js library adalah library sisi server yang dapat membantu anda melakukan integrasi dengan Xendit melalui Node.js.
Instalasi
Anda dapat menginstall library ini dengan menggunakan npm npm install xendit-node
atau lihat kode selengkapnya pada Github
PHP
Download package PHP di sini
https://packagist.org/packages/xendit/xendit-php
Library PHP adalah klien yang dibuat di atas PHP sehingga lebih mudah bagi Anda untuk berintegrasi dengan kami untuk menerima pembayaran melalui payment channel yang kami dukung.
Anda bisa mengunjungi library PHP kami di Packagist
Instalasi dan panduan upgrade
Lihat sumber Github kami untuk mempelajari cara meng-instal atau meng-upgrade library PHP Xendit
Go
Lihat sumber pada Github
Library Go adalah library sisi server yang dapat membantu anda melakukan integrasi dengan Xendit melalui bahasa pemrograman Go.
Instalasi
Anda dapat menginstall library Go ini dengan mengunjungi sumber kami di Github untuk panduan instalasi lengkap
Python
Instalasi melalui pip
pip install xendit-python
Lihat kode sumber pada Github
Xendit Python library adalah library sisi server yang dapat membantu anda melakukan integrasi dengan Xendit melalui Python.
Instalasi
Anda dapat menginstall library ini dengan menggunakan pip pip install xendit-python
atau lihat kode selengkapnya pada Github
Android
Unduh Xendit Android SDK
https://github.com/xendit/xendit-sdk-android
Android SDK membantu Anda memproses pembayaran digital menggunakan Xendit dengan fitur sebagai berikut:
- Tokenisasi kartu kredit/debit dengan single-use token
- Tokenisasi kartu kredit/debit dengan multiple-use token
- Otentikasi transaksi kartu kredit/debit
iOS
Unduh Xendit iOS SDK
https://github.com/xendit/xendit-sdk-ios-src
iOS SDK membantu Anda memproses pembayaran digital menggunakan Xendit dengan fitur sebagai berikut:
- Tokenisasi kartu kredit/debit dengan single-use token
- Tokenisasi kartu kredit/debit dengan multiple-use token
- Otentikasi transaksi kartu kredit/debit
Request ID
Setiap permintaan API memiliki identifikasi yang terhubung dengan permintaan tersebut. Anda dapat mendapatkan informasi identifikasi permintaan API Request-ID
pada header respon. Anda dapat menggunakan Request-ID
untuk mencari log pada Log API di Dasbor. Pelajari lebih lanjut cara mencari Log API menggunakan Request-ID
pada dokumentasi API Log.
Apabila Anda perlu menghubungi kami untuk pengecekan permintaan API yang spesifik, Anda dapat memberikan informasi Request-ID kepada kami untuk pengecekan yang lebih cepat dan akurat.
Versioning
Contoh Versioning
curl https://api.xendit.co/ewallets -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H X-API-VERSION='2020-02-01' \
-d external_id='ovo-ewallet' \
-d amount=1000 \
-d phone='08123123123'\
-d ewallet_type='OVO'
Xendit selalu melakukan perkembangan terhadap API kami sebagai bentuk pertumbuhan kami bersama bisnis Anda. Kami selalu berusaha untuk membuat perubahan yang selalu kompatibel dengan versi sebelumnya. Ketika kami melakukan launching API yang tidak kompatibel dengan versi sebelumnya, kami menggunakan versioning untuk menghindari hal-hal yang tidak diharapkan seperti hal-hal yang dapat menyebabkan sistem Anda berhenti bekerja. Anda dapat melakukan upgrade ke versi terbaru kapanpun Anda siap untuk melakukannya.
Anda dapat mengunjungi Dasbor Anda untuk melihat versi API apa yang sedang berjalan. Untuk melakukan pengetesan versi API yang spesifik, Anda dapat mencantumkan versi API yang ingin anda gunakan melalui API-version
header pada request API
Header | Deskripsi |
---|---|
API-Version optional |
string Cantumkan parameter ini dalam request API untuk memilih versi API yang diinginkan. Format: YYYY-MM-DD . Contoh: 2020-02-01 Bila tidak dicantumkan, Xendit akan menggunakan versi API yang sesuai dengan settingan Anda |
Kompatibilitas Dengan Versi Sebelumnya
Perubahan-perubahan berikut merupakan perubahan API kami yang kompatibel dengan versi sebelumnya:
- Penambahan resource API yang baru
- Penambahan parameter opsional pada request API
- Penambah properti baru pada respon API
- Perubahan urutan properti pada respon API
- Perubahan panjang karakter atau format dari semua ID objek
- Penambahan kode error yang baru
- Penambahan tipe event webhook yang baru
- Penambahan properti baru pada data webhook
Panduan Migrasi
Panduan berikut dibuat untuk membantu Anda melakukan migrasi dengan aman dari versi sekarang ke versi yang terbaru:
- Tes API baru dengan menggunakan header
API-Version
di mode Test. Pastikan Anda telah menangani request, respon, error, dan callback data yang terbaru dengan benar. Skenario testing dapat dilihat di bagian Skenario Testing - Ketika semua skenario testing telah berjalan sesuai yang diharapkan, Anda dapat mengganti versi API Anda untuk mode Test di Dasbor. Ketika Anda mengganti versi API Anda melalui Dasbor, maka versi yang akan dipakai untuk pemanggilan API yang tidak mencantumkan
API-version
pada header akan sesuai dengan nilai yang ada di setingan Dasbor - Ulangi langkah nomor 1 dan 2 pada mode Live
- Ketika Anda menemukan kendala pada proses migrasi ini, Anda tetap dapat mengganti ulang ke versi API sebelumnya yang masih beroperasi
Catatan Perubahan
Versi | API | Resources Path | Catatan Perubahan |
---|---|---|---|
2020-02-21 | eWallets | /ewallets |
Pembayaran OVO diproses secara asinkron dan callback akan dikirimkan setelah pembayaran telah selesai diproses |
2019-05-01 | Credit Cards | /credit_card_charges/refunds |
Pembuatan Refund Kartu Kredit diproses secara sinkron |
Rate Limit
API Rate Limit adalah fitur yang membatasi jumlah permintaan yang dapat dibuat oleh seorang pengguna atau akun ke API dalam jangka waktu tertentu. Ini sering digunakan untuk mencegah penggunaan yang berlebihan atau tidak pantas terhadap API, dan untuk memastikan bahwa semua pengguna memiliki akses yang adil terhadap sumber daya yang disediakan oleh API.
Xendit menggunakan algoritma Sliding Window untuk menerapkan API Rate Limit. Algoritma ini membagi jangka waktu tertentu (seperti sejam atau sehari) menjadi jendela yang lebih kecil, dan melacak jumlah permintaan yang dibuat dalam setiap jendela. Misalnya, jika Rate Limit adalah 50 permintaan per detik (RPS), dan ukuran jendela adalah satu menit, algoritma akan mengizinkan hingga 3000 permintaan dalam setiap jendela satu menit.
Secara umum, API Rate Limit diatur pada 60 permintaan per menit (RPM) per endpoint per akun untuk mode Tes. Untuk mode Live, Rate Limit diatur pada 6000 permintaan per menit (RPM) per endpoint per akun. Nilai Rate Limit dapat berbeda per endpoint apabila dituliskan pada dokumentasi API tertentu. Kami menampilkan headers berikut dalam respons API agar Anda dapat memeriksa detail Rate Limit
Header Respon | Contoh Nilai | Deskripsi |
---|---|---|
Rate-Limit-Limit | 6000 | Kuota permintaan pada setiap jendela waktu |
Rate-Limit-Remaining | 5839 | Sisa kuota permintaan pada jendela waktu sekarang |
Rate-Limit-Reset | 58.379 | Waktu tersisa pada jendela waktu sekarang, didefinisikan dalam detik |
Selain itu, setiap alamat IP yang unik dari klien diberlakukan limitasi (Rate Limit) untuk melakukan permintaan sampai dengan maksimum 18.000 permintaan per menit (RPM)
Jika Anda melebihi Rate Limit untuk sebuah endpoint, Anda akan menerima kode status HTTP 429 (Too Many Requests) dengan kode kesalahan RATE_LIMIT_EXCEEDED
. Penting untuk menangani kesalahan ini dan kontrol/tunda permintaan Anda sampai kuota Rate Limit terisi kembali.
Berikut adalah beberapa praktik terbaik untuk menangani Rate Limit API dengan lancar sebagai klien:
- Implementasikan Rate Limit di aplikasi Anda: Penting untuk mengimplementasikan Rate Limit di aplikasi Anda sendiri agar tidak melebihi Rate Limit API. Ini dapat dilakukan dengan melacak jumlah permintaan yang dibuat dan waktu pembuatan mereka, serta membandingkannya dengan kebijakan Rate Limit API.
- Tangani kesalahan Rate Limit: Jika Anda menerima kode status HTTP 429 (Too Many Requests) dengan kode kesalahan
RATE_LIMIT_EXCEEDED
, penting untuk menangani kesalahan ini dengan lancar di aplikasi Anda. Salah satu cara untuk melakukannya adalah dengan mencoba meminta ulang setelah selang waktu tertentu telah berlalu, untuk memberi kuota Rate Limit kesempatan untuk terisi kembali. - Gunakan backoff eksponensial: Anda dapat implementasi backoff eksponensial saat mencoba meminta ulang setelah kesalahan Rate Limit. Ini berarti meningkatkan jumlah waktu yang Anda tunggu antara cobaan ulang dengan faktor dua (atau kelipatan lainnya) setiap kali Anda menerima kesalahan Rate Limit. Misalnya, Anda mungkin mencoba meminta ulang setelah 1 detik, kemudian 2 detik, kemudian 4 detik, dan seterusnya. Ini membantu mengurangi risiko membebani API dengan terlalu banyak cobaan ulang dalam jangka waktu yang sangat singkat.
- Gunakan caching: Menyimpan hasil permintaan API secara lokal dapat membantu mengurangi jumlah permintaan yang dibuat ke API, serta meningkatkan performa aplikasi Anda. Dengan menyimpan hasil permintaan API secara lokal dan menggunakannya kembali sampai mereka menjadi kedaluwarsa, Anda dapat mengurangi kebutuhan untuk membuat permintaan sering ke API. Dengan mengikuti praktik terbaik ini, Anda dapat membantu menjamin bahwa aplikasi Anda menangani Rate Limit dengan lancar dan memberikan pengalaman yang andal dan konsisten untuk pengguna Anda.
Kami dapat mengurangi Rate Limit untuk mencegah penyalahgunaan, atau menaikkan limit untuk aplikasi yang mempunyai traffic tinggi. Untuk meningkatkan Rate Limit untuk akun Anda, Anda dapat menghubungi kami melalui email api.xendit.co 4 minggu lebih awal dengan menyediakan informasi Business ID Anda. Kami akan meninjau permintaan Anda dan mungkin dapat meningkatkan batas tergantung pada kebutuhan aplikasi Anda dan penggunaan keseluruhan API.
Secara keseluruhan, penting bagi Anda untuk mengelola penggunaan API Anda dengan hati-hati untuk memastikan bahwa Anda tidak melebihi Rate Limit dan mengganggu layanan untuk pengguna lain. Dengan menerapkan Rate Limit dan penanganan kesalahan yang tepat dalam aplikasi Anda, Anda dapat memastikan bahwa pengguna Anda memiliki pengalaman yang stabil dan konsisten saat mengakses API.
Error
Di bawah ini adalah beberapa error paling umum dalam endpoint kami. Setiap error tertentu terletak di bawah setiap endpoint. Jika Anda memiliki pertanyaan, silakan hubungi kami
Kode Error | Deskripsi |
---|---|
400 | Request tidak diterima, error pada validasi, key belum live |
401 | Akses tidak terotorisasi, contoh: API key salah |
403 | Akses terlarang, contoh: API tidak dapat memiliki izin untuk endpoint ini |
404 | Halaman tidak ditemukan |
500 | Error tidak diketahui - hubungi kami apabila ini terjadi. Apabila ini adalah response untuk request disbursement, mohon untuk cek status pada sumber (contoh: disbursement, refund kartu kredit) sebelum mencoba lagi agar request tidak terproses dua kali |
Webhook
Xendit menggunakan webhook untuk memberikan notifikasi ke sistem atau aplikasi Anda ketika ada
Instalasi
Anda perlu menyediakan endpoint sistem Anda untuk menerima webhook dari Xendit. Notifikasi webhook yang dikirimkan akan melalui request POST ke URL yang Anda cantumkan di Dashboard. Anda dapat melakukan konfigurasi webhook URL Anda melalui Pengaturan Webhook. Anda juga dapat menggunakan tool seperti ngrok untuk membuat endpoint sementara untuk menerima webhook pada saat melakukan testing
Upaya Pengiriman dan Pengiriman Ulang
Penjelasan mengenai upaya pengiriman webhook ke sistem serta pengiriman ulang yang akan dijalankan apabila webhook tidak direspon dengan baik oleh sistem Anda
Melihat Events
Anda dapat mengecek informasi-informasi perihal upaya pengiriman webhook dari Xendit ke sistem Anda seperti respon terakhir dari sistem Anda, upaya-upaya pengiriman ulang, waktu untuk merespon webhook, dan status HTTP yang Xendit terima untuk setiap pengiriman. Semua informasi ini dapat Anda akses melalui Webhook tab
Upaya Pengiriman Ulang
Xendit akan mengirimkan webhook ke sistem Anda sebanyak 6 kali dengan jeda interval yang eksponensial dan akan berhenti ketika kami telah mendapatkan respon sukses dari sistem Anda atau pengiriman ulang sebanyak 6 kali telah dilakukan
Upaya Pengiriman Ulang | Interval (relatif terhadap upaya terakhir) | Interval (relatif terhadap upaya pertama) |
---|---|---|
1 | 15 menit | 15 menit |
2 | 45 menit | 1 jam |
3 | 2 jam | 3 jam |
4 | 3 jam | 6 jam |
5 | 6 jam | 12 jam |
6 | 12 jam | 24 jam |
Unduh Statistik Webhook Melalui Email
Anda juga dapat menerima ringkasan statistik webhook Anda (jumlah sukses dan gagal) setiap 6 jam yang akan dikirimkan ke alamat email yang Anda cantumkan. Anda dapat mengaktifkan fitur ini melalui Pengaturan Penerima Email
Penangan Event
Penangan webhook event dengan benar sangatlah krusial untuk memastikan integrasi Anda berjalan sesuai yang diharapkan
Segera Merespon Event
Bila Anda memiliki webhook script yang menjalankan logika-logika kompleks atau membuat panggilan lain melalui jaringan (network), besar kemungkinan script tersebut akan timeout sebelum Xendit mendapatkan respon berhasil. Idealnya, sistem Anda harus segera merespon event yang dikirimkan dengan kode status 2xx
dan logika-logika tambahan untuk melanjutkan proses penanganan webhook Anda dianjurkan untuk dipisah agar webhook diterima dengan sukses dan cepat dan tidak timeout
Penanganan Events yang duplikat
Endpoint webhook kadang-kadang dapat menerima lebih dari satu event yang sama, biasanya akibat upaya pengiriman ulang setelah terjadi gangguan pengiriman pada pengiriman sebelumnya. Untuk menangani event yang duplikat, kami sarankan Anda untuk memproses event secara idempoten. Salah satu cara untuk melakukan ini adalah untuk mencatat event yang telah Anda proses dan tidak melakukan pemrosesan tambahan bila event tersebut telah dicatatkan sebelumnya
Urutan Events
Xendit tidak menjamin urutan pengiriman event dapat sesuai dengan waktu pembuatan webhook tersebut. Endpoint Anda dianjurkan untuk tidak menangani event secara berurutan. Anda juga dapat menggunakan API untuk mengambil data-data yang kurang, bila ada
Keamanan
Sangatlah penting untuk menjaga keamanan endpoint Anda untuk melindungi informasi customer Anda. Xendit menyediakan beberapa cara untuk melakukan verifikasi event agar event yang dikirimkan dapat dijamin berasal dari Xendit dengan kemanan yang terukur
Terima events dengan server HTTPS
Xendit akan melalukan validasi koneksi ke server Anda untuk mengecek keamanan koneksi antar server sebelum mengirimkan data webhook ke sistem Anda. Server Anda harus terkonfigurasi HTTPS dengan sertifikat server yang valid untuk menjamin keamanan koneksi antar server
Verifikasi events yand dikirimkan oleh Xendit
Xendit dapat menandai event webhook yang akan dikirimkan ke server Anda untuk menyatakan bahwa event tersebut dapat dijamin berasal dari Xendit. Kami akan melampirkan x-callback-token
di header pada setiap event
. Ini bertujuan untuk membantu Anda melakukan verifikasi bahwa data yang dikirimkan berasal dari Xendit dan bukan dari pihak lain
Parameter Header | Keterangan |
---|---|
x-callback-token |
string Webhook token unik untuk akun Xendit Anda yang digunakan untuk verifikasi asal mula event yang dikirimkan ke sistem Anda |
Anda dapat mengambil data webhook token anda melalui Dasbor pada Pengaturan Webhook. Setiap token adalah unik per environment
Balance (Saldo)
Saldo Anda mewakili uang di akun cash Xendit dan Holding Anda.
Rekening uang Tunai Anda menyimpan uang yang telah dilunasi ke rekening Anda dan tersedia untuk penarikan, pencairan, atau transaksi lainnya. Akun Holding Anda menunjukkan uang yang tidak dapat digunakan karena sedang diproses untuk penyelesaian ke akun Tunai Anda atau pencairan ke akun eksternal.
Untuk transaksi money-out, misalnya, saat melakukan pencairan, akun Tunai Anda didebit dan akun Holding Anda dikreditkan saat transaksi keluar sedang diproses. Setelah transaksi money-out berhasil, akun Holding Anda akan didebet ketika uang dikirim ke penerima yang dituju.
Untuk transaksi money-in, misalnya, ketika Anda menerima pembayaran atau dana top-up ke akun Anda, akun Holding Anda pertama kali dikreditkan saat transaksi yang masuk sedang diproses. Setelah transaksi diselesaikan, akun Holding Anda didebit dan akun Cash Anda dikreditkan saat uang dilepaskan ke akun Cash Anda.
Untuk melihat saldo Anda saat ini di setiap akun, Anda dapat mengambil Saldo Anda untuk akun Cash atau Holding Anda melalui API. Anda juga dapat mengunjungi tab Transaksi dasbor Anda untuk melihat saldo Kas Anda, atau tab Transit untuk melihat saldo Holding Anda.
Permintaan Pengecekan Saldo
Contoh Permintaan Pengecekan Saldo
curl https://api.xendit.co/balance -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$getBalance = \Xendit\Balance::getBalance('CASH');
var_dump($getBalance);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Balance } = x;
const balanceSpecificOptions = {};
const b = new Balance(balanceSpecificOptions);
const resp = await b.getBalance()
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
Balance balance = Balance.get();
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := balance.GetParams{
AccountType: "CASH",
}
resp, err := balance.Get(&data)
if err != nil {
log.Fatal(err)
}
fmt.Printf("balance: %+v\n", resp)
from xendit import Xendit, BalanceAccountType
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
Balance = xendit_instance.Balance
balance = Balance.get(
account_type=BalanceAccountType.CASH,
)
print(balance)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
BalanceClient balance = xendit.Balance;
BalanceResponse holdingBalance = await balance.Get(BalanceAccountType.Holding);
Parameter Request (Money-out read permission)
Pengecekan saldo memungkinkan Anda untuk mengetahui saldo Kas Anda dan saldo Holding Anda.
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Parameter Query | Tipe | Deskripsi |
---|---|---|
account_type optional default: CASH |
string |
Jenis akun yang dipilih (CASH atau HOLDING ). |
currency optional |
string |
Filter mata uang untuk pelanggan yang memiliki akun dengan lebih dari satu mata uang. Kolom ini bersifat opsional jika Anda hanya memiliki 1 mata uang. Jika lebih, harap pilih mata uang yang Anda inginkan. contoh: IDR , PHP , USD |
at_timestamp optional |
string |
Datetime format Saldo yang dikembalikan dalam response ini merupakan saldo berdasarkan waktu atau timestamp yang diberikan contoh: 2024-01-01T00:00:00.000Z |
Parameter Respon
Contoh Respon Permintaan Pengecekan Saldo
{
"balance": 1241231
}
Parameter | Deskripsi |
---|---|
balance | Sisa saldo di tipe akun yang ditentukan dalam permintaan API anda |
Customers
API yang berguna untuk melakukan request yang terkait dengan customer. Dengan API ini anda bisa membuatkan profil customer anda, bisnis atau individual, beserta status KYC pendaftarannya, dan informasi lainnya. API ini berguna untuk anda yang menggunakan berbagai macam API pembayaran Xendit, termasuk penggunaan channel pembayaran Direct Debit, atau untuk memenuhi informasi KYC untuk registrasi transfer.
Customer Object
Customer Object adalah struktur data standar yang memuat informasi salah satu customer anda. Komponen-koponen utama yang dimiliki adalah:
- Tipe customer (Individual atau Business)
- Deskripsi customer
- Alamat customer
- Akun identitas dan dokumen KYC yang menandakan legitimasi customer
- Metadata lainnya
Ketika satu (atau lebih) customer dikembalikan oleh endpoint yang ada di bagian ini, body response akan memuat Customer Object (atau array dari beberapa Customer Object). Setiap object memiliki struktur berikut:
Contoh Customer Object - Individual
{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe",
"nationality": "ID",
"place_of_birth": "Jakarta",
"date_of_birth": "1980-01-01",
"gender": "MALE",
"employment": {
"employer_name": "Xendit",
"nature_of_business": "Payment Gateway",
"role_description": "Test dummy"
}
},
"business_detail": null,
"email": "customer@website.com",
"mobile_number": "+628121234567890",
"phone_number": "+628121234567890",
"addresses": [{
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "993448",
"country": "ID",
"category": "HOME",
"is_primary": true
}],
"identity_accounts": [{
"type": "CREDIT_CARD",
"company": "OCBC",
"description": "My account",
"country": "ID",
"properties":{
"token_id": "586f0ba2ab70de5d2b409e0d"
}
}],
"kyc_documents": [{
"type": "IDENTITY_CARD",
"sub_type": "NATIONAL_ID",
"country": "ID",
"document_name": "KTP",
"document_number": "12356789012456",
"expires_at": null,
"holder_name": "John Doe",
"document_images": [
"file-ec700c1c-db17-4496-b1fb-04ebe551b412"
]
}],
"description": "My first customer",
"date_of_registration": "2020-03-30",
"domicile_of_registration": "ID",
"metadata": {
"foo": "bar"
},
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}
Example Customer Object - Business
{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "BUSINESS",
"individual_detail": null,
"business_detail": {
"business_name": "ACME Corp",
"business_type": "CORPORATION",
"nature_of_business": null,
"business_domicile": null,
"date_of_registration": null
},
"email": "customer@website.com",
"mobile_number": null,
"phone_number": null,
"addresses": [],
"identity_accounts": [],
"kyc_documents": [],
"description": null,
"metadata": null,
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string |
Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-... |
||||||||||||||||||||||||||||||||||||||||||||||||
reference_idrequired |
string |
Identifikasi customer dari merchant | ||||||||||||||||||||||||||||||||||||||||||||||||
typerequired |
string |
Tipe customer. Nilai-nilai yang didukung: INDIVIDUAL , BUSINESS |
||||||||||||||||||||||||||||||||||||||||||||||||
individual_detailoptional |
object |
Objek JSON yang memuat informasi individual. Akan kosong apabila type bukan INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailoptional |
object |
Objek JSON yang memuat detail bisnis. Akan kosong apabila type bukan BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor telepon customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak tambahan customer dalam format E.164. Bisa juga telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat email customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objek JSON yang memuat informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsrequired |
array |
Array dari objek JSON dengan informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkait dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan dapat menyimpan informasi akun untuk eksekusi pembayaran dalam ekosistem API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsrequired |
array |
Array dari objek JSON berisi dokumen KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi customer dari merchant.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Objeck dari informasi tambahan yang diberikan pada saat pembuatan customer | ||||||||||||||||||||||||||||||||||||||||||||||||
createdrequired |
string |
Timestamp pembuatan customer dalam format ISO | ||||||||||||||||||||||||||||||||||||||||||||||||
updatedrequired |
string |
Timestamp perubahan status customer terakhir dalam format ISO |
Create Customer
Lakukan request POST ke endpoint ini untuk membuat customer untuk penggunaan nanti dengan endpoint-endpoint pembayaran.
Endpoint: Create Customer
POST https://api.xendit.co/customers
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Create Customer
curl https://api.xendit.co/customers -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H 'Content-Type: application/json'
--data-raw '{
"reference_id": "demo_1475801962607"
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}'
<?php
$url = "https://api.xendit.co/customers";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$data = [
"reference_id" => "demo_1475801962607"
"type" => "INDIVIDUAL",
"individual_detail" => [
"given_names" => "John",
"surname" => "Doe"
],
"email" => "customer@website.com",
"mobile_number" => "+628121234567890"
];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
var reqBody = JSON.stringify({
"reference_id": "demo_1475801962607"
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"});
var requestOptions = {
method: 'POST',
headers: headers,
body: reqBody,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload = {
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;
CustomerParameter individualParameter = new CustomerParameter
{
ReferenceId = "demo_11212163",
Type = CustomerType.Individual,
IndividualDetail = new IndividualDetail
{
GivenNames = "John",
Gender = CustomerGender.Male,
},
IdentityAccount = new IdentityAccount[]
{
new IdentityAccount
{
Country = Country.Indonesia,
Type = CustomerIdentityAccountType.BankAccount,
Properties = new IdentityAccountProperties { AccountNumber = "account_number" }
}
},
KycDocuments = new KycDocument[]
{
new KycDocument
{
Country = Country.Indonesia,
Type = CustomerKycDocumentType.IdentityCard,
SubType = CustomerKycDocumentSubType.NationalId,
}
},
};
CustomerResponse individualCustomerVersion20201031 = await customer.Create(individualParameter);
Header Parameter | Tipe | Deskripsi |
---|---|---|
IDEMPOTENCY-KEYoptional |
string |
Kode unik untuk mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh environment development & production.
|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API tertentu. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
reference_idrequired |
string |
Pengidentifikasi customer yang diberikan oleh merchant. Request dengan reference_id duplikat akan mengembalikan error. Anda harus melakukan PATCH request pada resource customer object.
|
||||||||||||||||||||||||||||||||||||||||||||||||
typerequired |
string |
Tipe customer. Nilai-nilai yang didukung: INDIVIDUAL , BUSINESS |
||||||||||||||||||||||||||||||||||||||||||||||||
individual_detailconditionally required |
object |
Object JSON yang memuat informasi individual. Dibutuhkan apabila tipe adalah INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailconditionally required |
object |
Object JSON object yang memuat informasi bisnis. Dibutuhkan apabila tipe adalah BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor HP customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak tambahan customer dalam format E.164. Bisa sebagai telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
hashed_phone_numberoptional |
string |
Hashed phone number
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat email customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objeck JSON yang memuat informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsoptional |
array |
Array objek JSON yang memuat informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkair dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan informasi akun untuk eksekusi pembayaran dalam ekosistem pembayaran dengan API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsoptional |
array |
Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi customer yang diberikan merchant.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Objek dari informasi tambahan yang berhubungan dengan customer. Definisikan sifat dan nilai JSON sesuai yang dibutuhkan untuk meneruskan informasi melalui API. Anda bisa melakukan spesifikasi sampai 50 kunci, dengan nama kunci sampai 40 karakter dan nilai sampai 500 karakter. Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit. |
Parameter Respon
Respon sukses akan berisi satu Customer Object
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DUPLICATE_ERROR409 |
Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik. |
IDEMPOTENCY_ERROR409 |
Idempotency-key telah digunakan sebelumnya. Gunakan idempotency-key yang unik dan coba kembali. |
Get Customer
Untuk mendapatkan satu objek customer
Endpoint: Get Customer
GET https://api.xendit.co/customers/:id
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Get Customer
curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
--header 'API-VERSION: 2020-10-31'
<?php
$url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$headers[] = "API-VERSION: 2020-10-31";
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
headers.append("API-VERSION", "2020-10-31");
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := customer.getCustomer{
id: 'cust-239c16f4-866d-43e8-9341-7badafbc019f'
}
resp, err := customer.getCustomer(&getCustomerByReferenceIDData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("retrieved customer: %+v\n", resp)
try {
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
Customer[] customers = Customer.getCustomer("cust-239c16f4-866d-43e8-9341-7badafbc019f");
} catch (XenditException e) {
e.printStackTrace();
}
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-... |
Parameter Respon
Respon sukses akan berisi satu Customer Object
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND404 |
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali |
Get Customer by Reference ID
Untuk mendapatkan array customer objek sesuai dengan reference_id
- pengidentifikasi yang anda berikan
Endpoint: Get Customer menggunakan Reference ID
GET https://api.xendit.co/customers?reference_id={reference_id}
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Get Customer menggunakan Reference ID
curl https://api.xendit.co/customers?reference_id=demo_1475801962607 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$url = "https://api.xendit.co/customers";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$queryString = "?reference_id=demo_1475801962607";
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url.$queryString);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
let queryString = "?reference_id=demo_1475801962607";
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url + queryString, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers?reference_id=demo_1475801962607"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Query Parameter | Tipe | Deskripsi |
---|---|---|
reference_idrequired |
string |
Pengidentifikasi anda untuk customer |
Parameter Respon
Contoh respon sukses Get Customer menggunakan Reference ID
{
"data": [{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe",
"nationality": null,
"place_of_birth": null,
"date_of_birth": null,
"gender": null,
"employment": null
},
"business_detail": null,
"email": "customer@website.com",
"mobile_number": null,
"phone_number": null,
"hashed_phone_number": null,
"addresses": [],
"identity_accounts": [],
"kyc_documents": [],
"description": null,
"metadata": null,
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}],
"has_more": false
}
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi |
---|---|---|
data | array |
Array dari Customer Objects yang dikembalikan oleh query. Array bisa kosong |
has_more | boolean |
Mengidentifikasi apakah ada item lainnya yang dapat di-query dengan after_id dari item terakhir pada hasil sekarang |
Kode Error
Lihat lainnya error pada umumnya di sini.
Update Customer
Lakukan request PATCH ke endpoint ini untuk melakukan update pada data customer Anda. Anda hanya dapat mengubah data-data sesuai dengan parameter yang tersedia pada request. Perubahan apapun pada field-field di objek customer akan menggantikan data tersebut secara keseluruhan.
Apabila anda ingin menambahkan data pada suatu array, request PATCH Anda harus memiliki kondisi akhir array yang diinginkan (contoh, konten yang ada sekarang dan elemen array baru yang ingin anda tambahkan). Berikan nilai NULL untuk menghapus konten yang ada sekarang.
Perhatikan bahwa reference_id
dan type
pada suatu customer tidak dapat di-update.
Endpoint: Update Customer
PATCH https://api.xendit.co/customers/:id
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Update Customer
curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X PATCH \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H 'Content-Type: application/json'
--data-raw '{
"individual_detail": {
"given_names": "Jane",
"surname": "Doe"
}
}'
<?php
$url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$data = [
"individual_detail" => [
"given_names" => "Jane",
"surname" => "Doe"
]
];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
var reqBody = JSON.stringify({
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"});
var requestOptions = {
method: 'PATCH',
headers: headers,
body: reqBody,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload = {
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;
CustomerParameter individualParameter = new CustomerParameter
{
Type = CustomerType.Individual,
IndividualDetail = new IndividualDetail
{
GivenNames = "John",
Gender = CustomerGender.Male,
}
};
CustomerResponse individualCustomerVersion20201031 = await customer.Update(individualParameter);
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
individual_detailoptional |
object |
Objek JSON object yang memuat detil individu. Akan gagal validasi API apabila type bukan INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailoptional |
object |
Objek JSON object yang memuat detil bisnis. Akan gagal validasi API apabila type bukan BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor seluler dari customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak customer tambahan dalam format E.164. Bisa sebagai telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat e-mail customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objek JSON yang memuat berbagai informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsoptional |
array |
Array dari objek JSON dengan informasi yang terkait dengan finansial, media sosial, atau akun lain yang berhubungan dengan customer. Array ini dapat menyimpan informasi untuk tujuan KYC dan mendukung penyimpanan informasi akun untuk melakukan pembayaran dalam ekosistem API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsoptional |
array |
Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi yang diberikan merchant untuk customer.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Informasi tambahan objek yang berhubungan dengan customer. Definisikan sifat JSON dan nilai-nilai sesuai yang dibutuhkan untuk meneruskan informasi via API. Anda bisa menetapkan sampai 50 kunci, dengan kata kunci sampai 40 karakter dan nilai-nilai sampai 500 karakter. Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit. |
Parameter Respon
Respon sukses akan berisi satu Customer Object dengan konten yang diperbarui
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND404 |
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali |
Files
API untuk anda melakukan operasi terkait file kustomer anda. Dapat digunakan untuk file customer bersifat bisnis dan individu untuk kebutuhan KYC dan bukti untuk chargeback
Upload File
Lakukan request POST ke endpoint ini untuk mengupload file untuk KYC atau Chargeback Evidence. Saat ini kami mendukung penguploadan file PNG, JPG/JPEG, PDF yang kurang dari 10 MB.
Endpoint: Upload File
POST https://api.xendit.co/files
Parameter Request
Contoh Request Upload File
curl https://api.xendit.co/files -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
--form 'file=@/Users/utkarshagarwal/Desktop/Screenshot 2020-10-13 at 5.28.45 PM.png' \
--form 'purpose=CHARGEBACK_EVIDENCE'
<?php
$url = "https://api.xendit.co/files";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
$headers = [];
$headers[] = "Content-Type: application/json";
$payload = array('file'=> new CURLFILE('~/yourpath/file.png'),'purpose' => 'CHARGEBACK_EVIDENCE');
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let url = "https://api.xendit.co/files";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var formdata = new FormData();
formdata.append("file", fileInput.files[0], "file.png");
formdata.append("purpose", "CHARGEBACK_EVIDENCE");
var requestOptions = {
method: 'POST',
headers: headers,
body: formdata,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={'purpose': 'CHARGEBACK_EVIDENCE'}
files=[
('file', open('/yourpath/file.png','rb'))
]
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Body Parameter | Tipe | Deskripsi |
---|---|---|
purposerequired |
string |
Tujuan dari file yang terupload Nilai-nilai yang didukung: KYC_DOCUMENT , CHARGEBACK_EVIDENCE |
filerequired |
file |
File itu. Nilai-nilai yang didukung: application/pdf , image/png , image/jpg , image/jpeg |
Parameter Respon
Contoh Respon Sukses Upload File
{
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
"purpose": "CHARGEBACK_EVIDENCE",
"created": "2020-10-08T06:38:33.479Z",
"updated": "2020-10-08T06:38:33.479Z",
"type": "image/png",
"size": 10000,
"url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
purposerequired |
string |
Tujuan dari file yang terupload |
createdrequired |
string |
UTC Timestamp pembuatan file dalam format ISO |
updatedrequired |
string |
UTC Timestamp perubahan file terakhir dalam format ISO |
typerequired |
string |
Tipe file |
sizerequired |
integer |
Ukuran file dalam satuan bytes |
urlrequired |
string |
URL untuk mengunduh file |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Validasi input gagal. Field errors dalam response akan merincikan fields yang melanggar validasi. |
FILE_TOO_LARGE 413 |
Ukuran file lebih besar dari 2.000.000 byte dan melebihi batas ukuran. Kecilkan payload sebelum mencoba kembali. |
UNSUPPORTED_CONTENT_TYPE415 |
Format file tidak didukung. Lihat kembali tipe file sebelum mencoba lagi. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
RATE_LIMIT_EXCEEDED 429 |
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama. |
Get File by Id
Melakukan request GET ke endpoint ini untuk mendapatkan informasi detail dari file
Endpoint: Get File
GET https://api.xendit.co/files/{file-id}
Contoh Request Get File
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId;
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Parameter Respon
Contoh Respon Sukses Get File
{
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
"purpose": "CHARGEBACK_EVIDENCE",
"created": "2020-10-08T06:38:33.479Z",
"updated": "2020-10-08T06:38:33.479Z",
"type": "image/png",
"size": 10000,
"url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
purposerequired |
string |
Tujuan dari file yang terupload |
createdrequired |
string |
UTC Timestamp pembuatan file dalam format ISO |
updatedrequired |
string |
UTC Timestamp perubahan file terakhir dalam format ISO |
typerequired |
string |
Tipe file |
sizerequired |
integer |
Ukuran file dalam satuan bytes |
urlrequired |
string |
URL untuk mengunduh file |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
Download File by Id
Melakukan request GET ke endpoint ini untuk mengunduh file
Endpoint: Download File
GET https://api.xendit.co/files/{file-id}/download
Example Download File Request
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download --request GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId . "/download";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId+"/download";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response)
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
RATE_LIMIT_EXCEEDED 429 |
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama. |
Delete File by Id
Melakukan request DELETE ke endpoint ini untuk menghapus file
Endpoint: Delete File
DELETE https://api.xendit.co/files/{file-id}
Contoh request menghapus file
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request DELETE \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId;
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'DELETE',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
Parameter Respon
Contoh respon sukses menghapus file
{
"is_deleted": true,
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "b647524d-9c5d-414c-843a-3c819853d6b0"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
is_deletedrequired |
boolean |
Status penghapusan |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
Laporan
Sebuah API unutk menghasilkan dan mendapatkan laporan. Laporan yang tersedia adalah Laporan Saldo dan Transaksi. Anda dapat menggunakan endpoint ini untuk menghasilkan laporan secara otomatis. Anda dapat menggunakan isi dari laporan untuk melakukan rekonsiliasi. Isi dari laporan pada API ini sama persis dengan yang dapat anda peroleh dari mengunduh di dashboard.
Objek Laporan
Contoh Objek Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "COMPLETED",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body | Tipe | Deskripsi | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
Id unik dari laporan. Id ini akan memiliki prefiks report_ . |
||||||||
type required |
string |
Tipe dari laporan. Tipe yang tersdia:
| ||||||||
filter required |
object |
Filter yang diterapkan pada laporan.Parameter Filter
|
||||||||
format required |
string |
Format dari laporan. Format yang tersedia adalah CSV . |
||||||||
status required |
string |
Status dari laporan. Status awal akan PENDING ketika Anda menghasilkan laporan melalui API.
|
||||||||
url optional |
string |
URL untuk mengunduh laporan setelah berhasil. Laporan hanya dapat diundah dalam waktu 24 jam. Ketika url kedaluwarsa, Anda harus mengirim permintaan ulang untuk menghasilkan laporan. |
||||||||
currency required |
string |
Mata uang di dalam laporan Lihat daftar mata uang yang didukung. |
||||||||
business_id required |
string |
Id dari bisnis Xendit tempat transaksi dilakukan. | ||||||||
created required |
string (ISO 8601 |
Waktu ketika laporan pertama kali diminta pada UTC+0. | ||||||||
updated required |
string (ISO 8601 |
Waktu ketika laporan diperbarui pada UTC+0. |
Menghasilkan Laporan
Endpoint: Menghasilkan Laporan
POST https://api.xendit.co/reports
Gunakan endpoint ini untuk menghasilkan laporan. Anda dapat menentukan tipe dan filter dari konten yang ada pada laporan. Alur dari endpoint ini bersifat asynchronous
. Ini berarti Xendit akan mengirimkan callback
kepada Anda ketika laporan selesai dibuat. Lihat notifikasi laporan untuk informasi lebih lanjut. Cara lainnya, Anda dapat menggunakan endpoint mendaptakan laporan untuk melihat detail dan status dari laporan.
Parameter Request
Header Parameter | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. |
.
Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.
Contoh Permintaan Menghasilkan Laporan
curl https://api.xendit.co/reports -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-d type=BALANCE_HISTORY \
-d currency=IDR
Contoh Respon Menghasilkan Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "PENDING",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body | Tipe | Deskripsi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
type required |
string |
Tipe dari laporan yang akan dihasilkan. Tipe yang tersdia:
| ||||||||||
filter required |
object |
Filter yang diterapkan pada laporan. Parameter Filter
Kombinasi dari from dan to harus kurang dari 31 hari. |
||||||||||
format optionaldefault:
|
string |
Format dari laporan. Format yang tersedia adalah CSV . |
||||||||||
currency optionaldefault:
|
string |
Mata uang untuk difilter Lihat daftar mata uang yang didukung. |
||||||||||
report_version optional |
string |
Parameter ini mengindikasikan versi report/laporan yang hendak Anda gunakan. Parameter ini hanya hanya tersedia untuk Laporan Transaksi (Transactions Report) Nilai default: VERSION_0 Nilai versi <> perubahan: |
Parameter Respon
Mengembalikan Objek Laporan dengan kode status 201
Kode Error
Lihat daftar kode error umum lainnya disini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
INVALID_DATE_RANGE400 |
Rentang dari filter from dan to terlalu besar. Harap kurangi rentang sesuai batasan yang ada pada parameter. |
Mendapatkan Laporan
Endpoint: Mendapatkan Laporan
GET https://api.xendit.co/reports/{report_id}
Gunakan endpoint ini untuk mengapatkan detail laporan secara spesifik berdasarkan id. Anda dapat menggunakan endpoint ini sebagai alternatif dibandingkan menggukanakan callback laporan.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
The sub-account user-id that you want to get this transaction for. This header is only used if you have access to xenPlatform. See xenPlatform for more information |
Contoh Mendapatkan Laporan
curl https://api.xendit.co/transactions/report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Contoh Respon Mendapatkan Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "COMPLETED",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Path | Tipe | Deskripsi |
---|---|---|
report_id required |
string |
The id of report. |
Parameter Respon
Mengembalikan Objek Laporan dengan kode status 200
Kode Error
Lihat daftar kode error umum lainnya disini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
Notifikasi Laporan
Endpoint: Notifikasi Laporan
POST https://yourcompany.com/report_webhook_url
Xendit mengirim notifikasi pembayaran ke sistem Anda melalui webhook. Anda perlu mempersiapkan URL untuk menerima webhook dan mendaftarkan URL tersebut melalui Setelan Webhook pada Dasbor Xendit.
Ketika laporan berhasil diproses, Xendit mengirimkan pesan ke URL menggunakan metode POST secara langsung melalui webhook. Xendit turut melampirkan x-callback-token
header yang dapat Anda validasi dengan Token Verifikasi di Setelan Webhook untuk mengecek keaslian pesan tersebut.
Kami harap sistem Anda dapat merespon webhook dengan status 200
secepatnya. Xendit mengganggap webhook gagal ketika kami tidak menerima respon dari sistem Anda selama 30 detik. Ketika pengiriman pesan gagal, maka upaya pengiriman ulang akan dilakukan secara otomatis sampai 24 jam kedepan. Anda juga dapat mengirimkan ulang pesan secara mandiri melalui tab Webhook bila diperlukan. Terakhir, Anda juga dapat menerima email webhook setiap 6 jam untuk mengecek sistem webhook Anda secara berkala.
Pelajari lebih lanjut mengenai Webhook.
Isi Notifikasi
Contoh Notifikasi Laporan pada Laporan yang Berasil
curl --include \
--request POST \
--header "x-callback-token: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
--header "Content-Type: application/json" \
--data-binary "{
\"id\": \"report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28\",
\"type\": \"BALANCE_HISTORY\",
\"status\": \"PENDING\",
\"filter\": {
\"from\": \"2021-06-23T04:01:55.574Z\",
\"to\": \"2021-06-24T04:01:55.574Z\"
},
\"format\": \"CSV\",
\"currency\": \"IDR\",
\"business_id\": \"5f34f60535ba7c1c0eed846a\",
\"created\": \"2021-06-24T04:01:55.570Z\",
\"updated\": \"2021-06-24T04:01:55.570Z\"
}}" \
'{{your_company_domain}}/{{webhook_url}}'
Parameter Header | Tipe | Description |
---|---|---|
x-callback-tokenwajib |
string |
Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut |
webhook-idwajib |
string |
ID webhook yang dapat Anda gunakan untuk implementasi idempotensi di sistem Anda guna menangani skenario penerimaan webhook yang sama/duplikat di sistem Anda. Ketika Anda menerima nilai webhook-id yang sama pada webhook berikutnya, hindari atau tolak pemrosesan webhook tersebut untuk mencegah pemrosesan berulang. |
Parameter Body | Tipe | Deskripsi | ||||||
---|---|---|---|---|---|---|---|---|
event wajib |
string |
Tipe dari notifikasi. Tipe yang tersedia:
| ||||||
Report Object |
Parameter lainnya sama dengan objek laporan. |
Laporan Riwayat Saldo
Laporan riwayat saldo adalah laporan yang menunjukkan daftar riwayat dari pergerakan saldo pada akun anda. Laporan ini sama dengan laporan pada Menu Saldo di dashboard. Anda dapat menggukan laporan ini untuk memeriksa saldo harian atau melakukan rekonsiliasi antara data transaksi Anda dengan saldo yang berubah pada akun. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe BALANCE_HISTORY
.
Kolom Laporan
Kolom | Deskripsi | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product Id | ID yang dihasilkan oleh Xendit untuk tiap produk | ||||||||||||||||||||||||
Transaction Id | Id unik Xendit yang dihasilkan pada setiap transaksi. Anda dapat menggunakan id ini untuk mencocokkan transaksi dan biayanya, atau mencocokkan antara transaksi pada laporan transaksi dan riwayat saldo. | ||||||||||||||||||||||||
Transaction Type | Daftar tipe transaksi:
|
||||||||||||||||||||||||
Line Type | Tipe baris yang tersedia:
|
||||||||||||||||||||||||
Payment Channel | Kanal untuk mengidentifikasi sumber dari transaki. Lihat kode kanal untuk informasi lebih lanjut. |
||||||||||||||||||||||||
Reference | Id yang dihasilkan oleh Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan ‘external_id’ | ||||||||||||||||||||||||
Currency | Mata uang transaksi. Lihat daftar mata uang yang didukung. |
||||||||||||||||||||||||
Amount | Nominal dari transaksi. Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217. |
||||||||||||||||||||||||
Balance | Saldo Anda pada transaksi ini. | ||||||||||||||||||||||||
Debit or Credit |
|
||||||||||||||||||||||||
Created Date ISO | Waktu ketika transaksi dibuat berdasarkan format ISO 8601. | ||||||||||||||||||||||||
Timezone | Zona waktu dengan format “+XXXX UTC”. Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna. |
||||||||||||||||||||||||
Created Date | Waktu ketika transaksi dibuat. | ||||||||||||||||||||||||
Payment Date | Waktu ketika pembayaran diterima tetapi belum masuk ke saldo Anda. Hanya tersedia untuk transaksi pembayaran. | ||||||||||||||||||||||||
Settlement Date | Waktu ketika pembayaran diterima dan ditambahkan pada saldo Anda. Hanya tersedia untuk transaksi pembayaran. | ||||||||||||||||||||||||
Completed Date | Waktu ketika dana telah dikirimkan ke penerima. Hanya tersedia untuk transaksi disbursement. | ||||||||||||||||||||||||
Bank Code | Kode bank yang digunakan sebagai sumber atau tujuan transaksi. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT . |
||||||||||||||||||||||||
Name | Nama dari VA atau penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT .. |
||||||||||||||||||||||||
Account Number | Nomor rekening VA atay penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT . |
||||||||||||||||||||||||
Description | Deskripsi dari transaksi. | ||||||||||||||||||||||||
Invoice ID | Id invoice. Hanya tersedia untuk pembayaran melalui invoice.. | ||||||||||||||||||||||||
Bank Reference | Referensi bank yang digunakan unuk transaksi DISBUSEMENT |
Laporan Transaksi
Laporan transaksi adalah laporan yang menunjukkan semua transaksi yang ada entah transaksi itu telah masuk ke saldo atau tidak. Laporan ini tidak akan menunjukkan topup dan withdrawal yang bukan merupakan transaksi. Laporan ini sama dengan laporan pada Menu Transaksi di dashboard. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe TRANSACTIONS
.
Kolom Laporan
Kolom | Deskripsi | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Status dari transaksi
|
||||||||||||||
Type | Tipe dari transaksi
|
||||||||||||||
Channel | Kanal untuk mengidentifikasi sumber dari transaksi. Kanal yang tersedia untuk tiap tipe adalah:
|
||||||||||||||
Channel Name | Nama kanal yang tersedia akan berbeda untuk tiap kanal. Lihat kode kanal untuk informasi lebih lanjut |
||||||||||||||
Account Number | Nomor akun yang digunakan pada transaksi. Hal ini akan berbeda untuk tiap kanal. Sebagai contoh, pada kanal CARD ini akan berupa sebagian nomor kartu kredit dan pada kanal BANK akan berupa nomor rekening. |
||||||||||||||
Currency | Mata uang transaki. See our supported currencies. |
||||||||||||||
Amount | Nominal dari transaksi. Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217. |
||||||||||||||
Fee Amount | Nominal dari biaya. | ||||||||||||||
VAT Amount | Nominal PPN dari transaski | ||||||||||||||
Net Amount | Nominal bersih transaksi setelah dikurangi biaya dan pajak. | ||||||||||||||
Reference | Refernsi dari transksi. Ini dihasilkan dari sisi Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan External Id | ||||||||||||||
Transaction Id | Id dari transaksi | Invoice Id | Id dari invoice. Jika ini transaksi pembayaran menggunakan invoice. | Batch Id | Id batch settlement untuk transaksi kartu kredit | Payment Id | Id pembayaran yang dihasilkan oleh Xendit dan sama dengan id pada produk | Payment Date | Waktu ketika pembayaran tercatat di Xendit | Timestamp - Created | Waktu ketika transaksi dibuat pertama kali | Timestamp - Updated | Waktu ketika transaksi diperbarui | Timestamp - Settled | Waktu ketika transaksi telah masuk ke saldo Anda |
Timezone | Zona waktu dengan format “+XXXX UTC”. Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna. |
||||||||||||||
Description | Deskripsi transaksi | ||||||||||||||
Channel Reference | Referensi yang dihasilkan oleh mitra kanal kami. Ini dapat digunakan untuk rekonsiliasi antara sisi Anda, Xendit, dan mitra kami. |
Transaksi
Sebuah API untuk mencari dan melihat transaksi. Transaksi yang ada meliputi uang masuk, uang keluar, dan transfer yg terjadi dalam akun. Anda dapat menggunakan endpoint tunggal ini untuk mendapatkan status transaksi dan melakukan rekonsiliasi. API ini sama persis dengan menu transaksi yang ada di dashboard. Lihat dokumentasi kami tentang petunjuk penggunan menu transaksi untuk rekonsiliasi.
Objek Transaksi
Contoh Objek Transaksi
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23232",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"status": "SUCCESS",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z",
"fee": {
"xendit_fee": 1500,
"value_added_tax": 500,
"xendit_withholding_tax": 0,
"third_party_withholding_tax": 0,
"status": "COMPLETED"
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
Id unik dari transaksi. Id akan memiliki prefiks txn_ . |
||||||||||||||||||||||||||||
product_id required |
string |
Id produk dari sebuah transaksi. Id ini akan memiliki prefiks yang berbeda untuk tiap produk. Anda dapat menggukana id ini untuk mencocokkan antara transaksi dari API ini ke tiap API produk. | ||||||||||||||||||||||||||||
type required |
string |
Tipe dari transaksi. Tipe yang tersedia::
| ||||||||||||||||||||||||||||
channel_code optional |
string |
Kanal dari transaksi yang digunakan. Lihat kode kanal untuk daftar kanal yang ada tiap kategori. |
reference_id required |
string |
Referensi dari sebuat transaksi Untuk beberapa produk, referensi lebih dikenal dengan external_id . Ini adalah id yang dibuat oleh Anda dan dapat digunakan untuk rekonsiliasi.. |
account_identifier optional |
string |
Account identifer atau pengenal dari akun yang digunakan untuk setiap transaksi. Formatnya akan berbeda untuk setiap jeniis kanal transaksi. Sebagai contoh, pada kanal BANK akan berisi nomer rekining dan pada CARD akan berisi sebagian nomor kartu kredit. |
currency optional |
string (ISO 4217) |
ata uang transaksi. Lihat daftar mata uang yang didukung oleh Xendit. |
amount required |
number |
Nominal dari transaksi. Jumlah angka desimal akan berbeda untuk tiap mata uang sesuai ISO 4217. |
net_amount required |
number |
Nominal bersih dari transaksi yang telah dipotong biaya dan pajak.. | cashflow required |
string |
Menunjukkan apakah transaksi uang masuk atau uang keluar. Untuk transfer, transfer keluar akan tercatat sebagai uang keluar dan transfer masuk sebagai uang masuk. Nilai yang tersedia adalah MONEY_IN untuk uang masuk and MONEY_OUT untuk uang keluar. |
||||||||||
status required |
string |
string | Status transaksi. Status yg tersedia:
| channel_category required |
string |
Kategori kanal dari transaksi untuk mengidentifikasi sumber dari transaksi kanal yang tersedia untuk tiap tipe adalah:
|
|||||||||||||||||||||||||
business_id required |
string |
Id dari bisnis yang melakukan transaksi ini. | ||||||||||||||||||||||||||||
created required |
string (ISO 8601) |
Waktu ketika transaksi ini dibuat saat UTC+0. | ||||||||||||||||||||||||||||
updated required |
string (ISO 8601) |
Waktu terakhir ketika transaksi ini diperbarui saat UTC+0. | ||||||||||||||||||||||||||||
fee required |
object |
| ||||||||||||||||||||||||||||
settlement_status optional |
string |
Status settlement akan muncul untuk transaksi uang masuk. Untuk transaksi uang keluar, nilainya adalah NULL
|
||||||||||||||||||||||||||||
estimated_settlement_time optional |
string (ISO 8601) |
Estimated settlement time akan muncul untuk transaksi uang masuk. Untuk transaksi uang keluar, nilainya adalah NULL Estimasi tanggal dan jam di mana nominal transaksi akan ter-settle ke saldo merchant. Contoh: "2022-04-26T08:44:39.566Z" |
Mendapatkan Transaksi
Endpoint: Mendapatkan Transaksi
GET https://api.xendit.co/transactions/{transaction_id}
Gunakan endpoint ini untuk mendaptkan sebuah detail transaksi yang spesifik berdasarkan id transaksi. Jika Anda ingin melakukan pencarian menggunakan parameter lain atau menginginkan hasil yang banyak, lihat mendapatkan daftar transaksi
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut. |
Contoh Permintaan Mendapatkan Transaksi
curl https://api.xendit.co/transactions/txn_13dd178d-41fa-40b7-8fd3-f83675d6f413 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Contoh Respon Mendapatkan Transaksi
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23232",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z"
}
Parameter Path | Tipe | Deskripsi |
---|---|---|
transaction_id required |
string |
Id dari transaksi. |
Parameter Respon
Mengembalikan Objek Transaksi dengan kode HTTP status 200
Kode Error
Lihat contoh umum error lainya di sini.
Kode Error | Deskripsi |
---|---|
TRANSACTION_NOT_FOUND404 |
Transaksi dengan id ini tidak ditemukan. |
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
Mendapatkan Daftar Transaksi
Endpoint: Mendapatkan Daftar Transaksi
GET https://api.xendit.co/transactions
Gunakan endpoint ini untuk mendapatkan seluruh transaksi atau memilih filter dan kata kunci tertentu. Anda dapat melakukan filter menggunakan waktu, tipe, atau status. Anda juga dapat melakukan pencarian berdasarkan referensi atau id produk. Hasil daftar transaksi yang dikembalikan akan menggunakan paginasi dan terurut berdasakan waktu pembuatan.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut. |
Contoh Permintaan Mendapatkan Daftar Transaksi
curl https://api.xendit.co/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Parameter Query | Tipe | Deskripsi |
---|---|---|
types optional |
array of strings |
Tipe transaksi yang akan difilter. Jika tidak ditentukan, semua tipe transaksi akan dikembalikan. Tipe yang tersedia: DISBURSEMENT : Disbursement dari transaksi uang keluar. PAYMENT : Pembayaran yang meliputi semua jenis uang masuk. REMITTANCE_PAYOUT : Transaksi remittance untuk payout. TRANSFER : Transaski transfer antar akun Xendit. Transfer bisa keluar atau masuk. REFUND : Sebuah transaksi pengembalian dana telah dibuat untuk melakukan pengembalian dana dari transaksi masuk. |
statuses optional |
array of strings |
Status transaksi yang akan difilter. Jika tidak ditentukan, semua status transaksi akan dikembalikan. Status yg tersedia: PENDING : Transaksi masih menunggu diproses. Ini merujuk pada transaksi uang keluar ketika saldo uang Anda masih ditahan. SUCCESS : Transaksi uang keluar telah berashil dikirim atau uang masuk telah diterima. FAILED : Transaksi gagal untuk dikirim/diterima. VOIDED : Transaksi uang masuk dibatalkan oleh kustomer.REVERSED : Transaksi dibatalkan oleh Xendit. |
channel_categories optional |
array of strings |
Kanal transaksi yang akan difilter. Jika tidak ditentukan, semua kanal transaksi akan dikembalikan. Untuk tipe DISBURSEMENT dan REMITTANCE_PAYOUT , kategori kanal yang tersedia adalah BANK and CASH . Untuk tipe PAYMENT , kategori kanal yang tersedia adalah CARDS , CARDLESS_CREDIT , DIRECT_DEBIT , EWALLET , PAYLATER , QR_CODE , RETAIL_OUTLET , VIRTUAL_ACCOUNT . Sedangkan untuk tipe TRANSFER , kategori kanal yang tersedia adalah XENPLATFORM . |
reference_id optional |
string |
Referensi yang akan dicari. Pencarian menggunakan referensi adalah case sensitive dan dapat parsial. |
product_id optional |
string |
Id produk yang akan dicari. Pencarian menggunakan id produk adalah case sensitive dan sama persis. |
account_identifier optional |
string |
Account identifier yang akan dicari. Pencarian menggunakan ccount identifier adalah case sensitive dan sama persis. |
currency optionaldefault:
|
string (ISO 4217) |
Mata uang yang akan difilter. Lihat datafat mata uang yang didukung. |
amount optional |
number |
Nominal transaksi yang akan dicari. Pencarian ini akan mencari dengan nilai yang sama persis. |
created[gte] optional |
string (ISO 8601) |
Batas awal waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
created[lte] optional |
string (ISO 8601) |
Batas akhi waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
updated[lte] optional |
string (ISO 8601) |
Batas awal waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
updated[gte] optional |
string (ISO 8601) |
Batas akhir waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
limit optionaldefault:
|
number |
Batas dari jumlah transaksi yang dikembalikan untuk tiap request. Batas berada dalam rentang 1 and 50. |
after_id optional |
string |
Batas id dari transaksi sebelumnya. Gunakan ini bersama links pada respon untuk keperluan paginasi. |
before_id optional |
string |
Batas id dari transaksi setelahnya. |
Parameter Respon
Contoh Respon Mendapatkan Daftar Transaksi
{
"has_more": true,
"data": [
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23244",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z"
},
{
"id": "txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0700",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref242424",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:39:23.176Z",
"updated": "2021-06-23T02:39:23.176Z"
}
],
"links": [
{
"href": "/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2&after_id=txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
"method": "GET",
"rel": "next"
}
]
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
data required |
array of objects |
Mengembalikan array Objek Transaksi. Mengembalikan array kosong bila hasil tidak ditemukan. |
has_more required |
bolean |
Mengindikasikan apakah masih ada transaksi lainnya pada halaman selanjutnya menggukan parameter after_id . Gunakan links untuk mendapatkan hasil selanjutnya. |
links optional |
object |
Tautan ke hasil selanjutnya berdasakan HATEOAS jika ada. Format HATEOAS adalah: href : URI dari target, ini akan berisi tautan ke halaman selanjutnya. rel : Hubungan antara sumber dan target, nilainya akan berisi next . method : Metode HTTP, ini akan berisi GET . |
Kode Error
Lihat contoh umum error lainya di sini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
BI SNAP
API BI SNAP kami dapat membantu Anda untuk melakukan penarikan dan penerimaan pembayaran secara efisien dan sesuai aturan di Indonesia. BI SNAP adalah integrasi yang disarankan untuk merchant Indonesia yang menerima pembayaran dari E-wallet, QRIS, dan metode pembayaran Bank di Indonesia.
Buat Penautan Akun
Endpoint: Request Pembuatan Penautan Akun
POST https://api.xendit.co/snap/v1.0/registration-account-binding
SNAP Penautan Akun
API ini digunakan untuk membuat penautan akun tanpa melakukan pembayaran. Penautan akun akan menghasilkan token yang dapat digunakan hingga pembayaran selanjutnya.
Parameter Request
Contoh: Request Pembuatan Penautan Akun
curl https://api.xendit.co//snap/v1.0/registration-account-binding -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409",
"phoneNo": "+628123123123",
"additionalData": {
"userId": "fc4c060b-3c41-4707-b7b2-df9c3376edde"
},
"additionalInfo": {
"payMethod": "EWALLET",
"payOption": "OVO",
"reusability": "ONE_TIME_USE",
"metadata": {
"sku": "ABCDEFGH"
}
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
partnerReferenceNooptional |
string |
ID transaksi di sistem pengguna layanan | |||||||||||||||||||||||||||||
additionalDataconditionally required |
object |
Informasi spesifik dari masing-masing kanal pembayaran, yang diperlukan agar transaksi dapat diinisiasi Kondisional untuk BRI
|
|||||||||||||||||||||||||||||
merchantIdoptional |
string |
ID yang berasal oleh Xendit untuk bisnis/akun pemilik transaksi. Field ini akan diabaikan oleh Xendit | |||||||||||||||||||||||||||||
phoneNooptional |
string |
Nomor telepon end customer yang terdaftar pada mitra kanal pembayaran. Menggunakan format E.164. Wajib untuk: OVO (ONE_TIME_USE) BRI | |||||||||||||||||||||||||||||
additionalInforequired |
object |
Informasi tambahan yang dibutuhkan untuk melengkapi transaksi Detail objek parameter
|
Parameter Respon
Contoh: Respon Sukses API Dari Request Pembuatan Penautan Akun
{
"responseCode": "2020700",
"responseMessage": "Request In Progress",
"referenceNo": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409",
"additionalInfo": {
"paymentMethod": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"reusability": "ONE_TIME_USE",
"customerId": "fc4c060b-3c41-4707-b7b2-df9c3376edde",
"businessId": "5f27a14a9bf05c73dd040bc8",
"status": "PENDING",
"country": "ID",
"ewallet": {
"channelCode": "OVO",
"channelProperties": {
"mobileNumber": "+628123123123"
},
"account": {
"accountDetails": null,
"name": null,
"balance": null,
"pointBalance": null
}
},
"referenceId": "371d8a6e-587c-4789-bea5-fac4319b2409",
"created": "2020-08-29T09:12:33.001Z",
"updated": "2020-08-29T09:12:33.001Z",
"metadata": {
"sku": "ABCDEFGH"
}
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||
referenceNorequired |
string |
ID unik dari payment method. Memiliki prefiks pm-- | ||||||||||||||||||||||||||||||||||||||||||||
partnerReferenceNooptional |
string |
ID yang ditentukan oleh merchant untuk transaksi terkait. | ||||||||||||||||||||||||||||||||||||||||||||
nextActionoptional |
string |
URL ke laman otentikasi. | ||||||||||||||||||||||||||||||||||||||||||||
paramsoptional |
object |
Detail objek parameter
|
||||||||||||||||||||||||||||||||||||||||||||
userInfooptional |
object |
Detail objek parameter
|
||||||||||||||||||||||||||||||||||||||||||||
additionalInforequired |
object |
Detail objek payment method
|
Code Error
Contoh: Respon Error API Untuk Request Penautan Akun
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4000700 | Parsing error generik |
400 | 4000701 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4000702 | Field atau header yang wajib tidak ditemukan |
401 | 4010700 | Authorization error generik |
401 | 4010701 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4010701 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4010715 | Forbidden error generik |
403 | 4010723 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4090700 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4090701 | Sudah ada objek dengan reference yang sama |
Mendapatkan Status Penautan Akun
Endpoint: Mendapatkan Status Penautan Akun
POST https://api.xendit.co/snap/v1.0/registration-account-inquiry
Parameter Request
Contoh: Mendapatkan Status Penautan Akun
curl https://api.xendit.co/snap/v1.0/registration-account-inquiry -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description |
---|---|---|
partnerReferenceNooptional |
string |
ID transaksi di sistem pengguna layanan |
Parameter Respon
Contoh: Respon Sukses Untuk API Mendapatkan Status Penautan Akun
{
"responseCode": "2000800",
"responseMessage": "Successful",
"referenceNo": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409",
"accountCurrency": "IDR",
"additionalInfo": {
"paymentMethod": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "DIRECT_DEBIT",
"reusability": "MULTIPLE_USE",
"customerId": "fc4c060b-3c41-4707-b7b2-df9c3376edde",
"businessId": "5f27a14a9bf05c73dd040bc8",
"status": "REQUIRES_ACTION",
"country": "ID",
"actions": [
{
"action": "AUTH",
"urlType": "API",
"url": "https://api.xendit.co/payment_methods/d0860b92-a72e-41ff-a758-33850a6f8683/auth",
"method": "POST"
}
],
"directDebit": {
"channelCode": "BRI",
"type": "DEBIT_CARD",
"channelProperties": {
"mobileNumber": "+62818555988",
"cardLastFour": "8888",
"cardExpiry": "06/24",
"email": "test.email@xendit.co"
},
"debitCard": {
"mobileNumber": "+62818555988",
"cardLastFour": "8888",
"cardExpiry": "06/24",
"email": "test.email@xendit.co"
},
"bankAccount": null
},
"referenceId": "371d8a6e-587c-4789-bea5-fac4319b2409",
"created": "2020-08-29T09:12:33.001Z",
"updated": "2020-08-29T09:12:33.001Z",
"metadata": {
"sku": "ABCDEFGH"
}
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||
referenceNooptional |
string |
ID unik dari payment method. Memiliki prefiks pm-- | ||||||||||||||||||||||||||||||||||||||||||||
partnerReferenceNooptional |
string |
ID yang ditentukan oleh merchant untuk transaksi terkait. | ||||||||||||||||||||||||||||||||||||||||||||
accountCurrencyrequired |
string |
Harus diset ke 'IDR'. | ||||||||||||||||||||||||||||||||||||||||||||
accountNameoptional |
string |
Nama akun yang terdaftar. | ||||||||||||||||||||||||||||||||||||||||||||
additionalInforequired |
object |
Detail objek Payment Method
|
Code Error
Contoh: Respon Error API Untuk Request Mendapatkan Status Penautan Akun
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4000800 | Parsing error generic |
400 | 4000801 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4000802 | Field atau header yang wajib tidak ditemukan |
401 | 4010800 | Authorization error generik |
401 | 4010801 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4010801 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4010815 | Forbidden error generik |
403 | 4010823 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4090800 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4090801 | Sudah ada objek dengan reference yang sama |
Hapus Tautan Akun
Endpoint: Hapus Tautan Akun
POST https://api.xendit.co/snap/v1.0/registration-account-unbinding
Parameter Request
Contoh: Hapus Tautan Akun
curl https://api.xendit.co/snap/v1.0/registration-account-inquiry -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409"
}' \
Parameter Header | Tipe | Deskripsi |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description |
---|---|---|
partnerReferenceNooptional |
string |
ID transaksi di sistem pengguna layanan |
Parameter Response
Contoh: Respon Sukses API Untuk Hapus Tautan Akun
{
"responseCode": "2000800",
"responseMessage": "Successful",
"referenceNo": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"partnerReferenceNo": "371d8a6e-587c-4789-bea5-fac4319b2409",
"accountCurrency": "IDR",
"additionalInfo": {
"paymentMethod": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "DIRECT_DEBIT",
"reusability": "MULTIPLE_USE",
"customerId": "fc4c060b-3c41-4707-b7b2-df9c3376edde",
"businessId": "5f27a14a9bf05c73dd040bc8",
"status": "INACTIVE",
"country": "ID",
"actions": [
{
"action": "AUTH",
"urlType": "API",
"url": "https://api.xendit.co/payment_methods/d0860b92-a72e-41ff-a758-33850a6f8683/auth",
"method": "POST"
}
],
"directDebit": {
"channelCode": "BRI",
"type": "DEBIT_CARD",
"channelProperties": {
"mobileNumber": "+62818555988",
"cardLastFour": "8888",
"cardExpiry": "06/24",
"email": "test.email@xendit.co"
},
"debitCard": {
"mobileNumber": "+62818555988",
"cardLastFour": "8888",
"cardExpiry": "06/24",
"email": "test.email@xendit.co"
},
"bankAccount": null
},
"referenceId": "371d8a6e-587c-4789-bea5-fac4319b2409",
"created": "2020-08-29T09:12:33.001Z",
"updated": "2020-08-29T09:12:33.001Z",
"metadata": {
"sku": "ABCDEFGH"
}
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||
referenceNooptional |
string |
ID unik dari payment method. Memiliki awalan pm- | ||||||||||||||||||||||||||||||||||||||||||||
partnerReferenceNooptional |
string |
ID untuk transaksi terkait. Disediakan oleh merchant | ||||||||||||||||||||||||||||||||||||||||||||
accountCurrencyrequired |
string |
Harus diset ke 'IDR'. | ||||||||||||||||||||||||||||||||||||||||||||
accountNameoptional |
string |
Nama akun yang terdaftar | ||||||||||||||||||||||||||||||||||||||||||||
additionalInforequired |
object |
Detail dari objek payment method
|
Kode Error
Contoh: Respon Error API Untuk Request Pembatalan Binding
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4000800 | Parsing error generik |
400 | 4000801 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4000802 | Field atau header yang wajib tidak ditemukan |
401 | 4010800 | Authorization error generik |
401 | 4010801 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4010801 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4010815 | Forbidden error generik |
403 | 4010823 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4090800 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4090801 | Sudah ada objek dengan reference yang sama |
Verifikasi OTP Penautan Akun
Endpoint: Verifikasi OTP Penautan Akun
POST https://api.xendit.co/snap/v1.0/otp-verification
Parameter Request
Contoh: Verifikasi OTP Penautan Akun
curl https://api.xendit.co/snap/v1.0/registration-account-inquiry -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"originalReferenceNo": "pm-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"otp": "123456",
"type": "binding"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description |
---|---|---|
originalReferenceNorequired |
string |
ID untuk payment method yang disediakan oleh Xendit |
otprequired |
string |
Kode otorisasi atau OTP yang diinput oleh end customer |
typerequired |
string |
Harus diset sebagai 'binding' |
Parameter Respon
Contoh: Respon Sukses API Untuk Menampilkan Status Penautan Akun
{
"responseCode": "2000400",
"responseMessage": "Successful",
"originalReferenceNo": "pm-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77"
}
Body Parameter | Type | Description |
---|---|---|
responseCoderequired |
string |
Kode respon |
responseMessagerequired |
string |
Deskripsi respon |
originalReferenceNooptional |
string |
ID unik untuk payment method. Prefix bisa bermacam-macam, menyesuaikan dengan payment method yang digunakan |
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran yang sebenarnya. |
customerIdoptional |
string |
ID yang disediakan Xendit untuk end customer. |
Code Error
Contoh: Respon Error API Untuk Request Validasi Penautan Akun
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4000400 | Parsing error generik |
400 | 4000401 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4000402 | Field atau header yang wajib tidak ditemukan |
401 | 4010400 | Authorization error generik |
401 | 4010401 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4010401 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4010415 | Forbidden error generik |
403 | 4010423 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4090400 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4090401 | Sudah ada objek dengan reference yang sama |
VA - Pembuatan
Endpoint: Membuat Virtual Account
POST https://api.xendit.co/snap/v1.0/transfer-va/create-va
SNAP Pembuatan Virtual Account
API ini dapat digunakan untuk membuat Virtual Account baru (Service code: 27)
Parameter Request
Contoh: Request Membuat Virtual Account
curl https://api.xendit.co/snap/v1.0/transfer-va/create-va -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"virtualAccountName": "John Doe",
"trxId": "12349876",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"freeTexts": [
{
"english": "Please pay for service"
}
],
"expiredDate": "2020-12-31T23:59:59-07:00",
"additionalInfo": {
"channelCode": "MANDIRI",
"reusability": "ONE_TIME_USE"
}
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
partnerServiceIdoptional |
string |
Parameter ini diabaikan oleh Xendit. | ||||||||||
customerNooptional |
string |
Parameter ini diabaikan oleh Xendit. | ||||||||||
virtualAccountNooptional |
string |
Anda dapat menentukan nomor Virtual Account spesifik dalam parameter ini. Jika Anda tidak menentukannya, maka nomor Virtual Account random akan dipilihkan untuk Anda. Mohon pastikan nomor yang Anda tentukan berada dalam range Virtual Account Anda dan bukan bagian dari merchant code sebagai prefiks. | ||||||||||
virtualAccountNamerequired |
string |
Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas. Karakter yang diperbolehkan hanya dalam bentuk alfabet. Untuk BCA Aggregator, alfabet and nomor diperbolehkan. Panjang minimum 1 karakter, kecuali BCA dimana panjang minimum adalah 3 karakter. |
||||||||||
trxIdrequired |
string |
ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account. | ||||||||||
totalAmountconditionally required |
object |
Jumlah pembayaran yang diharapkan pada transaksi dalam mata uang yang didukung. Dapat dikosongkan untuk jumlah pembayaran Open Virtual Account. Kondisional untuk jumlah pembayaran Closed Virtual
|
||||||||||
freeTextsoptional |
array of object |
Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account. Objek free text
|
||||||||||
expiredDateoptional |
string |
Tanggal kedaluwarsa untuk Virtual Account dalam format ISO-8601. Contoh: 2023-12-12T23:59:59+07:00. Tanggal kedaluwarsa standar adalah 31 tahun dari pembuatan Virtual Account | ||||||||||
additionalInforequired |
object |
Informasi tambahan untuk menyelesaikan pembayaran Detail objek parameter
|
Parameter Respon
Contoh: Respon Sukses API Untuk Pembuatan Request Virtual Account
{
"responseCode": "2002700",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": "123459",
"customerNo": "99993701870",
"virtualAccountNo": "1234599993701870",
"virtualAccountName": "John Doe",
"trxId": "12349876",
"expiredDate": "2023-12-31T23:59:59.000Z",
"additionalInfo": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"status": "ACTIVE",
"reusability": "MULTIPLE_USE",
"channelCode": "BRI"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
virtualAccountDataoptional |
object |
Hanya untuk respon berhasil
|
Kode Error
Contoh: Respon Error API Untuk Pembuatan Request Virtual Account
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4002700 | Parsing error generik |
400 | 4002701 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4002702 | Field atau header yang wajib tidak ditemukan |
401 | 4012700 | Authorization error generik |
401 | 4012701 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4012701 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4012715 | Forbidden error generik |
403 | 4012723 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4092700 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4092701 | Sudah ada objek dengan reference yang sama |
VA - Mendapatkan Status
Endpoint: Mendapatkan Status Virtual Account
POST https://api.xendit.co/snap/v1.0/transfer-va/inquiry-va
SNAP Menampilkan Status Request VA
API ini dapat digunakan untuk melakukan request untuk mendapatkan status dari Virtual Account yang telah dibuat sebelumnya. (Service code: 30)
Parameter Request
Example: Mendapatkan Status VA
curl https://api.xendit.co/snap/v1.0/transfer-va/inquiry-va -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"trxId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description |
---|---|---|
partnerServiceIdoptional |
string |
Parameter ini diabaikan oleh Xendit. |
customerNooptional |
string |
Parameter ini diabaikan oleh Xendit. |
virtualAccountNooptional |
string |
Parameter ini diabaikan oleh Xendit. |
trxIdrequired |
string |
ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account. |
Parameter Respon
Example: Respon Sukses API Untuk Mendapatkan Status VA
{
"responseCode": "2002700",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": "123459",
"customerNo": "99993701870",
"virtualAccountNo": "1234599993701870",
"virtualAccountName": "John Doe",
"trxId": "12349876",
"expiredDate": "2023-12-31T23:59:59.000Z",
"additionalInfo": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"status": "ACTIVE",
"reusability": "MULTIPLE_USE",
"channelCode": "BRI"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
virtualAccountDataoptional |
object |
Hanya untuk respon berhasil
|
Kode Error
Contoh: Respon Error API Untuk Mendapatkan Status VA
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4003000 | Parsing error generik |
400 | 4003001 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4003002 | Field atau header yang wajib tidak ditemukan |
401 | 4013000 | Authorization error generik |
401 | 4013001 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4013001 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4013015 | Forbidden error generik |
403 | 4013023 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4093000 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4093001 | Sudah ada objek dengan reference yang sama |
VA - Perbarui
Endpoint: Memperbarui Virtual Account
POST https://api.xendit.co/snap/v1.0/transfer-va/update-va
SNAP Memperbarui Virtual Account
API ini dapat digunakan untuk memperbarui Virtual Account yang telah dibuat sebelumnya. Mohon dicatat bahwa Closed Virtual Account tidak dapat diubah/diperbarui menjadi Open Virtual Account, beget juga sebaliknya.(Service code: 28)
Parameter Request
Contoh: Request Memperbarui Virtual Account
curl https://api.xendit.co/snap/v1.0/transfer-va/update-va -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"virtualAccountName": "John Doe",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"freeTexts": [
{
"english": "Please pay for service"
}
],
"expiredDate": "2020-12-31T23:59:59-07:00"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
partnerServiceIdoptional |
string |
Parameter ini diabaikan oleh Xendit. | ||||||
customerNooptional |
string |
Parameter ini diabaikan oleh Xendit. | ||||||
virtualAccountNamerequired |
string |
Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas. Karakter yang diperbolehkan hanya dalam bentuk alfabet. Untuk BCA Aggregator, alfabet and nomor diperbolehkan. Panjang minimum 1 karakter, kecuali BCA dimana panjang minimum adalah 3 karakter. |
||||||
totalAmountconditionally required |
object |
Jumlah pembayaran yang diharapkan pada transaksi dalam mata uang yang didukung. Dapat dikosongkan untuk jumlah pembayaran Open Virtual Account. Kondisional untuk jumlah pembayaran Closed Virtual Account
|
||||||
freeTextsoptional |
array of object |
Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account. Free text objects
|
||||||
expiredDateoptional |
string |
ISO-8601 Tanggal kedaluwarsa untuk Virtual Account dalam format ISO-8601. Contoh: 2023-12-12T23:59:59+07:00. Tanggal kedaluwarsa standar adalah 31 tahun dari pembuatan Virtual Account | ||||||
additionalInforequired |
object |
Informasi tambahan untuk menyelesaikan pembayaran Object parameters details
|
Parameter Respon
Contoh: Respon Sukses API Untuk Request Memperbarui Virtual Account
{
"responseCode": "2002700",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": "123459",
"customerNo": "99993701870",
"virtualAccountNo": "1234599993701870",
"virtualAccountName": "John Doe",
"trxId": "12349876",
"expiredDate": "2023-12-31T23:59:59.000Z",
"additionalInfo": {
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"status": "ACTIVE",
"reusability": "MULTIPLE_USE",
"channelCode": "BRI"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
virtualAccountDataoptional |
object |
Hanya untuk respon berhasil
|
Kode Error
Contoh: Update Virtual Account Request API Error Response
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4002800 | Parsing error generik |
400 | 4002801 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4002802 | Field atau header yang wajib tidak ditemukan |
401 | 4012800 | Authorization error generik |
401 | 4012801 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4012801 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4012815 | Forbidden error generik |
403 | 4012823 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4092800 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4092801 | Sudah ada objek dengan reference yang sama |
VA - Nonaktifkan
Endpoint: Menonaktifkan Virtual Account
POST https://api.xendit.co/snap/v1.0/transfer-va/delete-va
SNAP Menonaktifkan Virtual Account
API ini dapat digunakan untuk menonaktifkan Virtual Account yang telah dibuat sebelumnya. (Service code: 31)
Parameter Request
Contoh: Request Menonaktifkan Virtual Account
curl https://api.xendit.co/snap/v1.0/transfer-va/delete-va -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"trxId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description |
---|---|---|
partnerServiceIdoptional |
string |
Parameter ini diabaikan oleh Xendit. |
customerNooptional |
string |
Parameter ini diabaikan oleh Xendit. |
virtualAccountNooptional |
string |
Parameter ini diabaikan oleh Xendit. |
trxIdrequired |
string |
ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account. |
Parameter Respon
Example: Respon Sukses API Untuk Menonaktifkan Virtual Account
{
"responseCode": "2003100",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": "123459",
"customerNo": "99993701870",
"virtualAccountNo": "1234599993701870",
"virtualAccountName": "John doe",
"trxId": "12349876",
"expiredDate": "2020-12-31T23:59:59-07:00",
"additionalInfo": {
"channelCode": "BRI",
"id": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"status": "EXPIRED"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
virtualAccountDataoptional |
object |
Hanya untuk respon berhasil
|
Kode Error
Contoh: Respon Error API Untuk Request Menonaktifkan Virtual Account
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4003100 | Parsing error generik |
400 | 4003101 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4003102 | Field atau header yang wajib tidak ditemukan |
401 | 4013100 | Authorization error generik |
401 | 4013101 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4013101 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4013115 | Forbidden error generik |
403 | 4013123 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4093100 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4093101 | Sudah ada objek dengan reference yang sama |
VA - Callback
Xendit akan memberitahu sistem Anda jika terdapat pembayaran yang berhasil melalui webhook. Anda perlu menyiapkan URL untuk menerima webhook tersebut. Silakan atur URL Anda di Webhook Settings.
Respon yang diharapkan adalah HTTP 200 status. Xendit akan menganggap event webhook gagal jika tidak terdapat respon Dalam 30 detik.
Pelajari lebih lanjut tentang Webhook.
Objek Header Notifikasi
Contoh: Payload Webhook Pembayaran Yang Berhasil
{
"type": "snap_virtual_account.payment",
"payload": {
"partnerServiceId": "38165",
"customerNo": "9999900674",
"virtualAccountNo": "381659999900674",
"virtualAccountName": "John Doe",
"trxId": "trx-1726657919",
"paymentRequestId": "pm-2803bb6c-f1e1-4d38-ad09-da25d5bdcf4a",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"trxDateTime": "2024-09-18T11:12:19.000Z",
"referenceNo": "95ee9898-e6f6-4dba-aeb3-3198fcdf3cf9",
"freeTexts": [
{
"english": "Please pay for service"
}
],
"additionalInfo": {
"id": "95ee9898-e6f6-4dba-aeb3-3198fcdf3cf9",
"paymentId": "95ee9898-e6f6-4dba-aeb3-3198fcdf3cf9",
"country": "ID",
"status": "SUCCEEDED",
"created": "2024-09-18T11:12:20.631Z",
"updated": "2024-09-18T11:12:20.631Z",
"virtualAccountInfo": {
"id": "pm-2803bb6c-f1e1-4d38-ad09-da25d5bdcf4a",
"reusability": "MULTIPLE_USE",
"channelCode": "BCA",
"trxId": "trx-1726657919"
}
}
},
"headers": {
"x-partner-id": "64e8508e3a4184dd951c2f29",
"x-external-id": "XENDIT",
"channel-id": "XENDIT"
}
}
Header Object Parameter | Type | Description |
---|---|---|
channel-idrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
x-external-idrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
x-partner-idrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
x-signaturerequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
x-timestamprequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Objek Payload Notifikasi
Payload Object Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
partnerServiceIdrequired |
string |
Parameter ini diabaikan oleh Xendit. | ||||||||||||||||||||||||||||||||||||
customerNorequired |
string |
Parameter ini diabaikan oleh Xendit. | ||||||||||||||||||||||||||||||||||||
virtualAccountNorequired |
string |
Anda dapat menentukan nomor Virtual Account spesifik dalam parameter ini. Jika Anda tidak menentukannya, maka nomor Virtual Account random akan dipilihkan untuk Anda. Mohon pastikan nomor yang Anda tentukan berada dalam range Virtual Account Anda dan bukan bagian dari merchant code sebagai prefiks. | ||||||||||||||||||||||||||||||||||||
virtualAccountNamerequired |
string |
Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas. Karakter yang diperbolehkan hanya dalam bentuk alfabet. Untuk BCA Aggregator, alfabet and nomor diperbolehkan. Panjang minimum 1 karakter, kecuali BCA dimana panjang minimum adalah 3 karakter. |
||||||||||||||||||||||||||||||||||||
trxIdrequired |
string |
ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account. | ||||||||||||||||||||||||||||||||||||
paidAmountrequired |
object |
Jumlah aktual yang dibayarkan Kondisional untuk jumlah Closed Virtual
|
||||||||||||||||||||||||||||||||||||
trxDateTimerequired |
string |
Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. Contoh: 2020-08-29T09:12:33.001Z | ||||||||||||||||||||||||||||||||||||
referenceNorequired |
string |
ID pembayaran yang dapat digunakan untuk rekonsiliasi | ||||||||||||||||||||||||||||||||||||
freeTextsoptional |
array of object |
Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account. Objek free text
|
||||||||||||||||||||||||||||||||||||
additionalInforequired |
object |
Informasi tambahan untuk menyelesaikan pembayaran Detail parameter
|
Key | Value | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
paymentIdrequired |
string ID pembayaran internal dalam sistem Xendit |
||||||||||
countryoptional |
string Kode negara dalam format ISO 3166-2 yang terdiri dari 2 hurt, menjelaskan negara dimana transaksi dilakukan. |
||||||||||
statusrequired |
string Status dari pembayaran. Value yang tersedia: SUCCEEDED , FAILED
|
||||||||||
createdoptional |
string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. |
||||||||||
updatedoptional |
string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Example: 2020-08-29T09:12:33.001Z |
||||||||||
senderNameoptional |
string Nama dari end user yang membayar Virtual Account. Parameter ini hanya didukung oleh BSS VA |
||||||||||
paymentDetailoptional |
Informasi tambahan dari bank. Detail parameter
|
Key | Value |
---|---|
remarkoptional |
string Pesan yang diinput oleh pembayar saat akan melakukan pembayaran, hanya didukung oleh BSS. |
referenceoptional |
string Nomor referensi dari bank yang dapay digunakan untuk rekonsiliasi, hanya didukung oleh BCA dengan model komersial switcher. |
optional
object
Kolom bebas dalam format JSON untuk informasi tambahan lainnya. required
Detail parameter object
Key | Value |
---|---|
idrequired |
string ID Virtual Account. |
reusabilityrequired |
string Tipe Virtual Account. Value yang tersedia: ONE_TIME_USE , MULTIPLE_USE
|
channelCodeoptional |
string ID untuk partner kanal pembayaran. Value yang tersedia: BCA , BSI , BJB , CIMB SAHABAT_SAMPOERNA , ARTAJASA , BRI , BNI , MANDIRI , PERMATA
|
trxIdrequired |
string ID transaksi Virtual Account. |
QR - Pembuatan
Endpoint: Membuat QR
POST https://api.xendit.co/snap/v1.0/qr/qr-mpm-generate
SNAP Kode QR
API ini dapat digunakan untuk membuat kode QR. (Service code: 47)
Parameter Request
Contoh: Request Pembuatan QR
curl https://api.xendit.co/snap/v1.0/qr/qr-mpm-generate -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"partnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf7",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"reusability": "ONE_TIME_USE"
}
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
partnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual | ||||||||||
amountconditionally required |
object |
Jumlah pembayaran dari transaksi. Dibutuhkan untuk ONE_TIME_USE QR dan akan diabaikan untuk MULTIPLE_USE QR. Kondisional untuk
|
Key | Value |
---|---|
valuerequired |
string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00 |
currencyrequired |
string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR. |
required
object
Detail parameter objek
Key | Value |
---|---|
reusabilityrequired |
string Menjelaskan apakah kode QR dapat digunakan untuk sekali pembayaran atau dapat juga digunakan untuk pembayaran berulang. Value yang tersedia: ONE_TIME_USE , MULTIPLE_USE
|
paymentMethodReferenceIdoptional |
string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis. |
metadataoptional |
string Tanggal dimana kode QR akan kedaluwarsa. Format: ISO-8601. |
metadataoptional |
object Kolom bebas dalam format JSON untuk informasi tambahan lainnya. |
Parameter Respon
Contoh: Respon Sukses API Untuk Request Pembuatan Kode QR
{
"responseCode": "2004700",
"responseMessage": "Successful",
"referenceNo": "2020102900000000000002",
"partnerReferenceNo": "f5e6bb35-2c51-4880-9f19-883856031c30",
"qrContent": "random-qr-string",
"additionalInfo": {
"paymentMethodId": "pm-8c5edad9-32f6-40fa-a24e-0c4e6874c943",
"paymentMethodReferenceId": "620b9df4-fe69-4bfd-b9d4-5cba6861dc7d",
"paymentMethodStatus": "PENDING",
"reusability": "ONE_TIME_USE",
"created": "2023-01-05T13:15:45.265367951Z",
"updated": "2023-01-05T13:15:45.265367951Z"
}
}
Body Parameter | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||
referenceNorequired |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||||||
partnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual. | ||||||||||||||||||
qrContentrequired |
string |
QR string yang diberikan untuk ditampilkan kepada end user. | ||||||||||||||||||
additionalInforequired |
object |
Informasi tambahan untuk menyelesaikan transaksi Detail objek parameter
|
Kode Error
Contoh: Respon Error API Untuk Request Pembuatan Kode QR
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4004700 | Parsing error generik |
400 | 4004701 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4004702 | Field atau header yang wajib tidak ditemukan |
401 | 4014700 | Authorization error generik |
401 | 4014701 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4014701 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4014715 | Forbidden error generik |
403 | 4014723 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4094700 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4094701 | Sudah ada objek dengan reference yang sama |
QR - Mendapatkan Status Pembayaran
Endpoint: Request Mendapatkan Status Pembayaran QR
POST https://api.xendit.co/snap/v1.0/qr/qr-mpm-query
SNAP Kode QR
API ini dapat digunakan untuk melakukan request untuk mendapatkan status pembayaran dari QR Payment Request. (Service code: 51)
Parameter Request
Contoh: Request Mendapatkan Status Pembayaran QR Code
curl https://api.xendit.co/snap/v1.0/qr/qr-mpm-query -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"serviceCode": "47",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
Body Parameter | Type | Description |
---|---|---|
originalPartnerReferenceNooptional |
string |
ID orisinil pada sistem layanan konsumer. Antara originalReferenceNo atau originalPartnerReferenceNo wajib ada pada request. |
originalReferenceNooptional |
string |
ID yang disediakan Xendit untuk payment request. Antara parameter ini atau referenceNo wajib disediakan. originalPartnerReferenceNo wajib ada pada request. |
serviceCoderequired |
string |
Harus diset sebagai '47' |
Parameter Respon
Contoh: Respon Sukses API Mendapatkan Status Pembayaran QR
{
"responseCode": "2005100",
"responseMessage": "Successful",
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77",
"serviceCode": "47",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"paymentMethodId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"paymentMethodReferenceId": "2020102900000000000001",
"reusability": "ONE_TIME_USE",
"paymentMethodStatus": "INACTIVE",
"created": "2020-08-29T09:12:33.001Z",
"updated": "2020-08-29T09:12:33.001Z",
"metadata": {
"sku": "ABCDEFGH"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||
originalReferenceNooptional |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||||||||
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual. | ||||||||||||||||||||
serviceCoderequired |
string |
Diset sebagai '47' | ||||||||||||||||||||
latestTransactionStatusrequired |
string |
Status transaksi terakhir. Value yang tersedia: 00 , 03 , 04 , 06 |
||||||||||||||||||||
transactionStatusDescoptional |
string |
Deskripsi status transaksi | ||||||||||||||||||||
amountconditionally required |
object |
Jumlah pembayaran dari transaksi Informasi objek
|
||||||||||||||||||||
additionalInforequired |
object |
Informasi tambahan untuk menyelesaikan transaksi Detail parameter objek
|
Kode Error
Contoh: Respon Error API Untuk Mendapatkan Status Pembayaran QR
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4005100 | Parsing error generik |
400 | 4005101 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4005102 | Field atau header yang wajib tidak ditemukan |
401 | 4015100 | Authorization error generik |
401 | 4015101 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4015101 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4015115 | Forbidden error generik |
403 | 4015123 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4095100 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4095101 | Sudah ada objek dengan reference yang sama |
QR - Callback
Xendit akan memberitahu sistem Anda jika terdapat pembayaran yang berhasil melalui webhook. Anda perlu menyiapkan URL untuk menerima webhook tersebut. Silakan atur URL Anda di Webhook Settings.
Respon yang diharapkan adalah HTTP 200 status. Xendit akan menganggap event webhook gagal jika tidak terdapat respon Dalam 30 detik.
Pelajari lebih lanjut tentang Webhook.
Objek Header Notifikasi
Example: Success Payment Webhook Payload
{
"type": "snap_qr.payment",
"payload": {
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"id": "qrpy-av8faa22-145e5-4766e-bdee-867c46f32cc4",
"paymentMethodId": "pm-0fec5f39-de53-42f0-8443-6bc037138e32",
"paymentMethodReferenceId": "331b2b98-2adf-43b5-8c3f-9b0d76026c9d",
"created": "2023-03-07T12:05:02.894821985Z",
"updated": "2023-03-07T12:05:02.894821985Z"
},
"headers": {
"x-partner-id": "64e8508e3a4184dd951c2f29",
"x-external-id": "XENDIT",
"channel-id": "XENDIT"
}
}
Header Object Parameter | Type | Description |
---|---|---|
channel-idrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
x-external-idrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
x-partner-idrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
x-signaturerequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
x-timestamprequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Objek Payload Notifikasi
Payload Object Parameter | Type | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
originalReferenceNorequired |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. | ||||||||||||||
latestTransactionStatusrequired |
string |
Status terakhir dari transaksi. Value yang tersedia: 00 , 06 |
||||||||||||||
transactionStatusDescrequired |
string |
Deskripsi dari status transaksi | ||||||||||||||
amountrequired |
object |
Actual paid amount Informasi objek
|
||||||||||||||
additionalInforequired |
object |
Informasi tambahan mengenai pembayaran QR Detail parameter
|
Key | Value |
---|---|
idrequired |
string ID unik untuk pembayaran. |
paymentMethodIdrequired |
string ID unik untuk payment method. |
paymentMethodReferenceIdrequired |
string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis. |
createdoptional |
string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. |
updatedoptional |
string TTimestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Contoh: 2020-08-29T09:12:33.001Z |
metadataoptional |
object Kolom bebas dalam format JSON untuk informasi tambahan lainnya. |
Direct Debit - Buat Pembayaran
Endpoint: Membuat Pembayaran Direct Debit
POST https://api.xendit.co/snap/v1.0/debit/payment-host-to-host
SNAP Pembayaran Direct Debit
API ini dapat digunakan untuk menginisiasi pembayaran satu kali (one time payment) atau payment request dari akun yang sudah ditautkan sebelumnya (payment method harus sudah tersedia). Berdasarkan dari kode respon, action tambahan mungkin diperlukan, contoh: mengalihkan end user atau melakukan verifikasi pembayaran menggunakan OTP. API ini dapat digunakan untuk semua kanal pembayaran E-Wallet dan Direct Debit.(Service code: 54)
Parameter Request
Contoh: Request Buat Pembayaran Direct Debit
curl https://api.xendit.co/snap/v1.0/debit/payment-host-to-host -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"partnerReferenceNo": "2020102900000000000001",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"customerId": "fc4c060b-3c41-4707-b7b2-df9c3376edde",
"paymentMethodId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"channelProperties": {
"redeemPoints": "REDEEM_ALL"
},
"metadata": {
"sku": "ABCDEFGH"
}
}
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
WITH-SPLIT-RULEoptional |
string |
ID Split Rule yang akan Anda gunakan pada transaksi ini. Header ini hanya digunakan jika Anda adalah pengguna xenPlatform. Mohon diingat: Jika Anda menggunakan parameter ini, kami akan mengembalikan split_rule_id pada header dari respon API. Jika tidak terdapat header for-user-id, Split Rule akan tetap diberlakukan dari akun platform ke sub-account tujuan. |
Body Parameter | Type | Description | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
partnerReferenceNorequired |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual. | ||||||||||||||||||||||||||
amountconditionally required |
object |
Jumlah dari transaksi. Wajib untuk ONE_TIME_USE QR dan akan diabaikan untuk MULTIPLE_USE QR. Kondisional untuk
|
Key | Value |
---|---|
valuerequired |
string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00 |
currencyrequired |
string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR. |
optional
array
urlParam
dengan type PAY_RETURN dibutuhkan untuk for: OVO (MULTIPLE_USE), DANA, SHOPEEPAY.urlParam
dengan type FAILURE_RETURN dibutuhkan untuk for: OVO (MULTIPLE_USE), DANA (MULTIPLE_USE), SHOPEEPAY (MULTIPLE_USE) Informasi objek untuk masing-masing array item
Key | Value |
---|---|
urlrequired |
string URL dimana end customer akan diarahkan jika otorisasi berhasil (untuk skenario type PAY_RETURN), tidak berhasil (untuk skenario type FAILURE_RETURN) atau dibatalkan (untuk skenario CANCEL_RETURN) |
typerequired |
string Tipe URL. Value yang diperbolehkan: PAY_RETURN , FAILURE_RETURN , CANCEL_RETURN
|
isDeeplinkoptional |
boolean Menjelaskan apabila URL merupakan format deeplink. Xendit tidak mendukung URL deeplink untuk URL yang disediakan oleh merchant, maka field ini akan diabaikan. |
conditionally required
array
Informasi objek untuk masing-masing array item
Key | Value | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
payMethodrequired |
string Tipe dari payment method. Value yang tersedia: EWALLET , DIRECT_DEBIT |
||||||||||||||||||
payOptionrequired |
string ID/pengenal untuk partner kanal pembayaran. Value yang tersedia untuk payMethod EWALLET: OVO , DANA , LINKAJA , JENIUSPAY , ASTRAPAY , SHOPEEPAY . Value yang tersedia untuk payMethod DIRECT_DEBIT: BRI |
||||||||||||||||||
additionalInfoconditionally required |
object Dibutuhkan untuk OVO one time payment, BRI , JENIUSPAY
Informasi objek
|
optional
object
Detail objek parameter
Key | Value | ||||||
---|---|---|---|---|---|---|---|
customerIdrequired |
string ID yang disediakan oleh Xendit untuk end customer. Dibutuhkan untuk beberapa kanal pembayaran seperti Multiple-use e-wallet dan direct debit. |
||||||
paymentMethodIdoptional |
string ID dari PaymentMethod yang telah disimpan sebelumnya untuk digunakan pada transaksi ini. Wajib jika payOptionDetails tidak ditentukan. |
||||||
channelPropertiesoptional |
object Parameter tambahan untuk masing-masing kanal pembayaran Detail objek parameter
|
||||||
descriptionoptional |
string Kolom bebas untuk informasi tambahan lainnya yang berkaitan dengan payment request. |
||||||
metadataoptional |
object Kolom bebas dengan format JSON untuk informasi tambahan lainnya. |
Parameter Respon
Contoh: Respon Sukses API Membuat Pembayaran Direct Debit
{
"responseCode": "2005400",
"responseMessage": "Successful",
"referenceNo": "ewc_6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"partnerReferenceNo": "2020102900000000000001",
"webRedirectUrl": "https://link-web.xendit.co/oauth/lat-4ec01c8d-0326-4a35-bc11-b64c85f7408e/confirm",
"additionalInfo": {
"paymentMethodId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"actions": [
{
"action": "AUTH",
"method": "GET",
"url": "https://link-web.xendit.co/oauth/lat-4ec01c8d-0326-4a35-bc11-b64c85f7408e/confirm",
"urlType": "WEB"
}
],
"metadata": {
"sku": "ABCDEFGH"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||
referenceNooptional |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||||||||||
partnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual | ||||||||||||||||||||||
approvalCodeoptional |
string |
Jika status transaksi adalah FAILED, parameter ini menjelaskan alasan kegagalan. Tidak akan muncul jika status transaksi tidak gagal. | ||||||||||||||||||||||
appRedirectUrloptional |
string |
URL pengalihan yang disediakan menggunakan deep linking untuk mengarahkan ke platform partner. | ||||||||||||||||||||||
webRedirectUrloptional |
string |
Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web. | ||||||||||||||||||||||
additionalInfooptional |
object |
Informasi tambahan mengenai transaksi Detail objek parameter
|
Code Error
Contoh: Respon Error API Pembuatan Pembayaran Direct Debit
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4005400 | Parsing error generik |
400 | 4005401 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4005402 | Field atau header yang wajib tidak ditemukan |
401 | 4015400 | Authorization error generik |
401 | 4015401 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4015401 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4015415 | Forbidden error generik |
403 | 4015423 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4095400 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4095401 | Sudah ada objek dengan reference yang sama |
Direct Debit - Mendapatkan Status Pembayaran
Endpoint: Request Mendapatkan Status Pembayaran Direct Debit
POST https://api.xendit.co/snap/v1.0/debit/status
SNAP Menampilkan Pembayaran Direct Debit
API ini dapat digunakan untuk mendapatkan status dari Payment request spesifik. (Service code: 55)
Parameter Request
Contoh: Request Mendapatkan Status Pembayaran Direct Debit
curl https://api.xendit.co/snap/v1.0/debit/status -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77",
"serviceCode": "54"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
FOR-USER-IDoptional |
string |
user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform. |
Body Parameter | Type | Description |
---|---|---|
originalPartnerReferenceNooptional |
string |
ID transaksi orisinil dari sistem layanan konsumer. Antara parameter ini atau originalReferenceNo wajib diisi |
originalReferenceNooptional |
string |
ID yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi |
serviceCoderequired |
string |
Harus diset menjadi ‘54’ |
Parameter Respon
Contoh: Respon Sukses API Mendapatkan Status Pembayaran Direct Debit
{
"responseCode": "2005500",
"responseMessage": "Successful",
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77",
"serviceCode": "54",
"latestTransactionStatus": "03",
"transactionStatusDesc": "REQUIRES_ACTION",
"transAmount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"customerId": "fc4c060b-3c41-4707-b7b2-df9c3376edde",
"paymentMethodId": "pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"paymentMethodReferenceId": "2020102900000000000001",
"actions": [
{
"action": "RESEND_AUTH",
"method": "POST",
"url": "https://merchant-url/resent-otp",
"urlType": "DEEPLINK"
}
],
"channelProperties": {},
"metadata": {
"sku": "ABCDEFGH"
}
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||||||||||||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||||||||||||||||||||||||||||
originalReferenceNooptional |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||||||||||||||||||||||||||||||||
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual | ||||||||||||||||||||||||||||||||||||||||||||
serviceCoderequired |
string |
Set menjadi '54' | ||||||||||||||||||||||||||||||||||||||||||||
latestTransactionStatusrequired |
string |
Status transaksi terakhir. Value yang tersedia: 00 , 01 , 02 , 03 , 04 , 05 , 06 , 07 |
||||||||||||||||||||||||||||||||||||||||||||
transactionStatusDescoptional |
string |
Deskripsi status transaksi | ||||||||||||||||||||||||||||||||||||||||||||
transAmountconditionally required |
object |
Amount of the transaction Informasi objek
|
||||||||||||||||||||||||||||||||||||||||||||
additionalInfooptional |
object |
Informasi tambahan mengenai transaksi Detail objek parameter
|
Code Error
Contoh: Respon Error API Mandapatkan Status Pembayaran Direct Debit
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4005500 | Parsing error generik |
400 | 4005501 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4005502 | Field atau header yang wajib tidak ditemukan |
401 | 4015500 | Authorization error generik |
401 | 4015501 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4015501 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4015515 | Forbidden error generik |
403 | 4015523 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4095500 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4095501 | Sudah ada objek dengan reference yang sama |
Direct Debit - Pengembalian Dana
Endpoint: Request Pengembalian Dana Pembayaran Direct Debit
POST https://api.xendit.co/snap/v1.0/debit/refund
SNAP Pengembalian Dana Pembayaran Direct Debit
API ini dapat digunakan untuk pengembalian dana pembayaran (Service code: 58)
Parameter Request
Contoh: Request Pengembalian Dana Direct Debit
curl https://api.xendit.co/snap/v1.0/debit/refund -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77",
"partnerRefundNo": "5eea215e-e116-439a-a087-76fc906501e1",
"reason": "FRAUDULENT",
"refundAmount": {
"value": "100000.00",
"currency": "IDR"
}
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
originalPartnerReferenceNooptional |
string |
ID transaksi orisinil dari sistem layanan konsumer. Antara parameter ini atau originalReferenceNo wajib diisi | ||||||
originalReferenceNooptional |
string |
Xendit ID yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi | ||||||
partnerRefundNooptional |
string |
ID yang disediakan oleh merchant untuk request pengembalian dana. Jika merchant tidak menyediakan, maka akan dibuat secara otomatis. | ||||||
refundAmountconditionally required |
object |
Jika refundAmount tidak disediakan, request pengembalian dana akan menginput jumlah terbesar yang memungkinkan untuk dikembalikan dari transaksi terkait. Kondisional untuk
|
Key | Value |
---|---|
valuerequired |
string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00 |
currencyrequired |
string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR. |
optional
string
FRAUDULENT
, DUPLICATE
, REQUESTED_BY_CUSTOMER
, CANCELLATION
, OTHERS
optional
object
Detail objek parameter
Key | Value |
---|---|
metadataoptional |
object Kolom bebas dengan format JSON untuk informasi tambahan lainnya. |
Parameter Respon
Contoh: Respon Sukses API Untuk Request Menampilkan Direct Debit
{
"responseCode": "2005800",
"responseMessage": "Successful",
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"refundNo": "rfd-b0abb4fe-4b98-4c07-92d4-3f33fc79aefc",
"partnerRefundNo": "5eea215e-e116-439a-a087-76fc906501e1",
"refundAmount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"channelCode": "SHOPEEPAY",
"status": "SUCCESS",
"reason": "FRAUDULENT"
}
}
Body Parameter | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
responseCoderequired |
string |
Kode respon | ||||||||||||||||||
responseMessagerequired |
string |
Deskripsi respon | ||||||||||||||||||
originalReferenceNooptional |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. | ||||||||||||||||||
refundNooptional |
string |
ID yang disediakan Xendit untuk request pengembalian dana | ||||||||||||||||||
partnerRefundNooptional |
string |
ID yang disediakan oleh merchant untuk request pengembalian dana. Jika merchant tidak menyediakan, maka akan dibuat secara otomatis. | ||||||||||||||||||
refundAmountconditionally required |
object |
Jika refundAmount tidak disediakan, request pengembalian dana akan menginput jumlah terbesar yang memungkinkan untuk dikembalikan dari transaksi terkait. Kondisional untuk
|
Key | Value |
---|---|
valuerequired |
string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00 |
currencyrequired |
string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR. |
required
object
Detail objek parameter
Key | Value |
---|---|
channelCoderequired |
string ID untuk partner kanal pembayaran |
statusrequired |
string Status dari pengembalian dana. Value yang tersedia: SUCCESS , FAILED , PENDING
|
reasonrequired |
string Alasan mengapa request pengembalian dana dilakukan. Value yang tersedia: FRAUDULENT , DUPLICATE , REQUESTED_BY_CUSTOMER
|
failureCodeoptional |
string status transaksi adalah gagal, parameter ini menjelaskan alasan kegagalan.. |
refundFeeAmountoptional |
string Biaya tambahan untuk memproses pengembalian dana. Hanya diisi jika berlaku. |
createdoptional |
string Timestamp dalam format ISO 8601 saat payment request dibuat |
updated optional |
string Timestamp dalam format ISO 8601 saat payment request terakhir kali diperbarui |
metadataoptional |
object Kolom bebas dalam format JSON untuk informasi tambahan lainnya. |
Kode Error
Contoh: Respon Error API Untuk Pengembalian Dana Direct Debit
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4005800 | Parsing error generik |
400 | 4005801 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4005802 | Field atau header yang wajib tidak ditemukan |
401 | 4015800 | Authorization error generik |
401 | 4015801 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4015801 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4015815 | Forbidden error generik |
403 | 4015823 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4095800 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4095801 | Sudah ada objek dengan reference yang sama |
Direct Debit - Verifikasi OTP
Endpoint: Request Verifikasi OTP Pembayaran Direct Debit
POST https://api.xendit.co/snap/v1.0/otp-verification
SNAP Verifikasi OTP
API ini dapat digunakan untuk melakukan verifikasi OTP jika dibutuhkan pada proses pembayaran.(Service code: 04)
Parameter Request
Contoh: Request Verifikasi OTP Direct Debit
curl https://api.xendit.co/snap/v1.0/otp-verification -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'CHANNEL-ID: 123123' \
--header 'Content-Type: application/json' \
--header 'X-EXTERNAL-ID: 123123' \
--header 'X-PARTNER-ID: 123123' \
--header 'X-SIGNATURE: fc4c060b3c414707b7b2df9c3376edde' \
--header 'X-TIMESTAMP: 2020-08-29T09:12:33.001Z' \
--data '{
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"otp": "123456",
"type": "payment"
}' \
Header Parameter | Type | Description |
---|---|---|
CHANNEL-IDrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
X-EXTERNAL-IDrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
X-PARTNER-IDrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
X-SIGNATURErequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
X-TIMESTAMPrequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Body Parameter | Type | Description |
---|---|---|
originalReferenceNooptional |
string |
Xendit D yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi |
otpoptional |
string |
Kode otorisasi atau OTP yang diinput oleh end customer |
typeoptional |
string |
Harus diset sebagai 'payment'. Value yang tersedia: payment |
Parameter Respon
Contoh: Respon Sukses API Untuk Request Menampilkan Direct Debit
{
"responseCode": "2000400",
"responseMessage": "Successful",
"originalReferenceNo": "pr-bc9faa22-23e5-486e-bfee-869c46d32cc3",
"originalPartnerReferenceNo": "0f38e017-007f-4134-9e5d-86657ec0cf77"
}
Body Parameter | Type | Description |
---|---|---|
responseCoderequired |
string |
Kode respon |
responseMessagerequired |
string |
Deskripsi respon |
originalReferenceNooptional |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan. |
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual |
customerIdoptional |
string |
ID yang disediakan Xendit untuk end customer |
Kode Error
Contoh: Respon Error Untuk API Verifikasi OTP
{
"responseCode": "4000000",
"responseMessage": "Bad Request"
}
HTTP error | Response Code | Response Message |
---|---|---|
400 | 4000400 | Parsing error generik |
400 | 4000401 | Format field yang tidak sesuai (contoh: format string digunakan saat seharusnya menggunakan format number, atau penggunaan enum value yang tidak sesuai, dll.) |
400 | 4000402 | Field atau header yang wajib tidak ditemukan |
401 | 4010400 | Authorization error generik |
401 | 4010401 | Authorization bearer token yang disediakan tidak sesuai |
403 | 4010401 | Merchant tidak diperbolehkan untuk melakukan request ini |
403 | 4010415 | Forbidden error generik |
403 | 4010423 | Jumlah pada parameter amount yang ditetapkan lebih besar atau lebih kecil dari yang didukung oleh kanal pembayaran |
409 | 4090400 | X-EXTERNAL-ID token yang sama telah digunakan dalam 24 jam terakhir |
409 | 4090401 | Sudah ada objek dengan reference yang sama |
Direct Debit - Callback
Xendit akan memberitahu sistem Anda jika terdapat pembayaran yang berhasil melalui webhook. Anda perlu menyiapkan URL untuk menerima webhook tersebut. Silakan atur URL Anda di Webhook Settings.
Respon yang diharapkan adalah HTTP 200 status. Xendit akan menganggap event webhook gagal jika tidak terdapat respon Dalam 30 detik.
Pelajari lebih lanjut tentang Webhook.
Objek Header Notifikasi
Contoh: Payload Webhook Pembayaran Yang Berhasil
{
"type": "snap.direct_debit.succeeded",
"payload": {
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"createdTime": "2020-08-29T09:12:33.001Z",
"additionalInfo": {
"id": "ddpy-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"updated": "2020-08-29T09:12:33.001Z",
"paymentMethodId": "pm-5f964f11-3a74-4df2-bdc4-0778b3e836d4",
"paymentMethodReferenceId": "c2a6c16f-84b9-4f21-8db3-dc0ddcbbfec7"
},
"originalReferenceNo": "ddpy-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39",
"transactionStatusDesc": "Success",
"latestTransactionStatus": "00",
"originalPartnerReferenceNo": "c2a6c16f-84b9-4f21-8db3-dc0ddcbbfec7"
},
"headers": {
"x-partner-id": "64e8508e3a4184dd951c2f29",
"x-external-id": "XENDIT",
"channel-id": "XENDIT"
}
}
Header Object Parameter | Type | Description |
---|---|---|
channel-idrequired |
string |
Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’. |
Content-Typerequired |
string |
Harus diset ke application/json |
x-external-idrequired |
string |
Juga diketahui sebagai idempotency key. Disediakan untuk menghindari request yang terduplikasi. Bisa dianggap sama dengan UUID manapun. Idempotency keys akan disimpan pada request layer; dan akan kedaluwarsa setelah 24 jam setelah request pertama. Contoh: f4d53a90-86aa-46f4-8738-169a4912eff0 |
x-partner-idrequired |
string |
Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c |
x-signaturerequired |
string |
Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut. |
x-timestamprequired |
string |
Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD. |
Objek Payload Notifikasi
Payload Object Parameter | Type | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
originalReferenceNorequired |
string |
ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan | ||||||||||||||||||||||||
originalPartnerReferenceNooptional |
string |
ID yang disediakan merchant untuk transaksi terkait | ||||||||||||||||||||||||
latestTransactionStatusrequired |
string |
Status transaksi terbaru dari pembayaran tersebut. Value yang diperbolehkan: 00 , 06 |
||||||||||||||||||||||||
transactionStatusDescrequired |
string |
Deskripsi dari status transaksi | ||||||||||||||||||||||||
createdTimerequired |
string |
Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. Contoh: 2024-08-29T09:12:33.001Z | ||||||||||||||||||||||||
amountrequired |
object |
Jumlah aktual yang dibayar Informasi objek
|
||||||||||||||||||||||||
additionalInforequired |
object |
Informasi tambahan tentang pembayaran.
|
Key | Value | ||||||
---|---|---|---|---|---|---|---|
idrequired |
string ID unik utuk pembayaran. |
||||||
paymentMethodIdrequired |
string ID unit untuk payment method. |
||||||
paymentMethodReferenceIdrequired |
string ID yang disediakan oleh merchant untuk payment method terkait. Jika merchant tidak menyediakannya, Xendit akan mengisinya secara otomatis. |
||||||
createdoptional |
string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. |
||||||
updatedoptional |
string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Example: 2020-08-29T09:12:33.001Z |
||||||
descriptionoptional |
string deskripsi dari payment request. |
||||||
failureCodeoptional |
string Jika status dari transaksi adalah gagal, parameter ini akan menjelaskan alasan dari kegagalan. |
||||||
channelPropertiesoptional |
object Informasi tambahan mengenai kanal pembayaran.
|
Key | Value |
---|---|
successReturnUrlrequired |
string URL dimana end customer akan diarahkan jika otorisasi berhasil. |
failureReturnUrlrequired |
string URL dimana end customer akan diarahkan jika otorisasi gagal. |
Credit Cards
Fitur API kartu kredit kami membantu Anda untuk memroses transaksi kartu kredit / debit baik yang diterbitkan di Indonesia maupun internasional, yang berasosiasi dengan skema utama: Visa, Mastercard, dan JCB. Untuk memroses kartu yang diterbitkan dengan skema AMEX, Anda harus menggunakan akun pelanggan Anda yang terdaftar pada bank BCA di Indonesia.
Kami mendesain API kami sebaik dan semodular mungkin demi memberikan Anda pengendalian penuh untuk setiap tahapan pemrosesan pembayaran. Saat menggunakan Xendit, data sensitif yang terdapat pada kartu tidak akan melewati server Anda. Integrasi pembayaran kartu kredit yang kami bangun mengutamakan optimisasi tingkat sukses / penerimaan transaksi. Kamis udah memroses pembayaran kartu pada lebih dari 100 negara sampai hari ini.
Untuk mendapatkan penjelasan lebih lanjut bagaimana proses integrasi dengan sistem kami, mohon dapat melihat tautan dokumentasi.
Pembuatan Token (Tokenization)
Javascript Function: createToken
Xendit.card.createToken(tokenData, function (err, data) {
if (err) {
//Definisikan penanganan kesalahan
}
if (data.status === 'VERIFIED') {
// Penanangan keberhasilan
} else if (data.status === 'IN_REVIEW') {
// Penanganan otentikasi (3DS)
} else if (data.status === 'FAILED') {
// Penanganan kegagalan
}
});
Proses tokenisasi adalah sebuah proses dimana data dari kartu kredit (nomor kartu dan tanggal kedaluwarsa) disimpan dengan aman di sisi klien dalam bentuk token, agar data-data sensitif yang ada pada kartu kredit tidak pernah melewati sistem Anda. Token tersebut kemudian akan digunakan untuk melakukan Pembuatan Charge.
Contoh objek tokenData dengan data tagihan pemilik kartu
{
"amount": "10000",
"card_data": {
"account_number": "4456530000001096",
"exp_month": "12",
"exp_year": "2029",
"card_holder_first_name": "John",
"card_holder_last_name": "Doe",
"card_holder_email": "johndoe@gmai.com",
"card_holder_phone_number": "628212223242526"
},
"external_id":"TEST1234",
"card_cvn": "123",
"is_multiple_use": false,
"should_authenticate": true,
"currency": "IDR"
}
Contoh objek tokenData untuk melakukan proses retokenize
{
"amount": "10000",
"credit_card_token_id": "58e2096018b815f555c8a524",
"card_cvn": "123",
"is_multiple_use": false,
"should_authenticate": true,
"external_id": "TEST1234"
}
Token dapat dibuat untuk sekali pemakaian atau pemakaian beberapa kali. Bila Anda menginginkan penyimpanan data kartu untuk penggunaan yang akan datang, silahkan ubah nilai is_multiple_use
menjadi true.
Lihat Sample Proses Tokenisasi untuk contoh implementasi. Untuk contoh implementasi SDK, dapat dilihat di halama dokumentasi Xendit untuk Android SDK and IOS SDK.
Token Sekali Pakai
Pada normalnya, proses otentikasi harus dilakukan untuk token sekali pakai, sehingga parameter amount
wajib diisi. Bila proses otentikasi bukan suatu keharusan pada akun bisnis Anda, pengisian amount
dapat dilewati dengan mengubah nilai should_authenticate
menjadi false.
Token Pemakaian Berulang
Ketika melakukan proses tokenisasi untuk token pemakaian berulang, parameter amount
tidak wajib diisi karena nilai tersebut sudah akan ditentukan dan ditampilkan pada proses Otentikasi. Lihat Pembuatan Otentikasi untuk detil lebih lanjut.
Retokenize
Saat melakukan otorisasi/charge kartu kredit, mengirimkan CVV dapat membantu meningkatkan tingkat keberhasilan suatu transaksi. Sesuai dengan kebijakan PCIDSS di mana CVV tidak boleh diproses dari server ke server (kecuali Anda adalah perusahaan yang bersertifikat PCIDSS), fitur retokenisasi dapat membantu Anda mengumpulkan CVV dari pelanggan Anda (dari sisi client atau frontend), kemudian mengirimkannya ke Xendit, sehingga CVV akan diteruskan ke prosesor saat permintaan otorisasi dilakukan.
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Bodi | Tipe | Deskripsi | |||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amount optional |
string |
Jumlah biaya yang ingin dikenakan. Wajib diisi untuk Token Sekali Pakai karena digunakan untuk proses otentikasi. | |||||||||||||||||||||||||||||||||||||||||
card_data required |
object |
Detail informasi kartu pelanggan paramater objek data kartu
|
|||||||||||||||||||||||||||||||||||||||||
card_cvn optional |
string |
Kode CVN/CVC kartu. Opsional namun sangat direkomendasikan. Dibutuhkan untuk kartu yang diterbitkan di Eropa. | |||||||||||||||||||||||||||||||||||||||||
is_multiple_use optional default: false |
boolean |
Penentuan apakah token akan digunakan berulang kali atau tidak | |||||||||||||||||||||||||||||||||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | |||||||||||||||||||||||||||||||||||||||||
should_authenticate default:
|
boolean |
Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak. | |||||||||||||||||||||||||||||||||||||||||
billing_details optional |
object |
Rincian tagihan pemilik kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem 3DS EMV dan verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan dari negara Amerika / Kanada / Inggris Raya parameter pada detil data tagihan
|
|||||||||||||||||||||||||||||||||||||||||
customeroptional |
object |
Informasi yang berkaitan dengan pelanggan (pemilik kartu), contohnya rincian kontak. Parameter ini direkomendasikan untuk menjalankan protokol otentikasi yang lebih baik, meningkatkan tingkat kesuksesan transaksi, dan mencegah tindakan-tindakan penipuan (fraud). Cantumkan parameter ini untuk mencatat alamat pengiriman pelanggan, bila tersedia. Parameter Objek Pelanggan
| |
||||||||||||||||||||||||||||||||||||||||
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda). Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
Contoh Respon Tokenisasi
{
"id": "5fcd8deb93e9a90020d8fd2d",
"masked_card_number": "445653XXXXXX1096",
"authentication_id": "5fcd8deb93e9a90020d8fd2e",
"status": "IN_REVIEW",
"card_info": {
"bank": "PT. Bank Rakyat Indonesia (Persero)",
"country": "ID",
"type": "CREDIT",
"brand": "VISA"
},
"payer_authentication_url": "https://redirect-staging.xendit.co/redirects/authentications/bundled/5fcd8deb93e9a90020d8fd2d?api_key=xnd_public_development_bPgL7lc65YTfywEk10f5qneRuu537yonRbfgQRMBLPUr1mZP4nNVd7iNHU",
"network_response": {
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
Response Parameters
Body Parameter | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
ID token kartu kredit/debit. ID token ini akan digunakan kemudian untuk melakukan proses charge pada kartu kredit. | ||||||||||
authentication_id required |
string |
Akan disertakan apabila otentikasi digabung demgam Token Sekali Pakai. | ||||||||||
masked_card_number required |
string |
6 angka pertama dan 4 angka terakhir pada kartu kredit. | ||||||||||
statusrequired |
string |
Status proses tokenisasi. Lihat Status Tokenisasi | ||||||||||
payer_authentication_url optional |
string |
Dikembalikan pada respon hanya jika permintaan pembuatan token dilakukan bersamaan dengan permintaan otentikasi dan status yang dikembalikan bernilai IN_REVIEW. Parameter ini berisikan dengan URL yang nantinya akan diakses oleh pemilik kartu untuk melakukan otentikasi 3DS (memasukkan OTP. | ||||||||||
failure_reason optional |
string |
Jika tokenization yang digabung dengan otentikasi mengalami kegalan dengan status FAILED, parameter ini menjelaskan alasan dari kegagalan tersebut. Lihat Alasan Kegagalan pada Proses Tokenisasi | ||||||||||
card_info optional |
object |
Informasi kartu yang sudah dilakukan proses tokenisasi. parameter info kartu
|
||||||||||
network_responseoptional |
object |
Kode-kode error ini diberikan sebagai data dan wawasan tambahan. Silahkan cek dokumentasi penolakan kartu kami untuk informasi yang lebih detail tentang ini. network_response details child parameters
|
Status-status pada Proses Tokenisasi
Status | Deskripsi |
---|---|
IN_REVIEW | Pelanggan harus mengotentikasi identitas mereka. Xendit menyediakan tautan kepada Anda agar dinavigasikan kepada pengguna Anda untuk melakukan 3DS dengan mudah. |
VERIFIED | Pelanggan berhasil melakukan otentikasi terhadap identitas mereka. Merchant dapat melihat kode ECI untuk mengecek perpindahan liabilitas sebelum dilanjutkan ke proses Charge. |
FAILED | Proses tokenisasi dapat mengalami kegagalan dengan alasan yang bervariasi. Lihat Alasan Kegagalan pada Proses Tokenisasi. |
Alasan Kegagalan pada Proses Tokenisasi
Alasan Kegagalan | Deskripsi |
---|---|
AUTHENTICATION |
Status ini berarti customer berusaha melakukan otentikasi menggunakan 3DS tetapi tidak berhasil melengkapi proses otentikasi |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
INVALID_JSON_FORMAT400 |
Isi dari request bukan format JSON yang benar. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
ACCOUNT_NUMBER400 |
Nomor kartu kredit tidak valid atau salah. Mohon cek kembali kesesuaian nomor kartu. |
VALIDATION_ERROR 400 |
Data dikirimkan dengan format yang salah. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
BRAND_NOT400 |
Merek kartu tidak didukung. Sarankan pengguna untuk menggunakan Visa/Mastercard. |
AUTHENTICATION400 |
Anda tidak menyertakan authentication_id yang valid dalam request dan akun anda tidak dikonfigurasi untuk otentikasi pilihan. Sertakan authentication_id yang valid atau hubungi kami bila Anda ingin mematikan setingan wajib otentikasi. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
VERIFICATION408 |
Jaringan kartu kredit mengalami timed out ketika berusaha melakukan tokenisasi. |
TEMPORARY503 |
Terjadi masalah ketika melakukan tokenisasi pada jaringan kartu kredit. Coba kembali dalam beberapa saat. |
CONNECTION_ERROR |
Terjadi kesalahan pada saat melakukan hubungan dengan server kami. Silahkan mencoba lagi dan bila kegagalan terus terjadi, silahkan mencoba menggunakan perangkat atau jaringan lain |
TOKENIZATION_ERROR |
Kesalahan umum. Coba lagi atau coba dengan menggunakan kartu yang lain. |
Mendapatkan Token
Definisi: Mendapatkan Token
GET https://api.xendit.co/credit_card_tokens/:credit_card_token_id?
Contoh Melakukan Permintaan Mendapatkan Token Request Menggunakan Token ID
curl https://api.xendit.co/credit_card_tokens/605c05d3f81fa60011b2fa4e \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
Contoh Respon Token Response
{
"business_id": "602103396f17450020ca2246",
"created": "2021-03-25T03:38:59.318Z",
"id": "605c05d3f81fa60011b2fa4e",
"status": "VALID",
"card_expiration_month": "12",
"card_expiration_year": "2025",
"metadata": {
"bank": "PT. Bank Rakyat Indonesia (Persero)",
"country_code": "US",
"type": "CREDIT",
"brand": "VISA",
},
"card_info": {
"bank": "PT. Bank Rakyat Indonesia (Persero)",
"country": "ID",
"type": "CREDIT",
"brand": "VISA",
"card_art_url": "",
"fingerprint": "6021f7d3717e0500115fbb0d",
},
}
Ini adalah endpoint untuk mengambil suatu objek token. Anda perlu menentukan nilai dari token_id
.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda dapatkan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_token_id required |
string |
Dapat diinput dengan nilai diantara id token dari kartu kredit yang sudah di tokenisasi. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
CREDIT_CARD_TOKEN404 |
credit_card_token_id tidak ditemukan |
Pembuatan Otentikasi
Javascript Function: createAuthentication
Xendit.card.createAuthentication(authenticationData, function (err, data) {
if (err) {
//Definisikan penanganan kesalahan
}
if (data.status === 'VERIFIED') {
// Penanganan keberhasilan
} else if (data.status === 'IN_REVIEW') {
// Penanganan otentikasi (3DS)
} else if (data.status === 'FAILED') {
// Penanganan kegagalan
}
});
Untuk melakukan otentikasi pada token, silahkan menggunakan fungsi Xendit.card.createAuthentication
di Xendit.js. Fungsi ini menerima objek authenticationData
dan mengembalikan authentication_id
yang dapat digunakan untuk melakukan otentikasi. Silahkan melihat Pembuatan Charge untuk detil lebih lanjut mengenai Charge.
Lihat Sample Otentikasi untuk contoh implementasi.
Contoh Objek authenticationData
{
"amount": "10000",
"token_id": "58e2096018b815f555c8a524",
"external_id": "TEST1234",
"card_data": {
"card_holder_first_name": "John",
"card_holder_last_name": "Doe",
"card_holder_email": "johndoe@gmai.com",
"card_holder_phone_number": "628212223242526"
},
"mid_label": "MPGS_TIDNEX_3DS"
}
Contoh Respon Otentikasi
{
"id": "58e2097218b815f555c8a526",
"external_id": "TEST1234",
"status": "VERIFIED",
"network_response": {
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Body Parameter | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
amount optional |
string |
Jumlah yang akan diautentikasi dan diproses saat pembayaran (charge). Hanya diperlukan untuk token penggunaan tunggal dengan otentikasi yang dibundel. | ||||||||||
card_data optional |
object |
Informasi tambahan terkait dengan data kartuparameter tambahan untuk data kartu
|
||||||||||
external_id optional |
string |
Referensi yang Anda gunakan untuk melakukan permintaan otentikasi. | ||||||||||
token_id optional |
string |
ID dari token yang sudah dibuat pada sistem Xendit | ||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung pemrosesan mata uang sebagai berikut: IDR untuk Indonesia PHP dan USD untuk Filipina MYR untuk Malaysia THB untuk Thailand VND untuk Vietnam Mata uang lain dapat diproses sesuai dengan konfigurasi MID Anda. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda. |
||||||||||
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda). Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount required |
string |
Jumlah biaya yang ingin diotentikasi. |
token_id required |
string |
Token untuk otentikasi. |
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda. |
xenditResponseHandler required |
function |
Penanganan respon, dipanggil setelah percobaan otentikasi untuk menangani kesalahan dan respon. |
Parameter Respon
Parameter | Tipe | Deskripsi |
---|---|---|
id required |
string |
ID Otentikasi yang akan digunakan dengan Token ID untuk melakukan Charge |
status required |
string |
Status Otentikasi. Lihat Status-status Tokenisasi |
payer_authentication_url optional |
string |
Bila status respon adalah IN_REVIEW, parameter ini akan mengandung tautan yang menuju ke halaman otentikasi yang digunakan pengguna untuk melakukan proses otentikasi menggunakan 3DS |
failure_reason optional |
string |
Bila status respon adalah FAILED , lihat Alasan Kegagalan pada Proses Tokenisasi untuk melihat deskripsi kegagalan. |
network_response optional |
string |
Kode-kode error ini diberikan sebagai data dan wawasan tambahan. Silahkan cek dokumentasi penolakan kartu kami untuk informasi yang lebih detail tentang ini. |
Pembuatan Otorisasi
Pembuatan otorisasi menggunakan API yang sama dengan pembuatan charge, hanya saja parameter capture
diisi dengan nilai false
Definisi: Pembuatan Otorisasi
POST https://api.xendit.co/credit_card_charges
Contoh Permintaan Pembuatan Otorisasi
curl -X POST \
https://api.xendit.co/credit_card_charges \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d '{
"token_id" : "598d5d0e51e0870d44c61534",
"external_id": "postman-charge-1502436817",
"amount": 140000,
"authentication_id":"598d5d0f51e0870d44c61535",
"capture":false
}'
<?php
require 'vendor/autoload.php';
$options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
$xenditPHPClient = new XenditClient\XenditPHPClient($options);
$external_id = 'sample-external-id-1475459775872';
$token_id = 'sample-token-id-1475459775872';
$amount = 140000;
$authentication_id = '58e2097218b815f555c8a526';
$capture = false;
$response = $xenditPHPClient->captureCreditCardPayment($external_id, $token_id, $amount);
print_r($response);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.createAuthorization({
externalID: 'sample-external-id-1475459775872',
tokenID: 'sample-token-id-1475459775872',
amount: 140000,
authID: '58e2097218b815f555c8a526',
})
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.createAuthorization(
"token_id", // tokenId
"postman-charge-1502436793", // externalId
140000, // amount
"auth_id", // authenticationId
false // capture
);
} catch (XenditException e) {
e.printStackTrace();
}
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.create_authorization(
token_id="5f0410898bcf7a001a00879d",
external_id="card_preAuth-1594106356",
amount=75000
)
print(charge)
Contoh Respon Pembuatan Otorisasi
{
"created": "2020-01-11T07:33:14.442Z",
"status": "AUTHORIZED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 140000,
"external_id": "postman-charge-1502436793",
"merchant_id": "xendit",
"merchant_reference_code": "598d5d0d51e0870d44c61533",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"id": "598d5dba51e0870d44c61539",
"network_response": {
"card_network_response_code": "65",
"card_network_descriptor": "Exceeds withdrawal count limit",
"merchant_advice_code": "28",
"merchant_advice_descriptor": "Retry after 6 days",
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
You can do authorization using create charge endpoint. Just capture field as false, and you will receive an authorized charge response.
Otorisasi Dengan Nilai 0
Pembuatan otorisasi menggunakan API yang sama dengan pembuatan charge, hanya saja parameter amount
diisi dengan nilai 0
Pembuatan Charge. Kegunaan dari fitur ini adalah untuk melakukan pengecekan apakah kartu dapat melakukan transaksi atau tidak.
Otorisasi dengan nilai 0 tidak tersedia untuk transaksi melalui MIGS dan koneksi langsung ke bank. Apabila Anda melakukan proses transaksi dengan metode aggregator, fitur ini akan otomatis bekerja untuk Anda. Fitur ini juga otomatis bekerja pada mode tes
Example Zero Amount Authorization Request
curl -X POST \
https://api.xendit.co/credit_card_charges \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d '{
"token_id" : "598d5d0e51e0870d44c61534",
"external_id": "postman-charge-1502436817",
"amount": 0,
"authentication_id":"598d5d0f51e0870d44c61535"
}'
<?php
require 'vendor/autoload.php';
$options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
$xenditPHPClient = new XenditClient\XenditPHPClient($options);
$external_id = 'sample-external-id-1475459775872';
$token_id = 'sample-token-id-1475459775872';
$amount = 0;
$authentication_id = '58e2097218b815f555c8a526';
$response = $xenditPHPClient->captureCreditCardPayment($external_id, $token_id, $amount);
print_r($response);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.createAuthorization({
externalID: 'sample-external-id-1475459775872',
tokenID: 'sample-token-id-1475459775872',
amount: 0,
authID: '58e2097218b815f555c8a526',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.createAuthorization(
"token_id", // tokenId
"test_id", // externalId
0, // amount
"auth_id", // authenticationId
false // capture
);
} catch (XenditException e) {
e.printStackTrace();
}
Example Zero Amount Authorization Response
{
"created": "2020-01-11T07:33:14.442Z",
"status": "AUTHORIZED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 0,
"external_id": "postman-charge-1502436793",
"merchant_id": "xendit",
"merchant_reference_code": "598d5d0d51e0870d44c61533",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"id": "598d5dba51e0870d44c61539"
}
Pengembalian Otorisasi (Reverse Auhorization)
Definisi: Pembuatan Reverse Authorization
POST https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal
Contoh Permintaan Pembuatan Reverse Authorization
curl -X POST \
https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-d '{
"external_id": "reverse-authorization-1502436817",
}'
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '5ecc82736275b80019591c91';
$params = ['external_id' => 'reverse-authorization-1502436817'];
$reverseAuth = \Xendit\Cards::reverseAuthorization(
$id,
$params
);
var_dump($reverseAuth);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.reverseAuthorization({
externalID: 'reverse-authorization-1502436817',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardReverseAuth creditCardReverseAuth = CreditCard.reverseAuthorization(
"1234567", //chargeId
"reverse-authorization-1502436817" //externalId
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
reverseAuthorizationData := card.ReverseAuthorizationParams{
ChargeID: "123",
ExternalID: "reverse-authorization-1502436817",
}
reverseAuthorizationResp, err := card.ReverseAuthorization(&reverseAuthorizationData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("reversed authorization: %+v\n", reverseAuthorizationResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
reverse_authorization = CreditCard.reverse_authorizatiton(
credit_card_charge_id="5f0421fa8cc1e8001973a1d6",
external_id="reverse-authorization-1594106387",
)
print(reverse_authorization)
Contoh dari bentuk permintaan
{
"external_id": "reverse-authorization-1502436817",
}
Contoh dari respon pengembalian otorisasi
{
"status": "SUCCEEDED",
"currency": "IDR",
"credit_card_charge_id": "5ecc82640d679500199621ad",
"business_id": "5dd7928f4e6d9a2ec299ea43",
"external_id": "reverse-authorization-1502436817",
"amount": 5000,
"created": "2020-05-26T02:44:03.458Z",
"id": "5ecc82736275b80019591c91"
}
API ini dapat melakukan pengembalian transaksi yang sudah memiliki status AUTHORIZED
dan belum dilakukan capture (pemindahan uang ke acquiring bank).
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi |
---|---|---|
external_id required |
string |
Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan. |
Parameter Respon
Parameter | Tipe | Deskripsi |
---|---|---|
status required |
string |
Reverse Authorization status. Lihat Status Pengembalian Otorisasi. |
currency required |
string |
Mata uang dari otorisasi yang ingin dikembalikan. |
credit_card_charge_id required |
string |
ID dari otorisasi / charge yang ingin dikembalikan. |
business_id required |
string |
ID akun bisnis Xendit Anda. |
external_id required |
string |
Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan. |
amount required |
number |
Nominal uang yang dikembalikan untuk permintaan pengembalian otorisasi ini. |
created required |
string |
Cap waktu ISO yang mencatat kapan permintaan pengembalian otorisasi tersebut dibuat reverse authorization
Timezone: .
|
id required |
string |
ID dari pengembalian otorisasi. |
failure_reason optional |
string |
Jika status FAILED , parameter ini menjelaskan alasan dari kegagalan permintaan tersebut. Lihat Alasan Kegagalan Pengembalian Otorisasi. |
Status Pengembalian Otorisasi
Status | Deskripsi |
---|---|
SUCCEEDED | Pengembalian Otorisasi telah berhasil dilakukan. |
FAILED | Pengembalian Otorisasi gagal |
Alasan Kegagalan Pengembalian Otorisasi
Failure Reason | Description |
---|---|
REVERSE_AUTHORIZATION_REJECTED_BY_BANK | Permintaan pengembalian otorisasi ditolak oleh bank. Hal ini mungkin terjadi apabila otorisasi sudah lewat dari masa tenggang, ataupun kredit (uang) sudah dikembalikan ke akun pemegang kartu. |
PROCESSOR_ERROR | Permintaan pengembalian otorisasi gagal karena terdapat isu integrasi antara pemroses dengan bank penerbit kartu. Hubungi Kami apabila anda mengalami permasalahan ini |
Error Pada Permintaan Pengembalian Otorisasi
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Nilai yang dimasukkan pada parameter mengalami kesalaham. Pada objek error dijelaskan paramater mana yang mengalami kesalahan. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
CHARGE_ALREADY_REVERSED400 |
Charge telah dilakukan pengembalian, maka dari itu pengembalian otorisasi tidak dapat dilakukan |
CHARGE_ALREADY_CAPTURED400 |
Charge telah dilaukan capture , maka dari itu pengembalian otorisasi tidak dapat dilakukan |
CHARGE_FAILED400 |
Charge gagal, maka dari itu pengembalian otorisasi tidak dapat dilakukan |
REQUEST_FORBIDDEN403 |
API key yang dipakai tidak memiliki izin untuk melakukan permintaan pengembalian otorisasi. Mohon gunakan API key yang mempunyai izin yang sesuai. Pelajari lebih lanjut here |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan untuk permintaan ini. Mohon gunakan credit_card_charge_id lain yang valid |
INVALID_AMOUNT_FOR_REVERSE_AUTHORIZATION_ERROR 400 |
Nominal yang ingin dikembalikan tidak sesuai. Mohon dipastikan bahwa nominal charge tidak sama dengan 0. |
Pembuatan Charge
Definisi: Pembuatan Charge
POST https://api.xendit.co/credit_card_charges
Contoh Permintaan Pembuatan Charge
curl -X POST \
https://api.xendit.co/credit_card_charges \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d '{
"token_id" : "598d5d0e51e0870d44c61534",
"external_id": "postman-charge-1502436817",
"amount": 900000,
"authentication_id": "598d5d0f51e0870d44c61535",
"descriptor": "My new store",
"currency": "IDR",
"mid_label": "IDR_MID",
"billing_details": {
"given_names": "John",
"surname": "John Doe",
"email": "johndoe@xendit.co",
"mobile_number": "+62899336634448",
"phone_number": "+629934448",
"address": {
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "993448",
"country": "ID"
}
},
"promotion": {
"reference_id": "BCA_10",
"original_amount": 1000000
},
"installment": {
"count": 3,
"interval": "month"
},
"metadata": {}
}'
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'token_id' => '5e2e8231d97c174c58bcf644',
'external_id' => 'card_' . time(),
'authentication_id' => '5e2e8658bae82e4d54d764c0',
'amount' => 15000,
'capture' => false
];
$createCharge = \Xendit\Cards::create($params);
var_dump($createCharge);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const resp = await card.createCharge({
externalID: 'sample-external-id-1475459775872',
tokenID: 'sample-token-id-1475459775872',
amount: 900000,
authID: '58e2097218b815f555c8a526',
descriptor: "My new store",
currency: "IDR",
midLabel: "IDR_MID",
billingDetails: {
given_names: "John",
surname: "John Doe",
email: "johndoe@xendit.co",
mobile_number: "+62899336634448",
phone_number: "+629934448",
address: {
street_line1: "Panglima Polim IV",
street_line2: "Ruko Grand Panglima Polim, Blok E",
city: "Jakarta Selatan",
province_state: "DKI Jakarta",
postal_code: "993448",
country: "ID"
}
},
promotion: {
referenceId: "BCA_10",
originalAmount: 1000000
},
installment: {
count: 3,
interval: "month"
}
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.createCharge(
"token_id", //tokenId
"postman-authorize-1502437417", //externalId
90000, //amount
"auth_id", //authenticationId
"XDT*MYBUSINESS-MY NEW STORE" //Descriptor
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
createChargeData := card.CreateChargeParams{
TokenID: "example-token-id",
AuthenticationID: "example-authentication-id",
ExternalID: "postman-charge-1502436793",
Amount: 900000,
Capture: new(bool),
}
chargeResp, err := card.CreateCharge(&createChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("created charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.create_charge(
token_id="5f0410898bcf7a001a00879d",
external_id="card_charge-1594106478",
amount=900000
)
print(charge)
Ketika Anda memiliki token, token tersebut dapat digunakan untuk melakukan Charge pada kartu
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
with-split-ruleopsional |
string |
ID Split Rule yang ingin Anda aplikasikan ke pembayaran kartu ini untuk dapat membagi pembayaran dan menyalurkannya ke beberapa Akun lain. Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan split_rule_id pada header response API. Apabila for-user-id header tidak tersedia, Split Rule akan menggunakan Akun Master sebagai sumber dana untuk mengirimkan pemotongan pembayaran ke akun destinasi yang ditentukan. Header ini adalah versi terbaru, versi lama dengan header with-fee-rule hanya dapat digunakan sampai tanggal 30 September 2025. Mohon untuk segera migrasi ke versi yang terbaru apabila Anda masih menggunakan header with-fee-rule . Header tersebut hanya dapat digunakan apabila Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token_id required |
string |
ID Token yang digunakan untuk melakukan Charge. | |||||||||||||||||||||||||||||
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. | |||||||||||||||||||||||||||||
authentication_id optional |
string |
ID Otentikasi untuk mengotentikasi charge. Tidak wajib diisi hanya bila sudah diotentikasi dengan Token Sekali Pakai, atau setingan tidak wajib otentikasi sudah diaktifkan pada akun Anda. | |||||||||||||||||||||||||||||
amount required |
number |
Jumlah biaya yang akan di-charge. | |||||||||||||||||||||||||||||
authentication_id optional |
string |
ID Otentikasi untuk mengotentikasi charge. Tidak wajib diisi hanya bila sudah diotentikasi dengan Token Sekali Pakai, atau setingan tidak wajib otentikasi sudah diaktifkan pada akun Anda. | |||||||||||||||||||||||||||||
capture optionaldefault:
|
boolean |
Kondisi dimana Anda akan menentukan apakah akan melakukan Capture langsung atau tidak langsung. Ubah nilai menjadi false bila Anda menginginkan otentikasi saja (penahanan uang), untuk kemudian di-capture dengan capture endpoint.Catatan: Otorisasi akan kedaluwarsa dalam 7 hari. |
|||||||||||||||||||||||||||||
descriptor optional |
string |
Deskriptor khusus untuk mengidentifikasi merchant pada laporan penggunaan kartu kredit pemilik kartu. Note: Untuk pelanggan dengan mode aggregator, nilai yang akan dikembalikan adalah XDT*[MERCHANT_NAME]-DESCRIPTOR Untuk pelanggan dengan mode switcher, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR |
|||||||||||||||||||||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | |||||||||||||||||||||||||||||
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda). Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
|||||||||||||||||||||||||||||
billing_details optional |
object
|
Rincian tagihan dari pemegang kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan di negara USA / Canada / Ingrris Raya. parameter pada detil data tagihan
|
|||||||||||||||||||||||||||||
metadataoptional |
object |
Data bebas dengan format json yang dapat digunakan pelanggan sebagai data pelengkap. | |||||||||||||||||||||||||||||
promotion optional |
object |
Jika Anda ingin menggunakan promosi, Anda harus memasukkan parameter ini pada permintaan transaksi Anda
|
|||||||||||||||||||||||||||||
installment optional |
object |
Parameter ini diperlukan sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk mengecek apakah BIN atau token id yang digunakan mempunyai opsi cicilan, mohon mengacu pada Opsi Charge.
|
Contoh Respon Pembuatan Charge
{
"created": "2020-01-11T07:33:14.442Z",
"status": "CAPTURED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 900000,
"external_id": "postman-charge-1502436793",
"merchant_id": "xendit",
"merchant_reference_code": "598d5d0d51e0870d44c61533",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"capture_amount": 900000,
"descriptor": "XDT*MYBUSINESS-MY NEW STORE",
"id": "598d5dba51e0870d44c61539",
"mid_label": "IDR_MID",
"promotion": {
"reference_id": "BCA_10",
"original_amount": "1000000"
},
"installment": {
"month": 3,
"interval": "month"
},
"network_response": {
"card_network_response_code": "65",
"card_network_descriptor": "Exceeds withdrawal count limit",
"merchant_advice_code": "28",
"merchant_advice_descriptor": "Retry after 6 days",
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
Contoh Respon Otorisasi
{
"created": "2020-01-11T07:43:39.563Z",
"status": "AUTHORIZED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 90000,
"external_id": "postman-authorize-1502437417",
"merchant_id": "xendit",
"merchant_reference_code": "598d5ffb51e0870d44c6153a",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"descriptor": "XDT*MYBUSINESS-MY NEW STORE",
"id": "598d602b51e0870d44c6153d",
"mid_label": "IDR_MID",
"promotion": {
"reference_id": "BCA_10",
"original_amount": "100000"
},
"installment": {
"month": 3,
"interval": "month"
}
}
Respon Pembuatan Charge
Parameter | Tipe | Deskripsi | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
createdrequired |
string |
Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge. | ||||||||||||
business_id required |
string |
ID akun bisnis Xendit Anda. | ||||||||||||
authorized_amount required |
number |
Nominal uang yang diotorisasi untuk Charge ini. | ||||||||||||
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. | ||||||||||||
card_type required |
string |
Tipe kartu yang sudah dilakukan charge. Dapat bernilai CREDIT, DEBIT, PREPAID, dan UNKNOWN. | ||||||||||||
masked_card_number required |
string |
Enam angka pertama dan Empat angka terakhir pada kartu kredit. | ||||||||||||
charge_type required |
string |
Tipe tipe dari charge. Lihat Tipe Charge. | ||||||||||||
merchant_id required |
string |
Merchant ID yang digunakan untuk melakukan pemrosesan kartu kredit dengan bank. | ||||||||||||
card_brand required |
string |
Merek kartu (VISA , MASTERCARD , JCB , ...). |
||||||||||||
bank_reconciliation_id required |
string |
ID transaksi yang dapat digunakan untuk rekonsiliasi dengan bank. | ||||||||||||
eci optional |
string |
Status dari otentikasi 3DS. Lihat kode ECI. | ||||||||||||
capture_amount optional |
number |
Nominal yang akan di-capture untuk charge ini. Nilai maksimumnya adalah nilai authorized_amount . |
||||||||||||
status required |
string |
Status dari transaksi charge yang dikembalikan oleh sistem Xendit. Lihat [Status pada charge] (#status-status-pada-Charge). | ||||||||||||
failure_reason optional |
string |
Bila status charge adalah FAILED , lihat Status-status pada Charge untuk keterangan lebih lanjut. |
||||||||||||
approval_code optional |
string |
Suatu kode berisikan angka yang berurutan (biasanya 6 atau 8 digit) yang mengindikasikan bahwa proses otorisasi telah disetujui oleh penerbit kartu. | ||||||||||||
cvn_code optional |
string |
Respon yang didapatkan dari validasi CVN (3 digit kode keamanan yang terdapat dibalik kartu). Parameter ini tidak akan tertera pada respon apabila CVN tidak disertakan pada saat permintaan pembuatan charge atau pembuatan token. Lihat Kode CVN. | ||||||||||||
merchant_reference_code required |
string |
Kode merchant yang digunakan untuk melakukan rekonsiliasi transaksi dengan bank. | ||||||||||||
descriptor optional |
string |
Deskriptor khusus untuk menentukan identitas merchant. Catatan: Untuk aggregator merchant, nilai yang akan dikembalikan adalah XDT*[MERCHANT_NAME]-DESCRIPTOR Untuk switcher merchant, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR |
||||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | ||||||||||||
mid_label optional |
string |
Karakter string spesifik yang digunakan untuk memberikan label pada MID pelanggan. Konfigurasi penanda label ini dapat dilakukan melalui menu pengaturan kartu kredit di Dasbor, pada menu pengaturan kartu kredit ( Jika pelanggan tidak menyertakan mid_label bersamaan dengan request transaksi, transaksi akan diproses menggunakan MID prioritas 1. Catatan: Hanya dikembalikan pada response untuk switcher merchant |
||||||||||||
id required |
string |
ID dari charge di sistem Xendit. | ||||||||||||
promotion optional |
object |
Jika Anda ingin menggunakan promosi pada transaksi charge, Anda harus memasukkan parameter di bawah ini. detil objek promosi
|
||||||||||||
installment optional |
object |
Parameter ini diberikan pada respon sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk melihat apakah BIN mempunyai cicilan yang tersedia atau tidak, lihat [Permintaan Opsi Charge] (#permintaan-opsi-charge). detil objek installment
|
||||||||||||
network_responseoptional |
object |
Kode-kode error ini diberikan sebagai data dan wawasan tambahan. Silahkan cek dokumentasi penolakan kartu kami untuk informasi yang lebih detail tentang ini. network_response details child parameters
|
Status status pada Charge
Status | Deskripsi |
---|---|
CAPTURED | Charge telah berhasil di-captured dan dana tersebut akan dikirimkan ke rekening sesuai dengan jadwal settlement yang ditentukan. |
REVERSED | Otorisasi telah berhasil dikembalikan. Pada tahap ini, nominal transaksi dikembalikan ke pemilik kartu. |
AUTHORIZED | Charge telah berhasil diotorisasi. |
FAILED | Charge gagal. Lihat Alasan Kegagalan Charge |
Kode CVN
Kode | Deskripsi |
---|---|
M | Cocok - CVN yang disertakan pada permintaan pembuatan charge cocok dengan data CVN yang dimiliki oleh penerbit kartu. |
N | Tidak cocok - CVN yang disertakan pada permintaan tidak cocok dengan data CVN yang dimiliki oleh penerbit kartu. |
P | Tidak diproses - Dapat terjadi jika kartu tidak memiliki CVN yang valid, atau CVN tidak diterima oleh penerbit kartu. Dapat melakukan permintaan charge kembali, apabila hasil yang didapatkan tetap sama, mohon dapat menggunakan kartu yang lain. |
Alasan Kegagalan Pembuatan Charge
Alasan Gagal | Deskripsi |
---|---|
Failure Reasons
Failure Reason | Description |
---|---|
AUTHENTICATION_FAILED | Pembayaran ditolak karena transaksi belum diotentikasi. Rekomendasikan pemegang kartu untuk mengotentikasi ulang transaksi dengan 3DS. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain, bentuk pembayaran lain, atau menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. |
DECLINED_BY_ISSUER | Pembayaran ditolak oleh penerbit kartu tanpa memberikan informasi lebih lanjut kepada Xendit. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
DECLINED_BY_PROCESSOR | Pembayaran ditolak oleh prosesor tanpa memberikan informasi lebih lanjut kepada Xendit. Rekomendasikan pemegang kartu untuk mencoba kembali. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
EXPIRED_CARD | Pembayaran ditolak karena kartu telah kedaluwarsa. Rekomendasikan pemegang kartu untuk memasukkan tanggal kedaluwarsa yang benar. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
ISSUER_SUSPECT_FRAUD | Pembayaran ditolak oleh penerbit kartu karena mereka mencurigai pembayaran ini sebagai penipuan. Tinjau kembali pemegang kartu. Jika Anda yakin pemegang kartu tersebut sah, rekomendasikan pemegang kartu untuk menggunakan kartu lain atau bentuk pembayaran lainnya. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
INACTIVE_OR_UNAUTHORIZED_CARD | Pembayaran ditolak oleh penerbit kartu karena kartu tidak diizinkan untuk transaksi online. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INSUFFICIENT_BALANCE | Pembayaran ditolak oleh penerbit kartu karena dana di rekening pemegang kartu tidak mencukupi. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INVALID_CARD | Pembayaran ditolak oleh penerbit kartu karena informasi kartu yang diberikan salah. Rekomendasikan pemegang kartu untuk meninjau informasi kartu dan coba kembali. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INVALID_CVV | Pembayaran ditolak oleh penerbit kartu karena CVN / CVV / CSC kartu yang diberikan salah. Rekomendasikan pemegang kartu untuk meninjau kembali CVV / CVN / CSC dari kartu yang dipakai dan coba kembali (biasanya kode 3-4 digit di bagian belakang kartu). Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
ISSUER_UNAVAILABLE | Pembayaran ditolak oleh prosesor karena penerbit kartu tidak dapat dijangkau. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
PROCESSOR_ERROR | Pembayaran ditolak oleh prosesor karena kendala teknis di sisi prosesor. Rekomendasikan pemegang kartu untuk mencoba kembali dalam beberapa menit. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan bentuk pembayaran lainnya. |
STOLEN_CARD | Pembayaran ditolak oleh penerbit kartu karena kartu dilaporkan dicuri / hilang oleh pemegang kartu. Tinjau kembali pemegang kartu. Jika Anda yakin pemegang kartu tersebut sah, rekomendasikan pemegang kartu untuk menggunakan kartu lain atau bentuk pembayaran lainnya. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
PROCESSOR_TIMEOUT | Kami mendapatkan timeout dari pemroses kami saat meminta pembayaran yang menunjukkan masalah koneksi intermiten. Sarankan pelanggan untuk mencoba ulang transaksi. |
FRAUD_RISK_BLOCKED | Pembayaran ditolak oleh penilaian risiko Xendit. Silahkan merujuk ke bagian Penilaian Risiko Penipuan untuk detail lebih lanjut. Tinjau pemegang kartu, karena pembayaran diblokir oleh daftar blokir Anda. Jika Anda yakin pemegang kartu itu sah, hapus identifikasi kartu tersebut dari daftar blokir dan anjurkan pemegang kartu untuk mencoba kembali. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
INVALID_JSON_FORMAT 400 |
Isi dari request bukan format JSON yang benar. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
TOKEN_ALREADY400 |
ID Token Sekali Pakai sudah pernah digunakan ketika melakukan Charge. Mohon untuk menggunakan ID Token yang berbeda untuk melakukan Charge. |
AUTHENTICATION400 |
ID otentikasi sudah pernah digunakan ketika melakukan charge. Mohon untuk menggunakan ID otentikasi yang berbeda untuk melakukan Charge |
INVALID_TOKEN_ID400 |
Format ID token tidak valid. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
INVALID_CVN400 |
Jumlah angka CVN tidak valid. Untuk kartu berlogo AMEX, jumlah angka CVN harus 4 angka. Selain AMEX, jumlah angka CVN harus 3 angka. Mohon untuk cek apabila digit CVN yang dimasukkan sudah sesuai format kemudian coba kembali. |
AUTHENTICATION_ID400 |
ID Otentikasi wajib diisi. Mohon untuk menambahkan ID otentikasi ke dalam request. |
AMOUNT_GREATER_THAN400 |
Jumlah nominal angka yang di-charge melampaui jumlah yang diotentikasi. Pastikan nominal Charge sudah sesuai dengan yang telah terotentikasi. |
INVALID_AUTHENTICATION_ID_ERROR 400 |
Format ID otentikasi tidak valid. Cek kembali apakah format ID otentikasi telah sesuai kemudian coba kembali. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
TOKEN_NOT404 |
ID token tersebut tidak ditemukan dalam sistem. Mohon cek kembali apakah API key yang tertera sudah benar. Untuk Charge, API key yang digunakan adalah secret API key. |
AUTHENTICATION_NOT404 |
Token yang telah diotentikasi dengan otentikasi ID tersebut tidak ditemukan. Mohon cek kembali apakah ID otentikasi tersebut sudah terdaftar. |
MID_NOT404 |
MID yang digunakan pada parameter mid_label tidak dapat ditemukan. Lakukan pengecekan ulang jika Anda sudah mendaftarkan mid tersebut atau lakukan pengecekan pada input parameter mid Anda. |
INVALID_PROMOTION_DETAILS 400 |
Detil promosi yang dimasukkan tidak valid. Mohon dapat melakukan permintaan kembali dengan mengganti input objek promo yang ingin digunakan. |
CARDHOLDER_NAME_REQUIRED 400 |
Mohon dapat menyertakan nama pemilik kartu pada parameter billing_details pada request Anda. |
INSTALLMENT_BELOW_AMOUNT_MINIMUM 400 |
Nominal transaksi yang ingin dilakukan berada di bawah minimum batas transaksi cicilan. |
INSTALLMENT_UNAVAILABLE 404 |
Kemungkinan penjelasan kesalahan: |
AMOUNT_BELOW_MINIMUM_LIMIT 400 |
Nominal yg dimasukkan pada input di bawah batas minimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau lebih dari batas minimum. Batas minimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut: |
AMOUNT_ABOVE_MAXIMUM_LIMIT 400 |
Nominal yg dimasukkan pada input di atas batas maksimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau kurang dari batas maksimum. Batas maksimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut: |
INCOMPLETE_AUTHENTICATION 400 |
authentication_id yang dimasukkan tidak dapat digunakan karena proses otentikasi tidak dapat diselesaikan. Hal ini biasanya terjadi karena adanya kendala saat menampilkan render halaman 2FA, pelanggan tidak menyelesaikan proses 3DS, atau hal lain terjadi seperti timeout dari sisi bank. Mohon mencoba lagi transaksi ini atau Anda dapat menghilangkan authentication_id dari Charge request apabila 3DS opsional sudah diaktifkan untuk bisnis Anda. (Apabila Anda ingin dapat melakukan otentikasi secara opsional/dinamis 3DS, kontak kami untuk mengaktifkan fitur ini. Lihat dokumentasi otentikasi untuk panduan integrasi dan testing.) |
Tipe Charge
Status | Deskripsi |
---|---|
SINGLE_USE_TOKEN | Charge yang dibuat dengan Token Sekali Pakai |
MULTIPLE_USE_TOKEN | Charge yang dibuat dengan Token Pemakaian Berulang |
RECURRING | Melakukan charge berulang dengan Langganan |
Kode ECI
ECI | Deskripsi |
---|---|
0 | Tidak bisa diotentikasi (MasterCard) |
1 | Percobaan Otentikasi(MasterCard) |
2 | Otentikasi Berhasil (MasterCard) |
5 | Otentikasi Berhasil (Visa, AMEX, JCB) |
6 | Percobaan Otentikasi (Visa, AMEX, JCB) |
7 | Tidak bisa diotentikasi (Visa, AMEX, JCB) |
Charge menggunakan CVV untuk Multi-Use Token
Contoh Charge dengan CVV menggunakan Xendit.js
const tokenData = {
token_id: “sample-token-id-6ab4hmu832j8oenx71b”, (wajib)
card_cvn: “123”,
billing_details: object,
customer: object
};
Contoh Charge dengan CVV menggunakan Android SDK
final Xendit xendit = new Xendit(getApplicationContext(), <PUBLISHABLE_KEY>, this);
xendit.storeCVN(
<tokenId>, (wajib)
<cardCVN>,
<billingDetails>,
<customerDetails>,
null,
callback);
Contoh Charge dengan CVV menggunakan iOS SDK
let storeCVNRequest = XenditStoreCVNRequest.init(tokenId: <tokenId>) (wajib);
authenticationRequest.cardCvn = <cardCvn>;
Xendit.storeCVN(
fromViewController: self,
storeCVNRequest: storeCVNRequest,
onBehalfOf: nil,
completion: completion)
CVV merupakan salah satu bagian dari proses transaksi kartu kredit, di mana pemilik kartu menyediakan tiga atau empat kode angka untuk otorisasi transaksi tersebut. Mengapa memasukkan CVV adalah hal yang penting:
- Berperan sebagai lapisan keamanan tambahan untuk otorisasi transaksi yang datang dari pemilik kartu sebenarnya
- Meningkatkan kepercayaan bank untuk menerima transaksi karena dapat mengindikasikan transaksi tersebut dibuat oleh pemilik kartu sebenarnya
Apabila Anda ingin melakukan transaksi menggunakan CVN/CVV untuk multi-use token, Anda dapat mengikuti panduan ini.
Apa itu CVV?
CVV adalah singkatan dari “Card Verification Value”, terdiri dari tiga atau empat kode angka yang terletak pada bagian depan atau belakang kartu. CVV digunakan oleh issuer sebagai lapisan tambahan untuk keamanan transaksi, memasukkan CVV dapat meningkatkan tingkat kesuksesan transaksi dan menurunkan kemungkinan terjadinya penipuan.
CVV merupakan bagian dari Sensitive Authentication Data (SAD) yang diregulasi ketat oleh PCI. Merujuk pada peraturan PCI, sebuah bisnis tidak diperbolehkan untuk menyimpan CVN/CVV setelah proses otorisasi dilakukan dan sistem yang digunakan harus mengikuti regulasi PCI serta memproses CVN/CVV harus dilakukan di dalam Card Data Environment (CDE) yang diaudit.
Cara penggunaan
Siapkan ID token penggunaan yang ingin Anda gunakan untuk melakukan charge. Gunakan ID token tersebut sesuai dengan acuan pada contoh kode di bagian kanan.
Pembuatan Safe Acceptance
Fitur ini merupakan alternatif dari API charge, dimana dapat digunakan untuk kondisi sebagai berikut
- Melakukan transaksi pembayaran kartu kredit/debit online dengan mengirimkan data lengkap dari suatu kartu kepada sistem Xendit melalui sisi klien (frontend) tanpa menggunakan proses Tokenisasi (untuk proses standard transaksi Visa/MasterCard/JCB/AMEX)
- Melakukan transaksi pembayaran kartu kredit/debit online dimana tampilan antarmuka saat pembayaran dikendalikan oleh pihak pemroses kartu dan pemilik kartu dialihkan kepada tampilan antarmuka tersebut untuk memasukan rincian data kartu
Gunakan halaman demo ini untuk menguji skenario menggunakan Safe Acceptance, dan untuk melihat contoh bagaimana Safe Acceptance dapat diintegrasikan di halaman web.
Penjelasan Metode Integrasi dari Pemrosesan Pembayaran pada Safe Acceptance
Kekuatan dari fitur Safe Acceptance API yang Kami miliki terletak pada kemampuan untuk mendukung proses pembayaran kartu kredit pada metode integrasi yang umum digunakan secara fleksibel. Secara umum, terdapat beberapa metode integrasi yang dijelaskan sebagai berikut:
-
2.5 party Merchant akan melakukan otentikasi 3DS dan pembayaran dalam satu kali permintaan pada API. Merchant akan mengirimkan data kartu ke Xendit, dimana Xendit akan melanjutkannya kepada pemroses pembayaran. Sebelum melakukan proses pembayran, Xendit akan melakukan inisiasi 3DS kepada pemroses pembayaran, kemudian mengarahkan merchant kepada halaman otentikasi 3DS milik pemroses pembayaran, dimana pemilik kartu dapat memasukkan OTP yang didapatkan dari bank.
-
3 party Merchant akan melakukan otentikasi 3DS dan pembayaran sesuai dengan alur yang ditentukan oleh pihak pemroses pembayaran. Proses inisiasi pembayaran akan dilakukan oleh Safe Acceptance API, dimana Xendit akan mengarahkan merchant kepada tampilan antarmuka yang dimiliki oleh pihak pemroses pembayaran. Pemilik kartu akan memasukkan data kartu langsung pada halaman checkout milik pihak pemroses pembayaran dan melakukan proses otentikasi 3DS pada halaman tersebut. Data kartu tidak akan melewati Xendit dan akan diproses langsung oleh pihak pemroses pembayaran.
Perlu dijadikan catatan bahwa pada fitur Safe Acceptance, parameter token_id
masih dapat digunakan untuk melakukan transaksi
Definis: Pembuatan Transaksi Safe Acceptance
POST
https://api.xendit.co/credit_cards/safe_acceptance
Contoh Permintaan Safe Acceptance
{
"amount": "1200000",
"return_url": "https://mybusiness.co",
"reference_id": "xdt-safe-acceptance-007",
"transaction_type": "SALES",
"request_timestamp": "2021-01-10T09:50:40+03:00",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"card_number": "1889800000000171",
"card_exp_year": "2021",
"card_exp_month": "03",
"card_cvn": "101",
"should_authenticate": true,
"currency": "IDR",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"authorization": "Basic eG5kX3B1YmxpY19kZXZlbG9wbWVudF9PNDZBZkw4azFlRGtwSnRmN3RPSERDV01OQ2w4dFI0azNibVJ4bm1EUnIyb0NnZHdnQTo=",
"signed_field_names": "reference_id,amount,currency,request_timestamp,return_url,authorization,signed_field_names",
"signature": "37c0323212908b9d4fe607f9d237c95aae2503a799d278afdc663268b5f8906e"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema Visa / MasterCard / JCB)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"card_type": "CREDIT",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema BCA)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "143481XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "BCA",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema GPN)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "143481XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "GPN",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Parameter Permintaan
Parameter | Tipe | Deskripsi |
---|---|---|
amount required |
number |
Jumlah biaya yang akan di-charge. |
reference_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
request_timestamp required |
string |
Stempel waktu saat permintaan pembuatan safe acceptance dilakukan, dengan format ISO8601. Dibutuhkan untuk membuat signature untuk kemudian digunakan sebagai validasi pada sistem Xendit. Contoh: 2021-01-10T09:50:40+03:00 |
currency required |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Mata uang yang tersedia:
|
return_url required |
string |
URL ini akan digunakan untuk mengarahkan pelanggan akhir apabila transaksi pembayaran sudah selesai. URL ini akan dipanggil menggunakan metode HTML form POST dengan hasil transaksi yang dicantumkan pada response. Singature akan dikirimkan pada response untuk dapat divalidasi oleh pelanggan. |
authorization required |
string |
Public API Key dari sistem Xendit Anda (yang sudah dikonversi menjadi format base-64). |
signature required |
string |
Nilai dari parameter ini didapatkan dengan menggunakan dari secret API key Xendit yg dapat diambil dari Dasbor Anda, kemudian membuat hash dari parameter yang dicantumkan pada permintaan dengan methode sha256. Lihat Dokumentasi Safe Acceptance Kami sebagai petunjuk. |
signed_field_names required |
string |
Nilai dari parameter ini harus berisikan dengan nilai kunci dari parameter yang nantinya akan digunakan untuk melakukan verifikasi signature, dipisahkan dengan tanda koma.
Makndatori:(jika permintaan Anda berisikan parameter tersebut):
amount, currency, authorization, reference_id, request_timestamp,mid_label, channel_code, return_url, should_authenticate
|
channel_code optional |
string |
Nilai yang digunakan untuk menentukan konektor mana yang akan digunakan dalam proses Safe Acceptance. Jika tidak diisi, nilai defaultnya adalah Visa/MasterCard/JCB/AMEX. Untuk transaksi lain, lihat:
|
card_number optional |
string |
Nomor kartu kredit/debit online yang akan dikonversi menjadi token. Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_exp_year optional |
string |
Tahun kedaluwarsa kartu kredit / debit online (4 digit angka) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_exp_month optional |
string |
Tanggal kedaluwarsa kartu kredit / debit online (2 digit angka) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_cvn optional |
string |
Kode keamanan yang terdapat pada bagian belakang kartu (3 atau 4 digit) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_holder_name optional |
string |
Nama lengkap dari pemilik kartu |
token_id optional |
string |
ID Token yang digunakan untuk melakukan Charge. Hanya dibutuhkan jika prosesor yang digunakan membutuhkan proses tokenisasi, dan Anda memiliki token ID yang didapatkan dari proses tokenisasi sebelumnya. |
should_authenticate optional |
boolean |
Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak. Jika tidak diinput, maka akan menyesuaikan dengan pengaturan 3DS merchant pada sistem Xendit. Nilai yang diterima:
|
given_namesrequired |
string |
Nama pertama pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
surnamerequired |
string |
Nama belakang pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
emailrequired |
string |
Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu |
mobile_numberoptional |
string |
Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164 |
phone_number optional |
string |
Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor) karakter : gunakan +(kode_negara) sebagai parameter di depan. Simbol - dan/atau spasi kosong tidak diperbolehkan. Ikuti ITU-E.164 Standard
|
country required |
string |
2-huruf ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu |
street_line1 optional |
string |
Nama bangunan dan nomor unit apartemen / rumah Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
street_line2 optional |
string |
Alamat lengkap bangunan Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
cityoptional |
string |
Kabupaten/Kota pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
province_state optional |
string |
Provinsi, state, atau region pemilik kartu. Jika pemilik kartu merupakan penduduk Amerika, pastikan nilai yang dimasukkan adalah kode negara bagian (contoh gunakan CA untuk California) Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
postal_code optional |
string |
Kode ZIP atau Kode Pos bila tersedia Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
descriptor optional |
string |
Penanda spesifik yang menjelaskan identitas merchant. Niali ini akan tercantum pada tagihan pemilik kartu. Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
use_reward optional |
boolean |
Penanda bahwa transaksi pembayaran akan menggunakan rewards yang tersedia dari bank penerbit kartu. Hanya dapat disertakan pada permintaan jika Anda mendapatkan parameter rewards pada respond dari Get Charge Option. Nilai yang diterima: ‘true’: semua rewards yang tersedia akan digunakan untuk pembayaran ‘false’: reward tidak akan digunakan untuk pembayaran |
installment_count optional |
number |
Parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah 3. |
installment_interval optional |
string |
Parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah month . |
installment_code optional |
string |
Digunakan untuk mengidentifikasi tipe cicilan dan fitur yang berkaitan dengan cicilan tersebut seperti bunga dan tagian. Parameter ini mandatori untuk disertakan pada permintaan jika Xendit mengembalikan parameter installment_code pada respons Get Charge Option untuk kartu pelanggan akhir. |
promotion_reference_id optional |
string |
Kode unik yang digunakan untuk ID referensi pada API Pembuatan Promo. |
promotion_original_amount optional |
string |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda. Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
Response Parameters
Parameter | Type | Description |
---|---|---|
id required |
string |
ID unik dari charge di sistem Xendit. |
created required |
string |
Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge. |
reference_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. |
business_id required |
string |
ID akun bisnis Xendit Anda. |
card_brand required |
string |
Skema kartu (VISA, MASTERCARD, JCB, AMEX, GPN) |
card_type required |
string |
Tipe kartu (CREDIT atau DEBIT) |
masked_card_number required |
number |
Enam angka pertama dan Empat angka terakhir pada kartu kredit. 6 atau 8 digit pertama adalah nomor pengidentifkasi kartu |
authorized_amount required |
number |
Nominal uang yang diotorisasi untuk Charge ini. |
capture_amount required |
number |
Nominal yang akan di-capture untuk charge ini. Nilai maksimumnya adalah nilai authorized_amount . |
currency required |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO.Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan IDR. |
status required |
string |
Status dari transaksi charge yang dikembalikan oleh sistem Xendit. Lihat Status pada charge. |
eci required |
string |
Status dari otentikasi 3DS. Lihat Kode ECI |
cvn_code optional |
string |
Response from validating the CVN (3-digit security code on back of card). See CVN Codes. |
merchant_id optional |
string |
Merchant ID yang digunakan untuk melakukan pemrosesan kartu kredit dengan bank. Paremeter ini dapat digunakan untuk mengidentifikasi MID yang digunakan saat transaksi dan dapat digunakan untuk rekonsilisasi. Hanya dikembalikan apabila Anda menggunakan MID Anda sendiri. |
merchant_reference_code required |
string |
Kode merchant yang digunakan untuk melakukan rekonsiliasi transaksi dengan bank. |
bank_reconciliation_id required |
string |
ID transaksi yang dapat digunakan untuk rekonsiliasi dengan bank. Digunakan untuk melakukan rekonsiliasi dengan penerbit kartu dan bank penerima transaksi. |
descriptor optional |
string |
Deskriptor khusus untuk menentukan identitas merchant. Catatan: Untuk aggregator merchant, nilai yang akan dikembalikan adalah XENDIT*[MERCHANT_NAME]-DESCRIPTOR Untuk switcher merchant, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR. |
signed_field_names required |
string |
Nilai dari parameter ini harus berisikan dengan nilai kunci dari parameter yang nantinya akan digunakan untuk melakukan verifikasi signature, dipisahkan dengan tanda koma. |
signature required |
string |
Nilai dari parameter ini didapatkan dengan menggunakan dari secret API key Xendit yg dapat diambil dari Dasbor Anda, kemudian membuat hash dari parameter yang dicantumkan pada permintaan dengan methode sha256. Lihat instruksi dan contoh kode untuk membuat signature. |
reward_balance required |
string |
Saldo rewards yang tersisa dari yang diberikan oleh penerbit kartu. Hanya dikembalikan pada respond jika parameter use_reward disertakan pada permintaan Safe Acceptance dengan nilai true . |
installment_count required |
string |
Bersamaan dengan parameter interval , parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. |
installment_interval required |
string |
Bersamaan dengan parameter count , parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. |
installment_code required |
string |
Dikembalikan pada respons untuk sebagai penanda bahwa transaksi ini adalah transaksi cicilan. Digunakan untuk mengidentifikasi tipe cicilan yang berkaitan dengan bunga cicilan. |
promotion_reference_id required |
string |
Dikembalikan pada respon sebagai tanda transaksi yang memiliki promo. Digunakan untuk mengidentifikasi ID referensi promo. |
promotion_original_amount required |
string |
Dikembalikan pada respon sebagai tanda transaksi yang memiliki promo. Digunakan untuk mengidentifikasi jumlah sebelum dikenakan promo. |
approval_code required |
string |
Suatu kode berisikan angka yang berurutan (biasanya 6 atau 8 digit) yang mengindikasikan bahwa proses otorisasi telah disetujui oleh penerbit kartu |
Status status pada Charge
Status | Deskripsi |
---|---|
CAPTURED | Charge telah berhasil di-captured dan dana tersebut akan dikirimkan ke rekening sesuai dengan jadwal settlement yang ditentukan. |
AUTHORIZED | Charge telah berhasil diotorisasi. |
FAILED | Charge gagal. Lihat Alasan Kegagalan Charge |
Kode CVN
Kode | Deskripsi |
---|---|
M | Cocok - CVN yang disertakan pada permintaan pembuatan charge cocok dengan data CVN yang dimiliki oleh penerbit kartu. |
N | Tidak cocok - CVN yang disertakan pada permintaan tidak cocok dengan data CVN yang dimiliki oleh penerbit kartu. |
P | Tidak diproses - Dapat terjadi jika kartu tidak memiliki CVN yang valid, atau CVN tidak diterima oleh penerbit kartu. Dapat melakukan permintaan charge kembali, apabila hasil yang didapatkan tetap sama, mohon dapat menggunakan kartu yang lain. |
Alasan Kegagalan Pembuatan Charge
Alasan Gagal | Deskripsi |
---|---|
AUTHENTICATION_FAILED | Pembayaran ditolak karena transaksi belum diotentikasi. Rekomendasikan pemegang kartu untuk mengotentikasi ulang transaksi dengan 3DS. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain, bentuk pembayaran lain, atau menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. |
DECLINED_BY_ISSUER | Pembayaran ditolak oleh penerbit kartu tanpa memberikan informasi lebih lanjut kepada Xendit. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
DECLINED_BY_PROCESSOR | Pembayaran ditolak oleh prosesor tanpa memberikan informasi lebih lanjut kepada Xendit. Rekomendasikan pemegang kartu untuk mencoba kembali. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
EXPIRED_CARD | Pembayaran ditolak karena kartu telah kedaluwarsa. Rekomendasikan pemegang kartu untuk memasukkan tanggal kedaluwarsa yang benar. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
ISSUER_SUSPECT_FRAUD | Pembayaran ditolak oleh penerbit kartu karena mereka mencurigai pembayaran ini sebagai penipuan. Tinjau kembali pemegang kartu. Jika Anda yakin pemegang kartu tersebut sah, rekomendasikan pemegang kartu untuk menggunakan kartu lain atau bentuk pembayaran lainnya. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
INACTIVE_OR_UNAUTHORIZED_CARD | Pembayaran ditolak oleh penerbit kartu karena kartu tidak diizinkan untuk transaksi online. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INSUFFICIENT_BALANCE | Pembayaran ditolak oleh penerbit kartu karena dana di rekening pemegang kartu tidak mencukupi. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INVALID_CARD | Pembayaran ditolak oleh penerbit kartu karena informasi kartu yang diberikan salah. Rekomendasikan pemegang kartu untuk meninjau informasi kartu dan coba kembali. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
INVALID_CVV | Pembayaran ditolak oleh penerbit kartu karena CVN / CVV / CSC kartu yang diberikan salah. Rekomendasikan pemegang kartu untuk meninjau kembali CVV / CVN / CSC dari kartu yang dipakai dan coba kembali (biasanya kode 3-4 digit di bagian belakang kartu). Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
ISSUER_UNAVAILABLE | Pembayaran ditolak oleh prosesor karena penerbit kartu tidak dapat dijangkau. Rekomendasikan pemegang kartu untuk menghubungi bank penerbit kartu untuk menyelesaikan masalah pada transaksi online. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan kartu lain atau bentuk pembayaran lainnya. |
PROCESSOR_ERROR | Pembayaran ditolak oleh prosesor karena kendala teknis di sisi prosesor. Rekomendasikan pemegang kartu untuk mencoba kembali dalam beberapa menit. Sebagai alternatif, pemegang kartu dapat mencoba menggunakan bentuk pembayaran lainnya. |
STOLEN_CARD | Pembayaran ditolak oleh penerbit kartu karena kartu dilaporkan dicuri / hilang oleh pemegang kartu. Tinjau kembali pemegang kartu. Jika Anda yakin pemegang kartu tersebut sah, rekomendasikan pemegang kartu untuk menggunakan kartu lain atau bentuk pembayaran lainnya. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
PROCESSOR_TIMEOUT | Kami mendapatkan timeout dari pemroses kami saat meminta pembayaran yang menunjukkan masalah koneksi intermiten. Sarankan pelanggan untuk mencoba ulang transaksi. |
FRAUD_RISK_BLOCKED | Pembayaran ditolak oleh penilaian risiko Xendit. Silahkan merujuk ke bagian Penilaian Risiko Penipuan untuk detail lebih lanjut. Tinjau pemegang kartu, karena pembayaran diblokir oleh daftar blokir Anda. Jika Anda yakin pemegang kartu itu sah, hapus identifikasi kartu tersebut dari daftar blokir dan anjurkan pemegang kartu untuk mencoba kembali. Jika tidak, hindari memproses transaksi dari pemegang kartu demi mencegah chargeback. |
Error Codes
Error Code | Description |
---|---|
API_VALIDATION_ERROR400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT400 |
Isi dari request bukan format JSON yang benar. |
INVALID_API_KEY400 |
Mohon gunakan Public API key untuk transaksi ini. |
SIGNATURE_VALIDATION_ERROR 400 |
Signature yang digunakan tidak valid. Mohon lakukan permintaan dengan signature yang valid. |
Capture Charge
Definisi: Capture Charge
POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/capture
Contoh Permintaan Capture Charge
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.captureCharge({
chargeID: id,
amount: 10000,
});
console.log(resp)
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/capture \
-X POST \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-d amount=15000
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '598942c4bb91a4ec309e9a37';
$params = ['amount' => 10000];
$captureCharge = \Xendit\Cards::capture($id, $params);
var_dump($captureCharge);
?>
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.captureCharge(
"12345678", //chargeId
10000 //amount
);
} catch (XenditException e) {
e.printStackTrace();
}
captureChargeData := card.CaptureChargeParams{
ChargeID: "598942c4bb91a4ec309e9a37",
Amount: 9900,
}
chargeResp, err := card.CaptureCharge(&captureChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("captured charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.capture_charge(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
amount=75000,
)
print(charge)
Contoh Respon Capture Charge
{
"created": "2020-01-08T04:49:08.815Z",
"status": "CAPTURED",
"business_id": "5848fdf860053555135587e7",
"authorized_amount": 10000,
"external_id": "test-pre-auth",
"merchant_id": "xendit",
"merchant_reference_code": "598942aabb91a4ec309e9a35",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"capture_amount": 9900,
"id": "598942c4bb91a4ec309e9a37",
"network_response": {
"card_network_response_code": "65",
"card_network_descriptor": "Exceeds withdrawal count limit",
"merchant_advice_code": "28",
"merchant_advice_descriptor": "Retry after 6 days",
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
Capture pada charge hanya perlu dilakukan apabila Anda melakukan pra-otentikasi dengan menentukan parameter capture
dengan nilai false
pada request Pembuatan Charge. Anda dapat melakukan capture dengan nominal yang berbeda dengan nominal yang terotorisasi selama nominal tersebut tidak melampaui nominal yang terotorisasi. Respon dari endpoint sama dengan respon charge
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_charge_id required |
string |
ID charge. |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount required |
string |
Nominal yang akan di-captured. Tidak dapat melampaui nominal yang terotorisasi. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
INVALID_JSON_FORMAT 400 |
Isi dari request bukan format JSON yang benar. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
AMOUNT_GREATER_THAN400 |
Nominal capture melebihi nominal yang terotorisasi. |
INVALID_CHARGE400 |
Status charge tidak terotorisasi. Mohon untuk otorisasi transaksi dan lakukan capture kembali |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
AUTHORIZATION_EXPIRED 400 |
Otorisasi sudah dikembalikan (dapat berarti juga bahwa uang sudah kembali ke pemilik kartu) atau sudah kedaluwarsa. Mohon untuk membuat auhorization atau charge baru. |
Pembuatan Refund
Definisi: Pembuatan Refund
POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/refunds
Contoh Permintaan Pembuatan Refund
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/refunds \
-X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H "X-IDEMPOTENCY-KEY: unique-id-12345" \
-d amount=15000
-d external_id=unique-external-id
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'external_id' => 'postman-charge-1502436793',
'amount' => 15000,
'X-IDEMPOTENCY-KEY' => 'unique-id'
];
$refund = \Xendit\Cards::createRefund($id, $params);
var_dump($refund);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.createRefund({
chargeID: '5877255293ff67900c6aa64e',
amount: 15000,
externalID: 'unique-external-id',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardRefund creditCardRefund = CreditCard.createRefund(
"1234567", //id
50000, //amount
"external_id" //externalId
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
createRefundData := card.CreateRefundParams{
IdempotencyKey: "unique-idempotency-key",
ChargeID: "58f984f09d1b74bc08506c34",
Amount: 15000,
ExternalID: "unique-external-id",
}
refundResp, err := card.CreateRefund(&createRefundData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("refunded charge: %+v\n", refundResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
refund = CreditCard.create_refund(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
amount=10000,
external_id="card_refund-1594106755",
)
print(refund)
Contoh Respon Pembuatan Refund
{
"updated": "2020-01-21T04:05:09.755Z",
"created": "2020-01-21T04:05:04.936Z",
"credit_card_charge_id": "58f89041780d51ed097896c5",
"user_id": "57c5aa7a36e3b6a709b6e148",
"amount": 15000,
"external_id": "unique-external-id",
"status": "REQUESTED",
"fee_refund_amount": 150,
"id": "58f984f09d1b74bc08506c34"
}
API refund menerima dua parameter, amount
dan external_id
. ID charge yang dikembalikan setelah charge yang berhasil harus digunakan pada request URL per definisi. Beberapa refund dapat dibuat selama total nominal uang yang akan refund tidak melebihi dari total nominal charge. Beberapa refund parsial dapat dilakukan selama nilai dari dari total jumlah refund tidak lebih besar dari jumlah nilai transaksi.
Catatan: Idempotensi dapat dicapai dengan mengirimkan header dengan kunci X-IDEMPOTENCY-KEY.
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
X-IDEMPOTENCY-KEYoptional |
string |
Sebuah kunci unik yang digunakan untuk menghindari duplikasi pemrosesan suatu request. Wajib unik untuk lingkungan development maupun production |
x-api-version mandatory |
string |
Nilai dari parameter ini harus “2019-05-01” |
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount required |
string |
Nominal uang yang akan di-refund. |
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
Parameter Respon
Parameter | Tipe | Deskripsi |
---|---|---|
updated required |
string |
Cap waktu ISO yang mencatat kapan terakhir refund tersebut mendapatkan pengkinian. |
created required |
string |
Cap waktu ISO yang mencatat kapan refund tersebut dibuat Timezone: . |
credit_card_charge_id required |
string |
ID charge yang digunakan untuk mengidentifikasi charge yang akan digunakan. |
user_id required |
string |
ID bisnis akun Xendit Anda. |
amount required |
number |
Nominal uang yang akan di-refund. |
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
status required |
string |
Status dari refund tersebut. Lihat Status-status Refund |
failure_reason required |
string |
Keterangan yang diberikan apabila permintaan refund gagal. lihat Alasan Refund Gagal. |
fee_refund_amount required |
number |
Nilai nominal dari biaya transaksi yang dikembalikan (nilai ini diproporsikan sesuai dengan jumlah nilai refund yang diminta). |
id required |
string |
ID unik yang digunakan sebagai referensi dari permintaan refund. |
Status status Refund
Status | Deskripsi |
---|---|
REQUESTED | Permintaan refund berhasil. |
FAILED | Permintaan refund gagal. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT 400 |
Isi dari request bukan format JSON yang benar. |
REFUND_AMOUNT400 |
Nominal refund melebihi total charge |
DUPLICATE_REFUND400 |
external_id sudah pernah digunakan |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
Alasan Refund Gagal
Alasan Gagal | Deskripsi |
---|---|
INSUFFICIENT_BALANCE | Saldo pada akun Xendit Anda tidak cukup untuk melakukan refund (saldo tersebut digunakan untuk mengembalikan biaya transaksi) |
REFUND_FAILED | Permintaan refund telah ditolak oleh bank. Mohon dicoba kembali atau hubungi kami di help@xendit.co |
REFUND_PERIOD_EXPIRED | Masa berlaku refund telah kadaluarsa. Anda dapat melakukan refund kepada merchant dengan menggunakan disbursement. |
Mendapatkan Charge
Definisi: Mendapatkan Charge
GET https://api.xendit.co/credit_card_charges/:credit_card_id?id_type=charge
Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan External ID
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e?id_type=external \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan Charge ID (Default)
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '598942c4bb91a4ec309e9a37';
$getCharge = \Xendit\Cards::retrieve($id);
var_dump($getCharge);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.getCharge({ chargeID: '5877255293ff67900c6aa64e' });
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.getCharge("5877255293ff67900c6aa64e");
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
getChargeData := card.GetChargeParams{
ChargeID: "598942c4bb91a4ec309e9a37",
}
chargeResp, err := card.GetCharge(&getChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("retrieved charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.get_charge(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
)
print(charge)
Contoh Respon Charge Response
{
"created": "2020-08-08T04:49:08.815Z",
"status": "CAPTURED",
"business_id": "5848fdf860053555135587e7",
"authorized_amount": 10000,
"external_id": "test-pre-auth",
"merchant_id": "xendit",
"merchant_reference_code": "598942aabb91a4ec309e9a35",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"capture_amount": 9900,
"id": "598942c4bb91a4ec309e9a37",
"network_response": {
"card_network_response_code": "65",
"card_network_descriptor": "Exceeds withdrawal count limit",
"merchant_advice_code": "28",
"merchant_advice_descriptor": "Retry after 6 days",
"three_ds_trans_status": "Y",
"three_ds_flow": "CHALLENGE"
}
}
Ini adalah endpoint untuk mengambil suatu objek charge. Anda perlu menentukan nilai dari charge_id
. Respon dari endpoint sama dengan respon pembuatan charge
Parameter Request (Money-in read permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_id required |
string |
Dapat diinput dengan nilai diantara id charge dari transaksi yang sudah di otorisasi atau capture ATAU menggunakan external_id dari transaksi yang diinput oleh pengguna pada saat pembuatan charge. |
id_type optional |
string |
Dijelaskan di [Tipe ID] (tipe-id). Jika tidak diinput, nilai akan diisi dengan charge . |
Tipe ID
Type | Description |
---|---|
charge | Pencarian transaksi charge akan menggunakan ID charge yang diberikan oleh Xendit dimana data tersebut tertera pada respon transaksi charge atau otorisasi |
external | Pencarian transaksi charge akan menggunakan external ID yang diinput oleh pengguna pada saat pengguna melakukan permintaan pembuatan charge atau otorisasi |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
Permintaan Opsi Charge
Saat menerima transaksi kartu kredit untuk pelanggan Anda, Anda pasti mengharapkan untuk dapat memberikan tambahan pilihan metode pembayaran. Hal ini meliputi:
- Pembayaran menggunakan cicilan
- Pembayaran menggunakan promo
Opsi tersebut harus dipilih oleh pengguna sebelum melakukan permintaan Charge. Contohnya apabila Anda ingin mengecek apakah kartu yang ingin digunakan memiliki promo dan diskon, maka sebelum Anda melakukan permintaan untuk pembayaran dengan kartu kredit, Anda dapat mengecek terlebih dahulu apakah terdapat opsi cicilan atau tidak, dan Anda dapat menampilkan opsi tersebut kepada pengguna, untuk kemudian dipilih oleh pengguna.
API Permintaan Opsi Charge kami dapat membantu Anda dalam hal tersebut. Anda dapat mengirimkan permintaan ke endpoint kami edngan mengirimkan info yang sudah dimasukkan oleh pengguna (seperti BIN (Nomor Identifikasi Kartu), kode promo), kemudian Xendit akan melakukan pengecekan apakah terdapat opsi charge untuk permintaan tersebut. Respon yang diberikan akan berisi tentang opsi opsi yang tersedia untuk parameter yang dimasukkan. Anda dapat memilih opsi tersebut dan melakukan transaksi charge dengan rincian yang sudah diberikan pada respon.
Definisi: Permintaan Opsi Charge
GET https://api.xendit.co/credit_card_charges/option
Contoh Permintaan Opsi Charge
curl -X GET \
https://api.xendit.co/credit_card_charges/option
-u xnd_public_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"bin": "552002",
"amount": 1000000,
"currency": "IDR”
}
Contoh Respon dari Permintaan Opsi Charge
{
"business_id": "5ea2a0cdb62b6a00108ed248",
"bin": "552002",
"promotions":[{
"reference_id": "some_promo_1",
"discount_percent": "25",
"original_amount": 1000000,
"final_amount": 750000,
"currency": "IDR"
}],
"installments" : [{
"count": 3,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
},{
"count": 6,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
},{
"count": 12,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
}]
}
Permintaan Untuk Mendapatkan Opsi Charge
Parameter | Deskripsi |
---|---|
amount required |
number Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
bin optional |
array of strings BIN (6 atau 8 digit) yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
currency default: IDR |
string Mata uang yang akan digunakan untuk pembayaran. |
promo_code optional |
string Kode promo yang dapat digunakan oleh pengguna untuk mengaktifkan promo. Masukkan nilai pada parameter ini apabila user ingin pelanggan menggunakan kode promo untuk mengaktifkan promo.
|
token_id required |
string ID token dari kartu, didapatkan saat melakukan proses tokenisasi dengan xendit. Kami akan mencari nilai BIN dari token ID yang dimasukkan. |
Respon Permintaan Opsi Charge
Parameter | Deskripsi | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
business_idrequired |
string ID dari bisnis Anda yang terdapat di dalam sistem Xendit. |
||||||||||||||||||||
binrequired |
string BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
||||||||||||||||||||
promotions optional |
array Array berisikan detil dari daftar promo yang tersedia rincian parameter promosi
|
||||||||||||||||||||
installments optional |
object Menjelaskan tentang opsi cicilan yang tersedia. parameter tambahan untuk cicilan
|
||||||||||||||||||||
reward optional |
object Jika fitur rewards tersedia pada kartu, objek ini akan dikembalikan di dalam respons. parameter rinci dari reward
|
Pembuatan Promo
Cara terbaik untuk menarik pelanggan adalah dengan menawarkan potongan harga berdasarkan tipe kartu kredit yang mereka gunakan. Bank penerbit kartu kredit sering kali bekerja sama dengan badan usaha untuk menyediakan potongan harga kepada pemegang kartu jika mereka memilih untuk melakukan pembayaran menggunakan kartu kredit. Hal terpenting dari fitur yang terdapat dalam alur pembayaran adalah kemampuan untuk melakukan pengecekan terhadap nomor kartu, apakah kartu tersebut diterbitkan oleh bank yang spesifik.
Xendit memberikan layanan promo API untuk membantu tipe promosi tersebut di atas. Fitur tersebut mengizinkan pengguna untuk membuat promo dan memilih rentang dari Bank Identification Numbers (BINs; merupakan 6 angka digit pertama dari kartu kredit), untuk mendapatkan promo yang ingin digunakan. Saat melakan proses pembayaran kartu kredit, pengguna dapat mengirimkan permintaan GET kalkulasi promo. Jika terdapat promo yang sesuai dengan jenis kartu yang digunakan, maka Xendit akan secara otomatis menerapkan potongan harga dan memberikan response terkait dengan informasi potongan harga tersebut, sehingga pengguna dapat melanjutkan proses pembayaran dengan nominal yang sudah dipotong.
Definisi: Pembuatan Promo
POST https://api.xendit.co/promotions
Contoh Membuat Permintaan Pembuatan Promo
curl -X POST \
https://api.xendit.co/promotions
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
promotion = CreditCard.create_promotion(
reference_id="BRI_20_JAN-1594176600",
description="20% discount applied for all BRI cards",
discount_amount=10000,
bin_list=['400000', '460000'],
start_time="2020-01-01T00:00:00.000Z",
end_time="2021-01-01T00:00:00.000Z",
min_original_amount=25000,
max_discount_amount=5000
)
print(promotion)
Contoh Response Permintaan Pembuatan Promo
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"status": "ACTIVE",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Permintaan Pembuatan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id required |
string |
Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo.
|
description required |
text |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list optional |
array of strings |
Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo. Contoh: ["400000", "460000"] |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk fitur promosi. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo. Contoh: "BCA" |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
discount_amount optional |
number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time required |
ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time required |
ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount optional |
number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount optional |
number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Response Pembuatan Promo
Objek Promo
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Deretan karakter alfanumerik unik yang merupakan identitas dari promo yang sudah dibuat (dibuat oleh Xendit). |
business_id | string |
Deretan karakter alfanumerik unik yang merupakan identitas dari akun Anda dalam sistem Xendit, digunakan untuk mengidentifikasi akun Anda. |
status | string |
Status dari suatu objek promo. Lihat Status Promo |
reference_id | string |
Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo. simbol yang diterima semua karakter spesial dapat digunakan. |
description | string |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list | array of strings |
Daftar dari BIN yang diperbolehkan untuk melakukan transaksi menggunakan promo. Saat memilih spesifik bank, semua BIN yang terasosiasi dengan sistem promosi yang terdaftar di Xendit akan dapat menggunakan promo tersebut. Kode bank harus sesuai dengan daftar yang tertera di sini. |
channel_code | string |
Kode bank yang diperbolehkan untuk melakukan transaksi menggunakan promo. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo. |
discount_percent | number |
Persentase dari jumlah potongan yang akan diberikan pada objek promo. Saat objek promo telah dibuat menggunakan discount_percent , parameter ini akan ditampilan pada response.
|
discount_amount | number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Saat objek promo telah dibuat menggunakan discount_amount , parameter ini akan ditampilan pada response.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time | ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time | ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount | number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount | number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Status Promo
Status | Description |
---|---|
ACTIVE | Promo aktif dan dapat digunakan |
INACTIVE | Promo tidak aktif karena belum melewati start_time |
EXPIRED | Promo sudah kedaluarsa karena melewati batas end_time |
PAUSED | Promo diberhentikan sementara atas permintaan dari pengguna |
Kesalahan Pembuatan Promo
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error. |
INVALID_JSON_FORMAT 400 |
Permintaan tidak memenuhi standar format JSON. |
REQUEST_FORBIDDEN_ERROR403 |
API key yang digunakan tidak memiliki izin untuk melakukan permintaan. Mohon dapat menggunakan izin yang tepat pada API key atau gunakan API key yang berbeda. |
REFERENCE_IN_USE409 |
Referensi sudah digunakan pada promo lain. Mohon gunakan nama atau referensi yang lain. |
PROMO_CODE_IN_USE409 |
Kode promo sudah terdaftar pada promo yang tersedia. Mohon gunakan kode promo yang lain |
Mendapatkan Promo
API ini dapat digunakan untuk mendapatkan rincian dari promo yang telah dibuat. Hal ini sangat berguna untuk mendapatkan daftar dari promo yang tersedia. Jika parameter yang dimasukkan memberikan kecocokan di lebih dari satu promo, hasil yang akan diberikan pada response akan berbentuk array.
Definisi: Mendapatkan Promo
GET https://api.xendit.co/promotions?reference_id={reference_id}
Contoh Permintaan Untuk Mendapatkan Promo
curl -X GET \
https://api.xendit.co/promotions?reference_id=BRI_20_JAN
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Respon Permintaan Untuk Mendapatkan Promo
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"status": "ACTIVE",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Parameter Yang dapat Digunakan
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id optional |
string |
Masukkan karakter spesifik reference_id dari satu objek promo yang telah dibuat. |
status required |
enum |
Status dari Promo yang telah dibuat.ACTIVE or INACTIVE . |
bin optional |
string |
BIN spesifik dari kartu. Contoh: 460000 |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk menggunakan Promo. |
currency optional default: IDR |
string |
Mata uang yang digunakan untuk pembayaran. Sementara ini hanya menerima IDR . |
Respon Permintaan Mendapatkan Promo
Rincian dari promo yang tersedia dikembalikan dalam bentuk array dalam format Objek Promo., tergantung pada input yang dimasukkan oleh user saat melakukan permintaan untuk mendapatkan promo. Contohnya, jika user memasukkan nilai pada parameter bin_list
yaitu [ "400000" ], maka response yang diberikan akan berupa array dari promo yang tersedia, yang berkaitan dengan BIN tersebut
Jika tidak ada promo yang tersedia dan cocok dengan permintaan user, response akan berupa array kosong.
Mendapatkan Perhitungan Promo
API ini dapat digunakan untuk menghitung berapa jumlah potongan harga yang akan diberikan pada nominal transaksi yang akan dilakukan (di-charge). API ini menerima BIN atau promo_code
, dan juga nominal original dari transaksi. Jika ditemukan kecocokan pada BIN atau promo_code
terhadap promo yang sudah dibuat, Xendit akan menerapkan potongan harga pada nominal asli dan mengembalikan nominal yang sudah dipotong pada response. Fitur ini hanya melakukan perhitungan pada promo yang memiliki status ACTIVE
.
Kami telah membangun halaman untuk Anda melakukan test dengan mengirimkan request Get Promotion Calculations sebelum Anda integrasi. Anda bisa mencoba nya disini. Anda memerlukan kunci / key API Publik Anda, yang dapat Anda dapatkan dengan melakukan registrasi di Dashboard kami dan menuju ke halaman Settings.
Definisi: Mendapatkan Perhitungan Promo
GET https://api.xendit.co/promotions/calculate?amount={amount}&bin={bin}
Contoh Permintaan Perhitungan Promo Menggunakan 6 Digit Pertama Kartu Kredit (BIN)
curl -X GET \
https://api.xendit.co/promotions/calculate?amount=1000000&bin=460000
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Permintaan Perhitungan Promo Menggunakan Token ID
curl -X GET \
https://api.xendit.co/promotions/calculate?amount=1000000&token_id=598d5d0e51e0870d44c61534
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Respon dari Permintaan Penghitungan Promo
{
"original_amount": 1000000,
"discount_percent": 20,
"reference_id": "BRI_20_JAN",
"final_amount": 800000,
"currency": "IDR",
"description": "20% discount applied for all BRI cards",
"min_original_amount": 500000,
"max_discount_amount": 100000
}
}
Permintaan Mendapatkan Perhitungan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
amount required |
number |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
bin optional |
string |
BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
promo_code optional |
string |
Karakter promo_code yang dimasukkan oleh pemegang kartu, dimana nilai dari parameter ini kemudian digunakan untuk mengecek apakah promo_code tersebut berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
currency optional default: IDR |
string |
Mata uang yang digunakan untuk pembayaran. Sementara ini hanya menerima IDR . |
token_id optional |
string |
Id token dari kartu, yang didapatkan dari proses tokenisasi pada sistem Xendit. Kami akan mengasosiasikan token ID tersebut dengan enam digit pertama kartu kredit. |
Response Perhitungan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id optional |
string |
Referensi unik yang diberikan untuk promo yang Anda buat. |
original_amount required |
number |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promo. Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent . |
discount_amount optional |
number |
Nominal dari potongan harga yang akan diberikan pada promo. Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent . |
final_amount required |
number |
Nominal final setelah potongan harga diberikan berdasarkan promo yang digunakan. User harus menggunakan nominal ini untuk melakukan transaksi charge. |
description | string |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. Diberikan pada response saat mengirimkan permintaan pada Get Promotion . |
min_original_amount optional |
number |
Nilai minimum transaksi agar promo dapat digunakan. |
max_discount_amount optional |
number |
Nilai maksimum dari diskon yang dapat digunakan pada promo. |
Pembaruan Promo
Anda dapat menggunakan fitur ini untuk melakukan pembaruan pada promosi yang telah dibuat sebelumnya.
Definisi: Pembaruan Promo
PATCH https://api.xendit.co/promotions/:promotion_id
Contoh Permintaan Pembaruan Promotion
curl -X GET \
https://api.xendit.co/promotions/36ab1517-208a-4f22-b155-96fb101cb378
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"description": "20% discount applied for all BCA cards",
"bin_list": [
"411455",
"422566"
],
"discount_percent": 20,
"channel_code": "BCA",
"currency": "IDR"
}
Contoh Respon Pembaruan Promotion
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BCA_20",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"transaction_limit": 0,
"is_deleted": false,
"status": "ACTIVE",
"bin_list": [
"411455",
"422566"
],
"discount_percent": 20,
"channel_code": "BCA",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Parameter Permintaan Pembaruan Promo
Tidak semua parameter dari Objek Promo dapat diperbaharui. Parameter yang dapat diperbaharui adalah sebagai berikut:
Body Parameter | Tipe | Deskripsi |
---|---|---|
description required |
text |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah objek promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list optional |
array of strings |
Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo. Contoh: ["400000", "460000"] |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk fitur promosi. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo.Kode bank harus sesuai dengan kode yang tertera di sini. |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
discount_amount optional |
number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time required |
ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time required |
ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount optional |
number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount optional |
number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Respon Pembaruan Promo
Mengembalikan Objek Promo. Parameter yang Anda masukkan pada permintaan pembaruan promo akan tertera pada respon.
Error Codes
Error Code | Description |
---|---|
API_VALIDATION_ERROR 400 |
Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error. |
INVALID_JSON_FORMAT 400 |
Permintaan tidak memenuhi standar format JSON. |
PROMOTION_NOT_FOUND_ERROR 404 |
Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid |
PROMO_CODE_IN_USE 400 |
Kode promo ini telah digunakan pada promo sebelumnya atau sedang digunakan pada promo yang sedang berjalan. Mohon gunakan kode promo yang lain. |
INVALID_DISCOUNT_TYPE 400 |
Objek promo dengan id tersebut mempunya tipe diskon persen / diskon jumlah. Mohon sesuaikan dengan objek promo yang ada. |
INVALID_START_TIME_UPDATE 400 |
Objek promo dengan id promo tersebut memiliki masa berlaku waktu habis. Mohon sesuaikan dengan waktu promo dimulai. |
Menghapus Promo
Gunakan fitur ini untuk menghapus promo yang telah dibuat.
Definition: Menghapus Promo
DELETE https://api.xendit.co/promotions/:promotion_id
Contoh Permintaan Menghapus Promo
curl -X DELETE \
https://api.xendit.co/promotions/6055a96c-a870-4a2f-b61f-4015af6478cb
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
Contoh Respon Permintaan Menghapus Promo
{
"id":"6055a96c-a870-4a2f-b61f-4015af6478cb",
"created":"2020-07-29T10:57:47.426Z",
"business_id":"5edfb2a5d40e3040347d91fd",
"reference_id":"Cypress-Test-Promo-Delete-1596020266435",
"start_time":"2020-07-29T10:57:46.373Z",
"end_time":"2020-07-30T10:57:46.373Z",
"status":"DELETED",
"type":"PROMO_CODE",
"discount_amount":5000,
"promo_code":"Cypress-Test-Promo-Delete-1596020266435",
"currency":"IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
}
Parameter Permintaan Menghapus Promo
Path Parameter | Tipe | Deskripsi |
---|---|---|
promotion_id optional |
string |
Spesifik id yang diberikan oleh Xendit dari suatu objek promo yang telah dibuat. |
Respon Permintaan Menghapus Promo
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Id unik dari promo yang akan dihapus (ID pada promo yg dibuat oleh Xendit). |
is_deleted | boolean |
Status dari pada suatu objek promo yang menandakan bahwa objek promo sudah dihapus. |
Error Codes
Error Code | Description |
---|---|
PROMOTION_NOT_FOUND_ERROR 404 |
Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid |
eWallet
eWallet API kami memungkinkan Anda untuk melakukan charge dan menerima pembayaran langsung dari penyedia layanan ewallet terkemuka. Dengan melakukan satu integrasi, Anda akan mendapatkan akses ke seluruh eWallet yang tersedia termasuk integrasi di masa depan. Sampai saat ini, kami telah memproses jutaan transaksi eWallet.
Untuk detil di setiap API termasuk panduan integrasi, silakan merujuk pada dokumentasi kami.
Versi API
Anda sedang melihat versi terbaru API eWallet kami. Pada versi ini, dengan sekali integrasi Anda akan mendapatkan akses ke seluruh eWallet yang tersedia dan eWallet yang akan tersedia mendatang! API ini juga memungkinkan Anda untuk melakukan alur tokenized payment dan auth/capture payment di masa mendatang. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2021-01-25 Terbaru |
API eWallet baru yang mendukung top eWallet provider di Indonesia dan Filipina. API versioning tidak butuhkan. Anda dapat mengakses API eWallet baru dengan memanggil POST /ewallets/charges |
Pembuatan Charge eWallet
Endpoint: Pembuatan Request Charge eWallet
POST https://api.xendit.co/ewallets/charges
eWallet
Parameter Request
Contoh: Pembuatan Request Charge eWallet
curl https://api.xendit.co/ewallets/charges -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'content-type: application/json' \
--data '{
"reference_id": "order-id-123",
"currency": "IDR",
"amount": 25000,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://redirect.me/payment"
},
"metadata": {
"branch_area": "PLUIT",
"branch_city": "JAKARTA"
}
}' \
try {
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
Map<String, String> channelProperties = new HashMap<>();
channelProperties.put("success_redirect_url", "https://dashboard.xendit.co/register/1");
Map<String, String> metadata = new HashMap<>();
metadata.put("branch_code", "tree_branch");
Map<String, Object> params = new HashMap<>();
params.put("reference_id", "test-reference-id");
params.put("currency", "IDR");
params.put("amount", 1000);
params.put("checkout_method", "ONE_TIME_PAYMENT");
params.put("channel_code", "ID_SHOPEEPAY");
params.put("channel_properties", channelProperties);
params.put("metadata", metadata);
EWalletCharge charge = EWalletCharge.createEWalletCharge(params);
} catch (XenditException e) {
e.printStackTrace();
}
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'reference_id' => 'test-reference-id',
'currency' => 'IDR',
'amount' => 1000,
'checkout_method' => 'ONE_TIME_PAYMENT',
'channel_code' => 'ID_SHOPEEPAY',
'channel_properties' => [
'success_redirect_url' => 'https://dashboard.xendit.co/register/1',
],
'metadata' => [
'branch_code' => 'tree_branch'
]
];
$createEWalletCharge = \Xendit\EWallets::createEWalletCharge($ewalletChargeParams);
var_dump($createEWalletCharge);
?>
from xendit import EWallet
ewallet_charge = EWallet.create_ewallet_charge(
reference_id="test-reference-id",
currency="IDR",
amount=1000,
checkout_method="ONE_TIME_PAYMENT",
channel_code="ID_SHOPEEPAY",
channel_properties={
"success_redirect_url": "https://dashboard.xendit.co/register/1",
},
metadata={
"branch_code": "tree_branch",
},
)
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := ewallet.CreateEWalletChargeParams{
ReferenceID: "test-reference-id",
Currency: "IDR",
Amount: 1000,
CheckoutMethod: "ONE_TIME_PAYMENT",
ChannelCode: "ID_SHOPEEPAY",
ChannelProperties: map[string]string{
"success_redirect_url": "https://dashboard.xendit.co/register/1",
},
Metadata: map[string]interface{}{
"branch_code": "tree_branch",
},
}
charge, chargeErr := ewallet.CreateEWalletCharge(&data)
if chargeErr != nil {
log.Fatal(chargeErr)
}
fmt.Printf("created e-wallet charge: %+v\n", charge)
const x = new require("xendit-node")({
secretKey:
"xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
});
const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);
const resp = await ew.createEWalletCharge({
referenceID: 'test-reference-id',
currency: 'IDR',
amount: 1000,
checkoutMethod: 'ONE_TIME_PAYMENT',
channelCode: 'ID_SHOPEEPAY',
channelProperties: {
successRedirectURL: 'https://dashboard.xendit.co/register/1',
},
metadata: {
branch_code: 'tree_branch'
}
});
console.log(resp);
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
EWalletChargeClient eWalletCharge = xendit.EWalletCharge;
EWalletChargeParameter parameter = new EWalletChargeParameter
{
ReferenceId = "demo-reference-id",
Currency = Currency.IDR,
Amount = 1000,
CheckoutMethod = EWalletEnum.CheckoutMethod.OneTimePayment,
ChannelCode = EWalletEnum.ChannelCode.IdOvo,
ChannelProperties = new EWalletChargeProperties
{
MobileNumber = "+628123123123",
},
};
EWalletChargeResponse eWalletChargeResponse = await eWalletCharge.Create(parameter);
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idopsional |
string |
User-id sub-account yang Anda ingin gunakan untuk membuat transaksi Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform . Silakan buka xenPlatform untuk informasi lebih lanjut. |
with-split-ruleopsional |
string |
ID Split Rule yang ingin Anda aplikasikan ke pembayaran eWallet ini untuk dapat membagi pembayaran dan menyalurkannya ke beberapa Akun lain. Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan split_rule_id pada header response API. Apabila for-user-id header tidak tersedia, Split Rule akan menggunakan Akun Master sebagai sumber dana untuk mengirimkan pemotongan pembayaran ke akun destinasi yang ditentukan. Header ini adalah versi terbaru, versi lama dengan header with-fee-rule hanya dapat digunakan sampai tanggal 30 September 2025. Mohon untuk segera migrasi ke versi yang terbaru apabila Anda masih menggunakan header with-fee-rule . Header tersebut hanya dapat digunakan apabila Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
reference_idwajib |
string |
Reference ID yang disediakan oleh merchant (255 karakter) | ||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
||||||||||||||||||||||||||||||||||||||||
amountwajib |
number |
Nominal yang harus dibayarkan Minimal - 1,000 IDR untuk ID_JENIUSPAY dan 100 IDR atau 1 PHP untuk eWallet lainnyaMaksimal - berdasarkan saldo maksimal eWallet |
||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Metode checkout yang menentukan alur pembayaran untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali pakaiTOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang |
||||||||||||||||||||||||||||||||||||||||
channel_codewajib jika checkout_method =
|
string |
Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_ASTRAPAY , ID_JENIUSPAY , ID_SAKUKU , PH_PAYMAYA , PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
||||||||||||||||||||||||||||||||||||||||
channel_propertieswajib ketika
|
object |
Menunjukkan informasi yang dibutuhkan untuk memulai transaksi OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
MAYA (PAYMAYA) parameter wajib
|
||||||||||||||||||||||||||||||||||||||||
payment_method_idwajib jika checkout_method =
|
string |
ID dari payment method. Payment method digunakan untuk melakukan tokenisasi pembayaran untuk menandai eWallet end user sebagai metode pembayaran | ||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object dimana payment method akan dihubungkan. Gunakan Create Customer API untuk melakukan request Customer | ||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail parameter objek
|
||||||||||||||||||||||||||||||||||||||||
metadataopsional |
object |
Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan. Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter. Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
Parameter Respon
Contoh: Respon Sukses Pembuatan Charge eWallet API
{
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "PENDING",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_required": true,
"callback_url": "https://calling-back.com/xendit/shopeepay",
"created": "2017-07-21T17:32:28Z",
"updated": "2017-07-21T17:32:28Z",
"void_status": null,
"voided_at": null,
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_code": "tree_branch"
}
}
Parameter Body | Tipe | Deskripsi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
reference_idwajib |
string |
Reference ID yang dibuat oleh merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
statuswajib |
string |
Status request charge
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
charge_amountwajib |
number |
Nominal charge yang direquest dari merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
capture_amountopsional |
number |
Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
refunded_amountopsional |
number |
Total nominal refund dari merchant kepada end user | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali pakai |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
channel_codewajib |
string |
Channel Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_ASTRAPAY , ID_JENIUSPAY , ID_SAKUKU , PH_PAYMAYA , PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
channel_propertieswajib |
object |
Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
Parameter wajib MAYA (PAYMAYA)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
actionsopsional |
string |
Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan dalam respon adalah true . Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
Channel wajib pengalihan informasi lebih lanjut
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
is_redirect_requiredwajib |
boolean |
Menandakan apakah redirection/pengalihan wajib dilakukan untuk menyelesaikan pembayaran Ketika True, merchants mengalihkan end user ke url yang diberikan pada bagian “actions”. Ketika False, tidak diperlukan adanya redirection untuk melanjutkan pembayaran |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
callback_urlwajib |
string |
Callback URL dimana notifikasi pembayaran akan dikirimkan | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
updatedwajib |
string |
ISO 8601 Timestamp untuk update object charge. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
void_statusopsional |
string |
Status request void. Nilai tersedia: PENDING , FAILED , SUCCEEDED |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
voided_atopsional |
string |
ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
capture_nowwajib |
string |
Default: true . Parameter tidak digunakan saat ini |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
payment_method_idopsional |
string |
ID metode pembayaran dari Xendit sebagai representasi metode pembayaran pelanggan Anda. Hanya dapat digunakan untuk kanal yang mendukung pembayaran tokenisasi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
failure_codeopsional |
string |
Alasan kegagalan pembayaran oleh end user maupun dari provider eWallet. Kode kegagalan akan diberitahukan kepada merchant pada callback pembayaran atau melalui GET payment status setelah transaksi dilakukan oleh end user | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail objek parameter
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadataopsional |
object |
Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit |
Kode Eror
Contoh: Respon Eror Pembuatan Request Charge eWallet API
{
"error_code": "UNSUPPORTED_CURRENCY",
"message": "The payment currency request is not supported for this payment channel. Please refer to our API reference or docs to pick available currencies"
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat invalid input pada salah satu parameter |
UNSUPPORTED_CURRENCY400 |
Mata uang pembayaran pada request tidak mendukung untuk channel pembayaran ini. Silakan merujuk pada API reference atau docs untuk melihat mata uang yang tersedia |
INVALID_PAYMENT_METHOD_ID400 |
Terdapat ketidaksesuaian antara channel_code atau customer_id dalam request dengan data yang digunakan dalam pembuatan payment_method_id, atau payment_method_id tidak tersedia untuk akun terkait. Silakan mencoba kembali dengan payment_method_id yang valid |
INVALID_API_KEY401 |
Format API key tidak valid |
INVALID_MERCHANT_CREDENTIALS401 |
Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request |
CHANNEL_NOT_ACTIVATED403 |
Request pembayaran gagal dikarenakan channel pembayaran yang direquest belum diaktifkan di Xendit. Silakan melakukan aktivasi melalui dashboard atau menghubungi customer support Xendit |
CALLBACK_URL_NOT_FOUND404 |
Request pembayaran gagal dikarenakan tidak ditemukan callback url pada dashboard Xendit atau pada request header. Silakan masukkan callback url pada dashboard Xendit |
UNSUPPORTED_CONTENT_TYPE403 |
Tidak mendukung tipe konten yang di request |
CHARGE_LIMIT_EXCEEDED429 |
Telah terjadi 3 kali percobaan permintaan ke Jenius Pay per cashtag dalam kurun waktu 10 menit. Harap menunggu selama 10 menit sebelum mencoba memulai permintaan baru |
SERVER_ERROR500 |
Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu |
Notifikasi Pembayaran
Xendit mengirim notifikasi pembayaran ke sistem Anda melalui webhook. Anda perlu mempersiapkan URL untuk menerima webhook dan mendaftarkan URL tersebut melalui Setelan Webhook pada bagian eWallets paid
di Dasbor Xendit.
Ketika pembayaran berhasil diproses, Xendit mengirimkan pesan ke URL menggunakan metode POST secara langsung melalui webhook. Xendit turut melampirkan x-callback-token
header yang dapat Anda validasi dengan Token Verifikasi di Setelan Webhook untuk mengecek keaslian pesan tersebut.
Kami harap sistem Anda dapat merespon webhook dengan status 200
secepatnya. Xendit mengganggap webhook gagal ketika kami tidak menerima respon dari sistem Anda selama 30 detik. Ketika pengiriman pesan gagal, maka upaya pengiriman ulang akan dilakukan secara otomatis sampai 24 jam kedepan. Anda juga dapat mengirimkan ulang pesan secara mandiri melalui tab Webhook bila diperlukan. Terakhir, Anda juga dapat menerima email webhook setiap 6 jam untuk mengecek sistem webhook Anda secara berkala.
Pelajari lebih lanjut mengenai Webhook.
Webhook Payload
Contoh: Payload Webhook Pembayaran Sukses
{
"event": "ewallet.capture",
"business_id": "5abe2389ewpejrt238",
"created": "2020-04-20T16:25:52Z",
"data": {
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "SUCCEEDED",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_wajib": true,
"callback_url": "https://calling-back.com/xendit/shopeepay",
"created": "2017-07-21T17:32:28Z",
"updated": "2017-07-21T17:32:28Z",
"voided_at": null,
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_code": "tree_branch"
}
}
}
Parameter Header | Tipe | Description |
---|---|---|
x-callback-tokenwajib |
string |
Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut |
webhook-idwajib |
string |
ID webhook yang dapat Anda gunakan untuk implementasi idempotensi di sistem Anda guna menangani skenario penerimaan webhook yang sama/duplikat di sistem Anda. Ketika Anda menerima nilai webhook-id yang sama pada webhook berikutnya, hindari atau tolak pemrosesan webhook tersebut untuk mencegah pemrosesan berulang. |
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eventwajib |
string |
Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.capture terjadi ketika provider eWallet mengkonfirmasi status transaksi pembayaran |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataopsional |
object |
Objek charge eWallet akan dikumpulkan pada parameter ini. Silakan lihat bagian ini untuk informasi lengkapnya Data fields
|
Kode Kegagalan
Contoh: Respon Eror - Pembuatan Void eWallet
{
"event": "ewallet.capture",
"business_id": "5abe2389ewpejrt238",
"created": "2020-04-20T16:25:52Z",
"data": {
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "FAILED",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_wajib": true,
"callback_url": "https://calling-back.com/xendit/shopeepay",
"created": "2017-07-21T17:32:28Z",
"updated": "2017-07-21T17:32:28Z",
"void_status": null,
"voided_at": null,
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": "USER_DID_NOT_AUTHORIZE_THE_PAYMENT",
"basket": null,
"metadata": {
"branch_code": "tree_branch"
}
}
}
Kode Kegagalan | Pesan Eror |
---|---|
ACCOUNT_ACCESS_BLOCKED |
Akun end user tidak dapat diakses dikarenakan akses telah ditutup oleh eWallet provider. End user harus menghubungi eWallet provider untuk penyelesaian. |
INVALID_MERCHANT_CREDENTIALS |
Terdapat eror dengan kredensial merchant yang disediakan oleh eWallet provider. Silakan hubungi customer support Xendit untuk penyelesaian. |
USER_DECLINED_PAYMENT |
End user menolak request pembayaran. |
INVALID_ACCOUNT_DETAILS |
End user menyediakan informasi yang salah untuk pembayaran ini. |
MAXIMUM_LIMIT_REACHED |
Transaksi ini telah mencapai limit maksimum yang telah ditentukan oleh en duser atau penyedia ewallet. Pembayaran dapat dilakukan kembali setelah limit kembali. |
USER_UNREACHABLE |
Provider eWallet/server tidak dapat menjangkau aplikasi/nomor user. Alasan pada umumnya dikarenakan koneksi tidak stabil, perangkat eror atau perangkat jailbreak. |
CHANNEL_UNAVAILABLE |
Channel pembayaran yang direquest mengalami kendala yang tidak terduga. eWallet provider akan diberitahukan untuk penyelesaian isu. |
INSUFFICIENT_BALANCE |
End user tidak memiliki cukup saldo untuk menyelesaikan pembayaran. |
ACCOUNT_NOT_ACTIVATED |
Akun user tidak dapat diakses karena akun belum diaktifkan. User harus memastiukan akun telah aktif dan memiliki cukup saldo sebelum mencoba kembali. |
INVALID_TOKEN |
Penghubungan akun untuk end user ini telah expired. Silakan lakukan penghubungan kembali sebelum mencoba ulang Binding. |
FAILURE_DETAILS_UNAVAILABLE |
Detail mengenai rikues pembayaran yang gagal tidak disediakan oleh penyedia eWallet provider. |
Get eWallet Charge Status
Endpoint: Get eWallet Charge Status
GET https://api.xendit.co/ewallets/charges/{id}
Endpoint ini digunakan untuk mendapatkan status charge request. Anda perlu memasukkan id
pada response body ketika melakukan request Pembuatan request charge eWallet
Version
Anda sedang melihat versi terbaru API eWallet kami. Klik di sini untuk melihat versi sebelumnya.
Parameter Request
Contoh: Check eWallet Charge Status Request
curl 'https://api.xendit.co/ewallets/charges/ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2' \
-X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
try {
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
EWalletCharge charge = EWalletCharge.getEWalletChargeStatus("ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2");
} catch (XenditException e) {
e.printStackTrace();
}