NAV undefined
bash php javascript java go python csharp

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

Run in Postman

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 pada username dan kosongkan password

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:

  1. Buat API key melalui Dasbor
  2. Salin API key
  3. Gunakan Basic Access Authentication atau BASIC AUTH sebagai metode otentikasi di server Anda
  4. Format BASIC AUTH adalah {{username}}:{{password}}
  5. Masukkan API key ke dalam username dan kosongkan password. Pastikan Anda menyertakan : di belakang
  6. Enkripsi nilai tersebut dengan Base64
  7. 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

  1. Credit / Debit Cards (melalui Payments API)
  2. E-Wallets (melalui Payments API)
  3. QR Codes (melalui Payments API)
  4. Direct Debit (melalui Payments API)
  5. Transfer Bank / Virtual Accounts (melalui Payments API)
  6. Retail Outlets (melalui Payments API)
  7. Invoices
  8. Payouts
  9. 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:

  1. Tokenisasi kartu kredit/debit dengan single-use token
  2. Tokenisasi kartu kredit/debit dengan multiple-use token
  3. 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:

  1. Tokenisasi kartu kredit/debit dengan single-use token
  2. Tokenisasi kartu kredit/debit dengan multiple-use token
  3. 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:

Panduan Migrasi

Panduan berikut dibuat untuk membantu Anda melakukan migrasi dengan aman dari versi sekarang ke versi yang terbaru:

  1. 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
  2. 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
  3. Ulangi langkah nomor 1 dan 2 pada mode Live
  4. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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 yang terjadi pada akun Anda, seperti disbursement telah berhasil dilakukan, Virtual Account telah dibuat atau dibayar, atau Invoice telah kedaluwarsa

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-id
optional
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:

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_id
required
string Identifikasi customer dari merchant
type
required
string Tipe customer.
Nilai-nilai yang didukung: INDIVIDUAL, BUSINESS
individual_detail
optional
object Objek JSON yang memuat informasi individual. Akan kosong apabila type bukan INDIVIDUAL
Parameter detail individu
given_names
required
string Nama depan customer
surname
optional
string Nama belakang atau nama keluarga customer
nationality
optional
string Kode negara kebangsaan customer

Format ISO 3166-2 Country Code
place_of_birth
optional
string Kota atau lokasi lain yang relevan dengan tempat lahir customer
date_of_birth
optional
string Tanggal lahir customer

Format YYYY-MM-DD string
gender
optional
string Jenis kelamin customer. Nilai-nilai yang didukung: MALE,
FEMALE,
OTHER
employment
optional
string Nama pemegang akun sesuai dengan pemberi akun
employer_name
optional
string Nama pemberi pekerjaan
nature_of_business
optional
string Industri atau jenis bisnis
role_description
optional
string Jenis pekerjaan atau jabatan
business_detail
optional
object Objek JSON yang memuat detail bisnis. Akan kosong apabila type bukan BUSINESS
Parameter detail bisnis
business_name
required
string Nama bisnis
trading_name
optional
string Nama trading
business_type
required
string Tipe entitas legal bisnis
Nilai-nilai yang didukung: CORPORATION,
SOLE_PROPRIETOR,
PARTNERSHIP,
COOPERATIVE,
TRUST,
NON_PROFIT,
GOVERNMENT
nature_of_business
optional
string Deskripsi free text dari tipe bisnis yang dijalankan oleh bisnis. Contoh: Ecommerce, Travel
business_domicile
optional
string Negara dimana bisnis teregistrasi

Format ISO 3166-2 Country Code
date_of_registration
optional
string Tanggal registrasi bisnis

Format YYYY-MM-DD string
mobile_number
optional
string Nomor telepon customer dalam format E.164

Maximum length 15 digits (not including "+")
phone_number
optional
string Nomor kontak tambahan customer dalam format E.164. Bisa juga telepon rumah

Maximum length 15 digits (not including "+")
FormatE.164 international standard +(country code)(subscriber number)
email
optional
string Alamat email customer

Maximum length 15 digits (not including "+")
addresses
optional
array Array dari alamat objek JSON yang memuat informasi alamat customer.
Parameter alamat
Field Description
country
required
string Negara tempat tinggal customer

Format ISO 3166-2 Country Code
street_line1
optional
string Lini 1 dari alamat jalan, contoh, nama gedung dan nomor apartemen

Maximum length 255 characters
street_line2
optional
string Lini 1 dari alamat jalan, contoh, nama dan nomor jalan

Maximum length 255 characters
city
optional
string Kota, kecamatan, atau kelurahan tempat tinggal customer

Maximum length 255 characters
province_state
optional
string Provinsi, negarabagian, atau wilayah tempat tinggal customer

Maximum length 255 characters
postal_code
optional
string ZIP/Kodepos customer

Maximum length 255 characters
category
optional
string Tipe alamat. Nilai-nilai yang didukung: HOME,
WORK,
PROVINCIAL
is_primary
optional
boolean Default ke false. Mengindikasi bahwa informasi yang diberikan mengacu ke alamat utama customer
identity_accounts
required
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
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang terkahir dengan akun (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung oleh Xendit, kami menganjurkan anda untuk menggunakan channel_code untuk field ini

Maximum length 100 characters
description
optional
string Deskripsi free text dari akun

Maximum length 255 characters
country
optional
string Negara penerbit akun, apabila relevan

Format ISO 3166-2 Country Code
properties
optional
string Objek JSON dengan kontek spesifik akun sesuai yang dibutuhkan contoh,

For BANK_ACCOUNT types:
Parameter akun bank
account_number
required
string Pengidentifikasi unik akun sesuai dengan catatan bank
account_holder_name
required
string Nama pemegang akun sesuai dengan catatan bank. Harus sama persis dengan nama pemegang akun yang teregistrasi
swift_code
optional
string Kode swift untuk pembayaran internasional
account_type
optional
string Tipe akun free text, contoh, Savings, Transaction, Virtual Account
account_details
optional
string Informasi akun yang berpotensi disembunyikan, hanya untuk tujuan penampilan
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

For EWALLET types:
Parameter ewallet
account_number
required
string Pengidentifikasi akun unik sesuai dengan catatan ewallet
account_holder_name
optional
string Nama pemegang akun sesuai dengan catatan ewallet. Harus sama persis dengan nama pemegang akun yang teregistrasi
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe CREDIT_CARD:
Parameter kartu kredit
token_id
required
string Token id yang didapatkan saat tokenisasi

Untuk tipe OTC:
Parameter Over The Counter
payment_code
required
string Fixed payment code yang lengkap (termasuk prefix)
expires_at
optional
string Tanggal kadaluwarsa payment code

Format YYYY-MM-DD string

Untuk tipe QR_CODE:
Parameter kode QR
qr_string
required
string Representasi string dari kode QR unik

Untuk tipe PAY_LATER:
Parameter bayar nanti
account_id
required
string String alfanumerik yang mengidentifikasi akun ini. Biasanya adalah alamat email atau nomor telepon
account_holder_name
optional
string Nama pemegang akun sesuai dengan pemberi akun
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe SOCAL_MEDIA:
Parameter media sosial
account_id
required
string String alfanumerik yang mengidentifikasi akun ini. Biasanya adalah alamat email atau nomor telepon
account_handle
optional
string Nama akun sesuai dengan pemberi akun
kyc_documents
required
array Array dari objek JSON berisi dokumen KYC customer ini.
Parameter dokumen kyc
Field Description
country
required
string Negara penerbit dokumen

Format ISO 3166-2 Country Code
type
required
string Tipe ID generik
Nilai-nilai yang didukung: BIRTH_CERTIFICATE,
BANK_STATEMENT,
DRIVING_LICENSE,
IDENTITY_CARD,
PASSPORT,
VISA,
BUSINESS_REGISTRATION,
BUSINESS_LICENSE
sub_type
optional
string Tipe ID spesifik untuk tipe IDENTITY_CARD.
Nilai-nilai yang didukung: NATIONAL_ID,
CONSULAR_ID,
VOTER_ID,
POSTAL_ID,
RESIDENCE_PERMIT,
TAX_ID,
STUDENT_ID,
MILITARY_ID,
MEDICAL_ID
document_name
optional
string Deskripsi free text dari tipe dokumen (contoh, NIB, SIUP, AKTA)

Maximum length 255 characters
document_number
optional
string Alfanumerik unik dari nomor atau kode dokumen identitas

Maximum length 255 characters
expires_at
optional
string Tanggal kadaluwarsa, apabila relevan.

Format YYYY-MM-DD string
holder_name
optional
string Free text untuk menyimpan nama lengkap individu atau bisnis sesuai yang tertera di dokumen, apabila relevan

Maximum length 255 characters
document_images
required
string[] Array dari file id yang didapatkan dari mengunggah file ke files endpoint, merepresentasikan gambar depan/belakang dokumen, dalam png/jpg/jpeg/pdf format
description
optional
string Deskripsi customer dari merchant.

Maximum length 500 characters
date_of_registration
optional
string Tanggal dimana akun pembeli sudah dibuat di dalam website merchant

Format YYYY-MM-DD string
domicile_of_registration
optional
string Negara dimana akun pembeli ini dibuat di dalam website merchant

Format ISO 3166-2 Country Code
metadata
optional
object Objeck dari informasi tambahan yang diberikan pada saat pembuatan customer
created
required
string Timestamp pembuatan customer dalam format ISO
updated
required
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-KEY
optional
string Kode unik untuk mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh environment development & production.

Karakter Spesial dan alfanumerik
Panjang maksimum 100 karakter
Panjang minimum 1 karakter
API-VERSION
optional
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-id
optional
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_id
required
string Pengidentifikasi customer yang diberikan oleh merchant.
Request dengan reference_id duplikat akan mengembalikan error. Anda harus melakukan PATCH request pada resource customer object.

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
type
required
string Tipe customer.
Nilai-nilai yang didukung: INDIVIDUAL, BUSINESS
individual_detail
conditionally required
object Object JSON yang memuat informasi individual. Dibutuhkan apabila tipe adalah INDIVIDUAL
Parameter detail individu
given_names
required
string Nama depan atau nama utama customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
surname
optional
string Nama belakang atau nama keluarga customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
nationality
optional
string Kode negara kebangsaan customer

Format ISO 3166-2 Country Code
place_of_birth
optional
string Kota atau lokasi yang relevan dengan tempat tinggal customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
date_of_birth
optional
string Tanggal lahir customer

Format YYYY-MM-DD string
gender
optional
string Jenis kelamin customer. Nilai-nilai yang didukung: MALE,
FEMALE,
OTHER
employment
optional
string Nama pemegang akun sesuai dengan pemberi akun
employer_name
optional
string Nama pemberi pekerjaan

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
nature_of_business
optional
string Industri atau sifat bisnis

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
role_description
optional
string Jenis pekerjaan atau jabatan

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_detail
conditionally required
object Object JSON object yang memuat informasi bisnis. Dibutuhkan apabila tipe adalah BUSINESS
Parameter detail bisnis
business_name
required
string Nama bisnis. Dibutuhkan apabila tipe adalah BUSINESS

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
trading_name
optional
string Trading name.

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_type
required
string Tipe entitas legal bisnis
Nilai-nilai yang didukung: CORPORATION,
SOLE_PROPRIETOR,
PARTNERSHIP,
COOPERATIVE,
TRUST,
NON_PROFIT,
GOVERNMENT
nature_of_business
optional
string Deskripsi free text mengenai tipe bisnis yang dilakukan oleh entitas ini. Contoh: Ecommerce, Travel

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_domicile
optional
string Negara dimana bisnis teregistrasi

Format ISO 3166-2 Country Code
date_of_registration
optional
string Tanggal registrasi bisnis

Format YYYY-MM-DD string
mobile_number
optional
string Nomor HP customer dalam format E.164

Maximum length 50 characters
phone_number
optional
string Nomor kontak tambahan customer dalam format E.164. Bisa sebagai telepon rumah

Maximum length 50 characters
FormatE.164 international standard +(country code)(subscriber number)
hashed_phone_number
optional
string Hashed phone number

Maximum length 255 characters
email
optional
string Alamat email customer

Maximum length 50 characters
addresses
optional
array Array dari alamat objeck JSON yang memuat informasi alamat customer.
Parameter alamat
Field Description
country
required
string Negara tempat tinggal customer

Format ISO 3166-2 Country Code
street_line1
optional
string Lini satu alamat, contoh, nama gedung dan nomor apartemen

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
street_line2
optional
string Lini dua alamat, contoh, nama dan nomor jalan

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
city
optional
string Kota, kecamatan, atau kelurahan tempat tinggal customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
province_state
optional
string Provinsi, negarabagian, atau wilayah tempat tinggal customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
postal_code
optional
string ZIP/Kodepos customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
category
optional
string Tipe alamat. Nilai-nilai yang didukung: HOME,
WORK,
PROVINCIAL

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
is_primary
optional
boolean Default ke false. Mengindikasi bahwa informasi yang diberikan mengacu pada alamat utama customer
identity_accounts
optional
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
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang berhubungan dengan akun (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung Xendit, kami menganjurkan anda untuk menggunakan channel_code untuk field ini

Maximum length 100 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
description
optional
string Deskripsi free text untuk akun

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
country
optional
string Negara penerbit akun, apabila relevan

Format ISO 3166-2 Country Code
properties
optional
string Objek JSON dengan kontek spesifik akun sesuai dengan yang dibutuhkan, contoh ,

Untuk tipe BANK_ACCOUNT:
Parameter akun bank
account_number
required
string Pengidentifikasi akun unik sesuai dengan catatan bank

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_holder_name
required
string Nama pemegang akun sesuai dengan catatan bank. Harus sama persis dengan nama yang terdaftar

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
swift_code
optional
string Kode swift untuk pembayaran internasional

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_type
optional
string Tipe akun free text, contoh, Savings, Transaction, Virtual Account

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_details
optional
string Informasi akun yang berpotensi disembunyikan, hanya untuk tujuan penampilan

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe EWALLET:
Parameter ewallet
account_number
required
string Pengidentifikasi akun unik sesuai dengan catatan ewallet

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_holder_name
optional
string Nama pemegang akun sesuai dengan catatan ewallet. Harus sama persis dengan nama yang terdaftar

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe CREDIT_CARD:
Parameter kartu kredit
token_id
required
string Token id yang didapatkan saat tokenisasi

Untuk tipe OTC:
Parameter Over The Counter
payment_code
required
string Fixed payment code selengkapnya (termasuk prefix)
expires_at
optional
string Tanggal kadaluwarsa payment code

Format YYYY-MM-DD string

Untuk tipe QR_CODE:
Parameter kode QR
qr_string
required
string Representasi string dari kode unik QR

Untuk tipe PAY_LATER:
Parameter bayar nanti
account_id
required
string String alfanumerik yang mengidentifikasi akun ini. Biasanya adalah alamat email atau nomor telepon
account_holder_name
optional
string Nama pemegang akun sesuai dengan catatan bank

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe SOCAL_MEDIA:
Parameter media sosial
account_id
required
string String alfanumerik yang mengidentifikasi akun ini. Biasanya adalah alamat email atau nomor telepon
account_handle
optional
string Nama pemegang akun sesuai dengan pemberi akun

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
kyc_documents
optional
array Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini.
Parameter dokumen kyc
Field Description
country
required
string Negara penerbit dokumen ini

Format ISO 3166-2 Country Code
type
required
string Tipe ID generik
Nilai-nilai yang didukung: BIRTH_CERTIFICATE,
BANK_STATEMENT,
DRIVING_LICENSE,
IDENTITY_CARD,
PASSPORT,
VISA,
BUSINESS_REGISTRATION,
BUSINESS_LICENSE
sub_type
optional
string Tipe ID spesifik untuk tipe IDENTITY_CARD.
Nilai-nilai yang didukung: NATIONAL_ID,
CONSULAR_ID,
VOTER_ID,
POSTAL_ID,
RESIDENCE_PERMIT,
TAX_ID,
STUDENT_ID,
MILITARY_ID,
MEDICAL_ID
document_name
optional
string Deskripsi free text dari tipe dokumen (contoh, NIB, SIUP, AKTA)

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
document_number
optional
string Nomor atau kode alfanumerik unik identitas

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
expires_at
optional
string Tanggal kadaluwarsa, apabila relevan.

Format YYYY-MM-DD string
holder_name
optional
string Free text untuk menangkap nama lengkap invidual atau bisnis sesuai yang ada di dokumen, apabila relevan

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
document_images
optional
string[] Array dari file id yang didapatkan dari upload ke files endpoint, mengrepresentasikan gambar depan/belakang dokumen, dalam format png/jpg/jpeg/pdf
description
optional
string Deskripsi customer yang diberikan merchant.

Maximum length 500 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
date_of_registration
optional
string Tanggal dimana akun pembeli sudah dibuat di dalam website merchant

Format YYYY-MM-DD string
domicile_of_registration
optional
string Negara dimana akun pembeli ini dibuat di dalam website merchant

Format ISO 3166-2 Country Code
metadata
optional
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_ERROR
409
Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik.
IDEMPOTENCY_ERROR
409
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-VERSION
optional
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-id
optional
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_FOUND
404
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_id
required
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-VERSION
optional
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-id
optional
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-VERSION
optional
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-id
optional
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_detail
optional
object Objek JSON object yang memuat detil individu. Akan gagal validasi API apabila type bukan INDIVIDUAL
Parameter detail individu
given_names
required
string Nama awal atau nama utama dari suatu customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
surname
optional
string Nama akhir atau nama keluarga dari suatu customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
nationality
optional
string Kode negara dari kewarganeraan customer

Format ISO 3166-2 Country Code
place_of_birth
optional
string Kota atau lokasi lain yang relevan dengan tempat kelahiran customer

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
date_of_birth
optional
string Tanggal lahir customer

Format YYYY-MM-DD string
gender
optional
string Jenis kelamin customer. Supported values: MALE,
FEMALE,
OTHER
employment
optional
string Nama pemegang akun sesuai dengan pemberi akun
employer_name
optional
string Nama pemberi kerja

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
nature_of_business
optional
string Industri atau jenis bisnis

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
role_description
optional
string Okupasi atau jabatan

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_detail
optional
object Objek JSON object yang memuat detil bisnis. Akan gagal validasi API apabila type bukan BUSINESS
Parameter detail bisnis
business_name
required
string Nama bisnis

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_type
required
string Tipe entitas legal dari bisnis
Nilai-nilai yang didukung: CORPORATION,
SOLE_PROPRIETOR,
PARTNERSHIP,
COOPERATIVE,
TRUST,
NON_PROFIT,
GOVERNMENT
nature_of_business
optional
string Deskripsi free text dari tipe bisnis yang dikejar oleh bisnis ini. Contoh: Ecommerce, Travel

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
business_domicile
optional
string Negara yang teregistrasi untuk bisnis ini

Format ISO 3166-2 Country Code
date_of_registration
optional
string Tanggal registrasi bisnis

Format YYYY-MM-DD string
mobile_number
optional
string Nomor seluler dari customer dalam format E.164

Maximum length 50 characters
phone_number
optional
string Nomor kontak customer tambahan dalam format E.164. Bisa sebagai telepon rumah

Maximum length 50 characters
FormatE.164 international standard +(country code)(subscriber number)
email
optional
string Alamat e-mail customer

Maximum length 50 characters
addresses
optional
array Array dari alamat objek JSON yang memuat berbagai informasi alamat customer.
Parameter alamat
Field Description
country
required
string Negara tempat tinggal customer

Format ISO 3166-2 Country Code
street_line1
optional
string Line 1 dari alamat, contoh, nama gedung dan nomor apartment

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
street_line2
optional
string Line 2 dari alamat, contoh, nama dan nomor jalan

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
city
optional
string Kota, kecamatan, atau kelurahan tempat tinggal customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
province_state
optional
string Provinsi, negarabagian, atau wilayah tempat tinggal customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
postal_code
optional
string ZIP/Kodepos customer

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
category
optional
string Tipe alamat. Nilai-nilai yang didukung: HOME,
WORK,
PROVINCIAL

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
is_primary
optional
boolean Nilai default adalah false. Menandakan bahwa informasi yang diberikan mengacu pada alamat utama customer
identity_accounts
optional
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
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang terasosiasi dengan akun tersebut (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung oleh Xendit, kami menganjurkan anda untuk menggunakan channel_code for this field

Maximum length 100 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
description
optional
string Deskripsi free text untuk akun

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
country
optional
string Negara penerbit akun, apabila relevan

Format ISO 3166-2 Country Code
properties
optional
string Objek JSON dengan konten akun spesifik sesuai yang dibutuhkan, contoh,

For BANK_ACCOUNT types:
Parameter akun bank
account_number
required
string Pengenal akun unik sesuai catatan bank

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_holder_name
required
string Nama pemegang akun sesuai catatan bank. Harus sama dengan nama teregistrasi sama persis

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
swift_code
optional
string Kode swift untuk pembayaran internasional

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_type
optional
string Tipe akun free text, contoh, Savings, Transaction, Virtual Account

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_details
optional
string Informasi akun yang berpotensi disembunyikan, hanya untuk tujuan penampilan

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

For EWALLET types:
Parameter ewallet
account_number
required
string Pengenal unik akun sesuai catatan ewallet

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
account_holder_name
optional
string Nama pemegang akun sesuai catatan ewallet records. Harus sama dengan nama teregistrasi sama persis

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe-tipe CREDIT_CARD:
Parameter kartu kredit
token_id
required
string Token id yang dikembalikan pada saat tokenisasi

Untuk tipe-tipe OTC:
Parameter Over The Counter
payment_code
required
string Fixed payment code lengkap (termasuk prefix)
expires_at
optional
string Tanggal kadaluwarsa kode pembayaran

Format YYYY-MM-DD string

Untuk tipe-tipe QR_CODE:
Parameter kode QR
qr_string
required
string Representasi string dari kode unik QR

Untuk tipe-tipe PAY_LATER:
Parameter bayar nanti
account_id
required
string String alfanumerik yang menandakan akun ini. Biasanya adalah alamat email atau nomor telepon
account_holder_name
optional
string Nama pemegang akun sesuai dengan pemberi akun

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
currency
optional
string Kurs utama akun, apabila relevan.

Format ISO 4217 Currency Code

Untuk tipe-tipe SOCAL_MEDIA:
Parameter media sosial
account_id
required
string String alfanumerik yang menandakan akun tersebut. Biasanya adalah alamat email atau nomor telepon
account_handle
optional
string Nama akun sesuai pemberi akun

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
kyc_documents
optional
array Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini.
Parameter dokumen kyc
Field Description
country
required
string Negara penerbit dokumen

Format ISO 3166-2 Country Code
type
required
string Tipe ID generik
Nilai-nilai yang didukung: BIRTH_CERTIFICATE,
BANK_STATEMENT,
DRIVING_LICENSE,
IDENTITY_CARD,
PASSPORT,
VISA,
BUSINESS_REGISTRATION,
BUSINESS_LICENSE
sub_type
optional
string ID spesifik untuk tipe IDENTITY_CARD.
Nilai-nilai yang didukung: NATIONAL_ID,
CONSULAR_ID,
VOTER_ID,
POSTAL_ID,
RESIDENCE_PERMIT,
TAX_ID,
STUDENT_ID,
MILITARY_ID,
MEDICAL_ID
document_name
optional
string Deskripsi free text tipe dokumen (contoh, NIB, SIUP, AKTA)

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
document_number
optional
string Alfanumerik unik dari nomor atau kode dokumen identitas

Maximum length 255 characters
expires_at
optional
string Tanggal kadaluwarsa, apaibla relevan.

Format YYYY-MM-DD string
holder_name
optional
string Free text untuk menangkap nama lengkap individu atau bisnis yang tertera pada dokumen, apabila relevan

Maximum length 255 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
document_images
optional
string[] Array dari file id yang dikembalikan dari upload ke files endpoint, merepresentasikan depan/belakang gambar dokumen, dalam png/jpg/jpeg/pdf format
description
optional
string Deskripsi yang diberikan merchant untuk customer.

Maximum length 500 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
date_of_registration
optional
string Tanggal dimana akun pembeli sudah dibuat di dalam website merchant

Format YYYY-MM-DD string
domicile_of_registration
optional
string Negara dimana akun pembeli ini dibuat di dalam website merchant

Format ISO 3166-2 Country Code
metadata
optional
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_FOUND
404
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
purpose
required
string Tujuan dari file yang terupload
Nilai-nilai yang didukung: KYC_DOCUMENT, CHARGEBACK_EVIDENCE
file
required
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
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
purpose
required
string Tujuan dari file yang terupload
created
required
string UTC Timestamp pembuatan file dalam format ISO
updated
required
string UTC Timestamp perubahan file terakhir dalam format ISO
type
required
string Tipe file
size
required
integer Ukuran file dalam satuan bytes
url
required
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_TYPE_ERROR
415
Format file tidak didukung. Lihat kembali tipe file sebelum mencoba lagi.
REQUEST_FORBIDDEN_ERROR
403
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
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
purpose
required
string Tujuan dari file yang terupload
created
required
string UTC Timestamp pembuatan file dalam format ISO
updated
required
string UTC Timestamp perubahan file terakhir dalam format ISO
type
required
string Tipe file
size
required
integer Ukuran file dalam satuan bytes
url
required
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
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
is_deleted
required
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:
Tipe Deskripsi
BALANCE_HISTORY Laporan yang menunjukkan daftar riwayat dari saldo Anda. Laporan ini sama dengan laporan saldo di dashboard. Lihat Laporan Riwayat Saldo untuk informasi lebih lanjut.
TRANSACTIONS Laporan yang menunjukkan daftar transaksi. Laporan ini sama dengan laporan transaksi di dashboard. Lihat Laporan Transaksi untuk informasi lebih lanjut.
UPCOMING_TRANSACTIONS Laporan yang menunjukkan daftar transaksi mendatang yang akan masuk/keluar dari saldo Anda. Laporan ini sama dengan Laporan Saldo Tertunda/Mendatang di dashboard.
filter
required
object Filter yang diterapkan pada laporan.
Parameter Filter
Kunci Nilai
from
required
string (ISO 8601) Waktu awal transaksi yang ada di laporan pada UTC+0.
to
required
string (ISO 8601) Waktu akhir transaksi yang ada di laporan pada UTC+0.
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.
Tipe Deskripsi
PENDING Permintaan pembuatan laporan diterima dan sedang diproses.
COMPLETED Laporan berhasil dibuat dan dapat diunduh
FAILED Laporan gagal untuk dibuat. Anda dapat mencoba ulang pembuatan laporan
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-id
optional
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:
Tipe Deskripsi
BALANCE_HISTORY Laporan yang menunjukkan daftar riwayat dari saldo Anda. Laporan ini sama dengan laporan saldo di dashboard. Lihat Laporan Riwayat Saldo untuk informasi lebih lanjut.
TRANSACTIONS Laporan yang menunjukkan daftar transaksi. Laporan ini sama dengan laporan transaksi di dashboard. Lihat Laporan Transaksi untuk informasi lebih lanjut.
UPCOMING_TRANSACTIONS Laporan yang menunjukkan daftar transaksi mendatang yang akan masuk/keluar dari saldo Anda. Laporan ini sama dengan Laporan Saldo Tertunda/Mendatang di dashboard.
TRANSACTION_ANALYSIS Laporan transaksi yang mencakup data pembayaran dan status payment lifecycle yang lebih lengkap (Refunded/Partially Refunded/Refund Pending/Failed)
Sebelumnya dinamakan sebagai TRANSACTION_ANALYSIS, nama TRANSACTION_ANALYSIS ini akan tetap bisa digunakan dan memberikan hasil laporan yang sama dengan laporan DETAIL_TRANSACTIONS
filter
required
object Filter yang diterapkan pada laporan.
Parameter Filter
Kunci Nilai
from
string (ISO 8601)
required
Waktu awal dari transaksi yang akan difilter.

Jika tidak ditetapkan, from adalah 24 jam sebelum waktu sekarang
to
string (ISO 8601)
required
Waktu akhir dari transaksi yang akan difilter.

Jika tidak ditetapkan, to adalah waktu saat ini. Ini berarti jika kedua from and to tidak ditetapkam, laporan yang dihasilkan adalah laporan 24 jam ke belakang.

Kombinasi dari from dan to harus kurang dari 31 hari.
format
optional

default: CSV
string Format dari laporan.
Format yang tersedia adalah CSV.
currency
optional

default: IDR
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:
  • VERSION_0: Versi original
  • VERSION_1: Meliputi Status Settlement, Actual Settlement Time, Estimated Settlement Time
  • VERSION_2: Meliputi kolom Early Settlement Fee, Payment ID diganti dengan Product ID
  • Parameter Respon

    Mengembalikan Objek Laporan dengan kode status 201

    Kode Error

    Lihat daftar kode error umum lainnya disini.

    Kode Error Deskripsi
    FEATURE_NOT_AVAILABLE
    400
    Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini.
    INVALID_DATE_RANGE
    400
    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-id
    optional
    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_AVAILABLE
    400
    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-token
    wajib
    string Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut

    webhook-id
    wajib
    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:
    Tipe Deskripsi
    reports.completed Laporan berhasil. Anda dapata mengunduh laporan dari parameter url.
    reports.failed Laporan gagal untuk dihasilkan. Anda dapat mencoba ulang untuk menghasilkan laporan.
    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:
    VA_PAYMENT Pembayaran menggunakan Virtual Account
    RO_PAYMENT Pembayaran menggunakan Retail Outlet
    EWALLET_PAYMENT Pembayaran menggunakan Ewallet
    CARDLESS_CREDIT_PAYMENT Pembayaran menggunakan Cardless Credit
    DIRECT_DEBIT_PAYMENT Pembayaran menggunakan Direct Debit
    CREDIT_CARD_PAYMENT Pembayaran menggunakan Kartu Kredit
    QR_CODE_PAYMENT Pembayaran menggunakan QR Code
    DISBURSEMENT Disbursement
    BATCH_DISBURSEMENT Batch Disbursement
    REMITTANCE_PAYOUT Remittance Payout
    DEPOSIT Topup saldo ke akun Anda
    WITHDRAWAL Penarikan dari saldo Anda
    Line Type Tipe baris yang tersedia:
    TRANSACTION Baris transaksi, penambahan atau pengurangan salso karena transaksi
    FEE Baris biaya, pengurangan saldo karena biaya
    VAT Baris PPN, pengurangan saldo karena pajak
    TRANSACTION_REVERSAL, FEE_REVERSAL, VAT_REVERSAL Pembatalan atau reversal dari TRANSACTION, FEE, or VAT
    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
    DEBIT Pengurangan saldo
    CREDIT Penambahan saldo
    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
    PENDING Transaksi masih diproses. Ini merupakan status ketika transaksi uang keluar ketika dana masih ditahan
    SUCCESS Transaksi telah berhasil dikirim untuk uang keluar atau telah diterima untuk uang masuk
    FAILED Transaksi yang gagal untuk dikirim atau diterima
    VOIDED Transaksi uang masuk yang dibatalkan oleh Anda
    REVERSED Transaksi yang kembalikan oleh Xendit
    Type Tipe dari transaksi
    DISBURSEMENT Transaki disbursement
    PAYMENT Transaksi pembayaran untuk semua jenis uang masuk
    REMITTANCE_PAYOUT Transaksi remittance
    TRANSFER Transfer antar akun Xendit. Ini dapat berupa transfer keluar atau masuk
    REFUND Dana yang dikembalikan kepada Anda
    TOP UP Penambahan dana yang ditambahkan ke saldo Anda
    WITHDRAWAL Penarikkan dana dari saldo ke akun rekening Anda
    Channel Kanal untuk mengidentifikasi sumber dari transaksi.
    Kanal yang tersedia untuk tiap tipe adalah:
    Tipe Kanal
    DISBURSEMENT and REMITTANCE_PAYOUT BANK and CASH
    PAYMENT CARDS, CARDLESS_CREDIT, DIRECT_DEBIT, EWALLET, PAYLATER, QR_CODE, RETAIL_OUTLET, VIRTUAL_ACCOUNT
    TRANSFER XENPLATFORM
    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::
    Type Description
    DISBURSEMENT Disbursement dari transaksi uang keluar.
    PAYMENT Pembayaran yang meliputi semua jenis uang masuk.
    REMITTANCE_PAYOUT Transaksi remittance untuk payout.
    TRANSFER Transaksi transfer antar akun Xendit. Transfer bisa keluar atau masuk.
    REFUND Sebuah transaksi pengembalian dana telah dibuat untuk melakukan pengembalian dana dari transaksi masuk.
    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:
    Status Description
    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_category
    required
    string Kategori kanal dari transaksi untuk mengidentifikasi sumber dari transaksi
    kanal yang tersedia untuk tiap tipe adalah:
    Type Channels
    DISBURSEMENT and REMITTANCE_PAYOUT BANK and CASH
    PAYMENT CARDS, CARDLESS_CREDIT, DIRECT_DEBIT, EWALLET, PAYLATER, QR_CODE, RETAIL_OUTLET, VIRTUAL_ACCOUNT
    TRANSFER XENPLATFORM
    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
    Body Parameter Type Description
    xendit_fee number Nominal dari biaya.
    value_added_tax number Nominal PPN dari transaski.
    xendit_withholding_tax number Jumlah dari Xendit Pajak Potong untuk transaksi ini, jika berlaku.
    Buka dokumentasi pajak untuk informasi lebih lanjut.
    third_party_withholding_tax number Nominal Pajak Potong pihak Ketiga untuk transaksi ini, jika berlaku.
    Contoh pihak ketiga : Bank
    status string Status biaya
    Status Description
    PENDING Biaya sedang dalam proses untuk ditagihkan.
    COMPLETED Biaya telah berhasil ditagihkan.
    CANCELED Transaksi gagal dan biaya dibatalkan.
    REVERSED Transaksi telah di reverse dan biaya dikembalikan.
    settlement_status
    optional
    string Status settlement akan muncul untuk transaksi uang masuk.
    Untuk transaksi uang keluar, nilainya adalah NULL
    Settlement Status Description
    PENDING Nominal transaksi belum ter-settle ke saldo merchant
    SETTLED Nominal transaksi telah ter-settle ke saldo merchant
    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-id
    optional
    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_FOUND
    404
    Transaksi dengan id ini tidak ditemukan.
    FEATURE_NOT_AVAILABLE
    400
    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-id
    optional
    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
    optional

    default: IDR
    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
    optional

    default: 10
    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_AVAILABLE
    400
    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    partnerReferenceNo
    optional
    string ID transaksi di sistem pengguna layanan
    additionalData
    conditionally required
    object Informasi spesifik dari masing-masing kanal pembayaran, yang diperlukan agar transaksi dapat diinisiasi
    Kondisional untuk BRI
    Key Value
    userId
    required
    string ID untuk end customer yang disediakan oleh Xendit. Dibutuhkan untuk beberapa kanal pembayaran, seperti e-wallet dan direct debit dengan mode multiple-use.
    email
    required
    string Alamat email dari customer yang terdaftar pada mitra kanal pembayaran. Wajib untuk BRI Direct Debit.
    merchantId
    optional
    string ID yang berasal oleh Xendit untuk bisnis/akun pemilik transaksi. Field ini akan diabaikan oleh Xendit
    phoneNo
    optional
    string Nomor telepon end customer yang terdaftar pada mitra kanal pembayaran. Menggunakan format E.164. Wajib untuk: OVO (ONE_TIME_USE) BRI
    additionalInfo
    required
    object Informasi tambahan yang dibutuhkan untuk melengkapi transaksi
    Detail objek parameter
    Key Value
    payMethod
    required
    string Tipe metode pembayaran. Pilihan opsi: EWALLET, DIRECT_DEBIT
    payOption
    required
    string ID untuk mitra kanal pembayaran. Pilihan opsi untuk payOption EWALLET: OVO, DANA, LINKAJA, JENIUSPAY, ASTRAPAY, SHOPEEPAY. Pilihan opsi untuk payOption DIRECT_DEBIT: BRI
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran berikutnya tanpa harus melalui proses penautan kembali. Pilihan opsi: ONE_TIME_USE, MULTIPLE_USE. Default: ONE_TIME_USE
    description
    optional
    string Kolom teks untuk tambahan informasi terkait payment method.
    metadata
    optional
    object Data bebas dengan format JSON yang dapat digunakan sebagai informasi pelengkap.
    channelProperties
    optional
    object Informasi specifik dari kanal pembayaran ynag dibutuhkan agar transaksi dapat diinisiasi.
    Detail objek parameter
    Key Value
    successReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi berhasil.
    failureReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi gagal.
    cancelReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi dibatalkan.
    cashtag
    optional
    string Cashtag yang terdaftar untuk JENIUSPAY. Wajib untuk JENIUSPAY
    cardLastFour
    optional
    string Empat digit terakhir dari nomor kartu debit. Wajib untuk BRI
    cardExpiry
    optional
    string Bulan dan tahun kedaluwarsa dari kartu debit (dengan format MM/YY). Wajib untuk BRI

    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    referenceNo
    required
    string ID unik dari payment method. Memiliki prefiks pm--
    partnerReferenceNo
    optional
    string ID yang ditentukan oleh merchant untuk transaksi terkait.
    nextAction
    optional
    string URL ke laman otentikasi.
    params
    optional
    object
    Detail objek parameter
    Key Value
    action
    optional
    string Action yang harus diambil
    redirectToDeeplink
    optional
    string Redirect URL yang disediakan menggunakan deep linking untuk mengarahkan ke platform partner. Akan tetap ditampilkan jika nextAction disediakan.
    userInfo
    optional
    object
    Detail objek parameter
    Key Value
    publicUserId
    optional
    string ID publik yang disamarkan untuk akun e-wallet. Biasanya berupa nomor telepon yang disamarkan yang terdaftar pada akun e-wallet.
    additionalInfo
    required
    object
    Detail objek payment method
    Key Value
    id
    required
    string ID unik dari payment method. Memiliki prefix pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    business_id
    required
    string ID yang disediakan oleh Xendit untuk akun/bisnis pemilik transaksi
    customer_id
    nullable
    string ID dari objek customer yang akan ditautkan dengan account token
    reference_id
    nullable
    string ID yang ditentukan oleh merchant. Akan ditentukan secara otomatis oleh Xendit jika tidak disediakan oleh merchant.
    Panjang maksimum: 255 karakter
    reusability
    required
    string Menyatakan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses linking kembali.

    Pilihan opsi:
    • ONE_TIME_USE
    • MULTIPLE_USE
    country
    required
    string Format kode negara ISO 3166-2 yang terdiri dari 2 huruf, yang menjelaskan negara dimana transaksi dilakukan. Dapat juga dijadikan indikator untuk kanal pembayaran yang tersedia di lebih dari satu negara (contoh SHOPEEPAY).
    status
    required
    string Status dari payment method.

    Jenis-jenis status:
    • REQUIRES_ACTION - Request lolos dari validasi, namun membutuhkan langkah tambahan (actions) untuk mengaktivasi payment method agar dapat digunakan. Beberapa contoh actions adalah, merchant melakukan trigger validasi OTP atau mengarahkan customer ke laman otentikasi (redirection).
    • ACTIVE - Payment method sudah bisa digunakan untuk membuat payment request (untuk Cards, E-wallets, Direct Debit) atau sudah bisa menerima pembayaran (untuk Virtual Account, Over-the-Counter, QR Code)
    • INACTIVE - Status untuk menonaktifkan payment method agar tidak dapat menerima transaksi untuk sementara. Status ini dapat diatur secara mandiri oleh merchant dan bersifat reversibel.
    • EXPIRED - Otorisasi untuk payment method telah kedaluwarsa, dibatalkan, atau telah diputuskan koneksinya. Status ini bersifat non-reversibel.
    • PENDING -Request lolos dari validasi, dan membutuhkan aktivasi secara asinkron. Silakan dengarkan callback dari kami untuk mendapatkan status terupdate.
    • FAILED - Untuk metode pembayaran Cards, status ini berarti proses tokenisasi tidak berhasil. Untuk metode pembayaran Direct Debit, status ini berarti akun telah terhubung dengan end customer.
    actions
    required
    object array Jika status=REQUIRES_ACTION, objek ini akan berisi detail opsi langkah-langkah tambahan yang harus dilakukan untuk mengaktivasi payment method. Hanya satu dari beberapa opsi langkah yang perlu dilakukan. Jika tidak ada langkah tambahan yang perlu dilakukan, parameter ini akan menjadi empty array. [].

    Masing-masing objek akan memiliki properties sebagai berikut:
    Key Value
    method
    required
    string Metode HTTP untuk memanggil url.

    Pilihan opsi:
    • GET
    • POST
    url_type
    required
    string Tipe url untuk masing-masing jenis action.

    Opsi tipe url:
    • API - Url yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    • WEB - Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web. Dapat juga digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • MOBILE - URL pengalihan yang disediakan dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • DEEPLINK - URL pengalihan yang menggunakan pengalihan ke platform mitra pembayaran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    action
    required
    string Menjabarkan fungsi dari actions terkait

    Pilihan opsi:
    • AUTH - Picu action ini untuk mengotorisasi linking atau pembayaran.
    • RESEND_AUTH - Picu action ini untuk mengirim ulang kode otorisasi ke end user.
    url
    required
    string Url yang disediakan untuk melakukan action
    type
    required
    string Jenis-jenis payment method. Silakan mengacu ke objek terkait untuk informasi lebih lanjut

    Pilihan opsi:
    • EWALLET
    • DIRECT_DEBIT
    • CARD
    • VIRTUAL_ACCOUNT
    • OVER_THE_COUNTER
    • QR_CODE
    ewallet
    nullable
    object Untuk type='EWALLET', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran ewallet tidak digunakan.
    Silakan mengacu ke Ewallet Object untuk detail lebih lanjut mengenai parameter.
    direct_debit
    nullable
    object Untuk type='DIRECT_DEBIT', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran direct debit tidak digunakan.
    Silakan mengacu ke Direct debit Object untuk detail lebih lanjut mengenai parameter.
    description
    nullable
    string Kolom teks untuk tambahan informasi terkait payment method.
    Panjang maksimum: 255 karakter
    failure_code
    nullable
    string Jika status dari transaksi adalah FAILED, parameter ini akan menjelaskan alasan dari kegagalan.
    Parameter ini akan menjadi null jika transaksi tidak gagal.
    Lihat jenis-jenis kode error di sini.
    created
    required
    string ISO 8601 Timestamp untuk pembuatan Payment Method Object. Timezone UTC+0
    updated
    required
    string ISO 8601 Timestamp untuk update terbaru pada Payment Method Object. Timezone UTC+0
    metadata
    nullable
    object Data bebas dengan format JSON yang dapat digunakan sebagai data pelengkap saat pembuatan 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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    partnerReferenceNo
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    referenceNo
    optional
    string ID unik dari payment method. Memiliki prefiks pm--
    partnerReferenceNo
    optional
    string ID yang ditentukan oleh merchant untuk transaksi terkait.
    accountCurrency
    required
    string Harus diset ke 'IDR'.
    accountName
    optional
    string Nama akun yang terdaftar.
    additionalInfo
    required
    object
    Detail objek Payment Method
    Key Value
    id
    required
    string ID unik dari payment method. Memiliki prefix pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    business_id
    required
    string ID yang disediakan oleh Xendit untuk akun/bisnis pemilik transaksi
    customer_id
    nullable
    string ID dari objek customer yang akan ditautkan dengan account token
    reference_id
    nullable
    string ID yang ditentukan oleh merchant. Akan ditentukan secara otomatis oleh Xendit jika tidak disediakan oleh merchant.
    Maximum length: 255 karakter
    reusability
    required
    string Menyatakan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses linking kembali.

    Pilihan opsi:
    • ONE_TIME_USE
    • MULTIPLE_USE
    country
    required
    string Format kode negara ISO 3166-2 yang terdiri dari 2 huruf, yang menjelaskan negara dimana transaksi dilakukan. Dapat juga dijadikan indikator untuk kanal pembayaran yang tersedia di lebih dari satu negara (contoh SHOPEEPAY).
    status
    required
    string Status dari payment method.

    Jenis-jenis status:
    • REQUIRES_ACTION - Request lolos dari validasi, namun membutuhkan langkah tambahan (actions) untuk mengaktivasi payment method agar dapat digunakan. Beberapa contoh actions adalah, merchant melakukan trigger validasi OTP atau mengarahkan customer ke laman otentikasi (redirection).
    • ACTIVE - Payment method sudah bisa digunakan untuk membuat payment request (untuk Cards, E-wallets, Direct Debit) atau sudah bisa menerima pembayaran (untuk Virtual Account, Over-the-Counter, QR Code)
    • INACTIVE - Status untuk menonaktifkan payment method agar tidak dapat menerima transaksi untuk sementara. Status ini dapat diatur secara mandiri oleh merchant dan bersifat reversibel.
    • EXPIRED - Otorisasi untuk payment method telah kedaluwarsa, dibatalkan, atau telah diputuskan koneksinya. Status ini bersifat non-reversibel.
    • PENDING - Request lolos dari validasi, dan membutuhkan aktivasi secara asinkron. Silakan dengarkan callback dari kami untuk mendapatkan status terupdate.
    • FAILED - Untuk metode pembayaran Cards, status ini berarti proses tokenisasi tidak berhasil. Untuk metode pembayaran Direct Debit, status ini berarti akun telah terhubung dengan end customer.
    actions
    required
    object array Jika status=REQUIRES_ACTION, objek ini akan berisi detail opsi langkah-langkah tambahan yang harus dilakukan untuk mengaktivasi payment method. Hanya satu dari beberapa opsi langkah yang perlu dilakukan. Jika tidak ada langkah tambahan yang perlu dilakukan, parameter ini akan menjadi empty array. [].

    Masing-masing objek akan memiliki properties sebagai berikut:
    Key Value
    method
    required
    string Metode HTTP untuk memanggil url.

    Pilihan opsi:
    • GET
    • POST
    url_type
    required
    string Tipe url untuk masing-masing jenis action.

    Opsi tipe url:
    • API - Url yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    • WEB - Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web. Dapat juga digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • MOBILE - URL pengalihan yang disediakan dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • DEEPLINK - URL pengalihan yang menggunakan pengalihan ke platform mitra pembayaran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    action
    required
    string Menjabarkan fungsi dari actions terkait

    Pilihan opsi:
    • AUTH - TPicu action ini untuk mengotorisasi linking atau pembayaran.
    • RESEND_AUTH - TPicu action ini untuk mengirim ulang kode otorisasi ke end user.
    url
    required
    string Url yang disediakan untuk melakukan action
    type
    required
    string Jenis-jenis payment method. Silakan mengacu ke objek terkait untuk informasi lebih lanjut

    Pilihan opsi:
    • EWALLET
    • DIRECT_DEBIT
    • CARD
    • VIRTUAL_ACCOUNT
    • OVER_THE_COUNTER
    • QR_CODE
    ewallet
    nullable
    object Untuk type='EWALLET', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran ewallet tidak digunakan.
    Silakan mengacu ke Ewallet Object untuk detail lebih lanjut mengenai parameter.
    direct_debit
    nullable
    object Untuk type='DIRECT_DEBIT', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran direct debit tidak digunakan.
    Silakan mengacu ke Direct debit Object untuk detail lebih lanjut mengenai parameter.
    description
    nullable
    string Kolom teks untuk tambahan informasi terkait payment method.
    Panjang maksimum: 255 karakter
    failure_code
    nullable
    string Jika status dari transaksi adalah FAILED, parameter ini akan menjelaskan alasan dari kegagalan.
    Parameter ini akan menjadi null jika transaksi tidak gagal.
    Lihat jenis-jenis kode error di sini.
    created
    required
    string ISO 8601 Timestamp untuk pembuatan Payment Method Object. Timezone UTC+0
    updated
    required
    string ISO 8601 Timestamp untuk update terbaru pada Payment Method Object. Timezone UTC+0
    metadata
    nullable
    object Data bebas dengan format JSON yang dapat digunakan sebagai data pelengkap saat pembuatan 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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    partnerReferenceNo
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    referenceNo
    optional
    string ID unik dari payment method. Memiliki awalan pm-
    partnerReferenceNo
    optional
    string ID untuk transaksi terkait. Disediakan oleh merchant
    accountCurrency
    required
    string Harus diset ke 'IDR'.
    accountName
    optional
    string Nama akun yang terdaftar
    additionalInfo
    required
    object
    Detail dari objek payment method
    Key Value
    id
    required
    string ID unik dari payment method. Memiliki awalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    business_id
    required
    string ID yang berasal oleh Xendit untuk bisnis/akun pemilik transaksi
    customer_id
    nullable
    string ID dari objek customer yang akan dihubungkan dengan account token
    reference_id
    nullable
    string ID yang ditentukan oleh merchant. Akan dibuat secara otomatis oleh Xendit bila tidak ditentukan oleh merchant.
    Panjang maksimum ID: 255 karakter
    reusability
    required
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran berikutnya tanpa harus melalui proses penautan kembali.

    Pilihan opsi:
    • ONE_TIME_USE
    • MULTIPLE_USE
    country
    required
    string Country code dalam 2 huruf dengan format ISO 3166-2 yang menjelaskan negara dimana transaksi dilakukan. Dapat juga dijadikan indikator untuk kanal pembayaran yang tersedia di beberapa negara (contoh: SHOPEEPAY).
    status
    required
    string Status dari payment method.

    Jenis-jenis status:
    • REQUIRES_ACTION - Request lolos dari validasi, namun membutuhkan langkah tambahan (actions) untuk mengaktivasi payment method agar dapat digunakan. Beberapa contoh actions adalah, merchant melakukan trigger validasi OTP atau mengarahkan customer ke laman otentikasi (redirection).
    • ACTIVE - Payment method sudah bisa digunakan untuk membuat payment request (untuk Cards, E-wallets, Direct Debit) atau sudah bisa menerima pembayaran (untuk Virtual Account, Over-the-Counter, QR Code)
    • INACTIVE - Status untuk menonaktifkan payment method agar tidak dapat menerima transaksi untuk sementara. Status ini dapat diatur secara mandiri oleh merchant dan bersifat reversibel.
    • EXPIRED - Otorisasi untuk payment method telah kedaluwarsa, dibatalkan, atau telah diputuskan koneksinya. Status ini bersifat non-reversibel.
    • PENDING - Request lolos dari validasi, dan membutuhkan aktivasi secara asinkron. Silakan dengarkan callback dari kami untuk mendapatkan status terupdate.
    • FAILED - Untuk metode pembayaran Cards, status ini berarti proses tokenisasi tidak berhasil. Untuk metode pembayaran Direct Debit, status ini berarti akun telah terhubung dengan end customer.
    actions
    required
    object array Jika status=REQUIRES_ACTION, objek ini akan berisi detail opsi langkah-langkah tambahan yang harus dilakukan untuk mengaktivasi payment method. Hanya satu dari beberapa opsi langkah yang perlu dilakukan. Jika tidak ada langkah tambahan yang perlu dilakukan, parameter ini akan menjadi empty array. [].

    Masing-masing objek akan memiliki properties sebagai berikut:
    Key Value
    method
    required
    string Metode HTTP untuk memanggil url.

    Pilihan opsi:
    • GET
    • POST
    url_type
    required
    string Tipe url untuk masing-masing jenis action.

    Opsi tipe url:
    • API - Url yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    • WEB - Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web. Dapat juga digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • MOBILE - URL pengalihan yang disediakan dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    • DEEPLINK - URL pengalihan yang menggunakan pengalihan ke platform mitra pembayaran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan end user ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    action
    required
    string Menjabarkan fungsi dari actions terkait

    Pilihan opsi:
    • AUTH - Picu action ini untuk mengotorisasi linking atau pembayaran.
    • RESEND_AUTH - Picu action ini untuk mengirim ulang kode otorisasi ke end user.
    url
    required
    string Url yang disediakan untuk melakukan action
    type
    required
    string Jenis-jenis payment method. Silakan mengacu ke objek terkait untuk informasi lebih lanjut

    Pilihan opsi:
    • EWALLET
    • DIRECT_DEBIT
    • CARD
    • VIRTUAL_ACCOUNT
    • OVER_THE_COUNTER
    • QR_CODE
    ewallet
    nullable
    object Untuk type='EWALLET', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran ewallet tidak digunakan.
    Silakan mengacu ke Ewallet Object untuk detail lebih lanjut mengenai parameter.
    direct_debit
    nullable
    object Untuk type='DIRECT_DEBIT', objek ini akan berisi informasi penting terkait metode pembayaran. Parameter ini akan menjadi null jika metode pembayaran direct debit tidak digunakan.
    Silakan mengacu ke Direct debit Object untuk detail lebih lanjut mengenai parameter.
    description
    nullable
    string Kolom teks untuk tambahan informasi terkait payment method.
    Panjang maksimum: 255 karakter
    failure_code
    nullable
    string Jika status dari transaksi adalah FAILED, parameter ini akan menjelaskan alasan dari kegagalan.
    Parameter ini akan menjadi null jika transaksi tidak gagal.
    Lihat jenis-jenis kode error di sini.
    created
    required
    string ISO 8601 Timestamp untuk pembuatan Payment Method Object. Timezone UTC+0
    updated
    required
    string ISO 8601 Timestamp untuk update terbaru pada Payment Method Object. Timezone UTC+0
    metadata
    nullable
    object Data bebas dengan format JSON yang dapat digunakan sebagai data pelengkap saat pembuatan 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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    originalReferenceNo
    required
    string ID untuk payment method yang disediakan oleh Xendit
    otp
    required
    string Kode otorisasi atau OTP yang diinput oleh end customer
    type
    required
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    originalReferenceNo
    optional
    string ID unik untuk payment method. Prefix bisa bermacam-macam, menyesuaikan dengan payment method yang digunakan
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran yang sebenarnya.
    customerId
    optional
    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerServiceId
    optional
    string Parameter ini diabaikan oleh Xendit.
    customerNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    virtualAccountNo
    optional
    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.
    virtualAccountName
    required
    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.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account.
    totalAmount
    conditionally 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Objek free text
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan pembayaran
    Detail objek parameter
    Key Value
    channelCode
    required
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB, SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE. Value standar: ONE_TIME_USE
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    virtualAccountData
    optional
    object
    Hanya untuk respon berhasil
    Key Type Value
    partnerServiceId
    required
    string Prefiks dari Virtual Account.
    customerNo
    required
    string Nomor Virtual Account (tidak termasuk partnerServiceId / prefiks).
    virtualAccountNo
    required
    string Nomor Virtual Account lengkap (termasuk partnerServiceId / prefiks). Nomor ini yang akan digunakan untuk membayar Virtual Account.
    virtualAccountName
    required
    string Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait.
    totalAmount
    conditionally 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Free text objects
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Detail objek parameter
    Key Value
    id
    required
    string ID dari payment method. Memiliki pm- sebagai prefiks.
    status
    required
    string Status dari payment method. Value yang tersedia: PENDING, ACTIVE, EXPIRED
    channelCode
    required
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB, SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE. Value standar: ONE_TIME_USE
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerServiceId
    optional
    string Parameter ini diabaikan oleh Xendit.
    customerNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    virtualAccountNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    trxId
    required
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    virtualAccountData
    optional
    object
    Hanya untuk respon berhasil
    Key Type Value
    partnerServiceId
    required
    string Prefiks untuk Virtual Account.
    customerNo
    required
    string Nomor Virtual Account (tidak termasuk partnerServiceId / prefiks).
    virtualAccountNo
    required
    string Nomor Virtual Account lengkap (termasuk partnerServiceId / prefiks). Nomor ini yang akan digunakan untuk membayar Virtual Account.
    virtualAccountName
    required
    string Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait.
    totalAmount
    conditionally required
    object umlah 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Free text objects
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Object parameters details
    Key Value
    id
    required
    string ID dari payment method. Memiliki pm- sebagai prefiks.
    status
    required
    string Status dari payment method. Value yang tersedia: PENDING, ACTIVE, EXPIRED
    channelCode
    required
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB, SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE. Value standar: ONE_TIME_USE
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerServiceId
    optional
    string Parameter ini diabaikan oleh Xendit.
    customerNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    virtualAccountName
    required
    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.
    totalAmount
    conditionally 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Free text objects
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan pembayaran
    Object parameters details
    Key Value
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    virtualAccountData
    optional
    object
    Hanya untuk respon berhasil
    Key Type Value
    partnerServiceId
    required
    string Prefiks dari Virtual Account.
    customerNo
    required
    string Nomor Virtual Account (tidak termasuk partnerServiceId / prefiks).
    virtualAccountNo
    required
    string Nomor Virtual Account lengkap (termasuk partnerServiceId / prefiks). Nomor ini yang akan digunakan untuk membayar Virtual Account.
    virtualAccountName
    required
    string Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait.
    totalAmount
    conditionally 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Free text objects
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Detail objek parameter
    Key Value
    id
    required
    string ID dari payment method. Memiliki pm- sebagai prefiks.
    status
    required
    string Status dari payment method. Value yang tersedia: PENDING, ACTIVE, EXPIRED
    channelCode
    required
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB, SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE. Value standar: ONE_TIME_USE
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerServiceId
    optional
    string Parameter ini diabaikan oleh Xendit.
    customerNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    virtualAccountNo
    optional
    string Parameter ini diabaikan oleh Xendit.
    trxId
    required
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    virtualAccountData
    optional
    object
    Hanya untuk respon berhasil
    Key Type Value
    partnerServiceId
    required
    string Prefiks untuk Virtual Account.
    customerNo
    required
    string Virtual Nomor Virtual Account (tidak termasuk partnerServiceId / prefiks).
    virtualAccountNo
    required
    string Nomor Virtual Account lengkap (termasuk partnerServiceId / prefiks). Nomor ini yang akan digunakan untuk membayar Virtual Account.
    virtualAccountName
    required
    string Nama lengkap dari pembayar. Akan digunakan kanal pembayaran untuk memverifikasi identitas.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait.
    totalAmount
    conditionally 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
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Free text objects
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    expiredDate
    optional
    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
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Object parameters details
    Key Value
    id
    required
    string ID dari payment method. Memiliki pm- sebagai prefiks.
    status
    required
    string Status dari payment method. Value yang tersedia: PENDING, ACTIVE, EXPIRED
    channelCode
    required
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB, SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    suggestedAmount
    optional
    number Menampilkan jumlah yang dianjurkan untuk dibayar. Jumlah ini akan ditampilkan ke pembayar, namun pembayar tetap dapat menginput jumlah berapapun (hanya didukung oleh MANDIRI dan BRI).
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE. Value standar: ONE_TIME_USE
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-id
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    x-external-id
    required
    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-id
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    x-signature
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    x-timestamp
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.

    Objek Payload Notifikasi

    Payload Object Parameter Type Description
    partnerServiceId
    required
    string Parameter ini diabaikan oleh Xendit.
    customerNo
    required
    string Parameter ini diabaikan oleh Xendit.
    virtualAccountNo
    required
    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.
    virtualAccountName
    required
    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.
    trxId
    required
    string ID yang disediakan merchant untuk transaksi terkait. Mohon diingat bahwa parameter ID ini harus bersifat unik untuk setiap Virtual Account.
    paidAmount
    required
    object Jumlah aktual yang dibayarkan
    Kondisional untuk jumlah Closed Virtual
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    trxDateTime
    required
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. Contoh: 2020-08-29T09:12:33.001Z
    referenceNo
    required
    string ID pembayaran yang dapat digunakan untuk rekonsiliasi
    freeTexts
    optional
    array of object Xendit akan menggabungkan seluruh entri teks pada bagian ini untuk membentuk deskripsi Virtual Account.
    Objek free text
    Object Key Value
    english
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    indonesia
    optional
    string Kolom bebas untuk informasi tambahan terkait Virtual Account.
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan pembayaran
    Detail parameter object
    Key Value
    paymentId
    required
    string ID pembayaran internal dalam sistem Xendit
    country
    optional
    string Kode negara dalam format ISO 3166-2 yang terdiri dari 2 hurt, menjelaskan negara dimana transaksi dilakukan.
    status
    required
    string Status dari pembayaran. Value yang tersedia: SUCCEEDED, FAILED
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Example: 2020-08-29T09:12:33.001Z
    senderName
    optional
    string Nama dari end user yang membayar Virtual Account. Parameter ini hanya didukung oleh BSS VA
    paymentDetail
    optional
    Informasi tambahan dari bank.
    Detail parameter object
    Key Value
    remark
    optional
    string Pesan yang diinput oleh pembayar saat akan melakukan pembayaran, hanya didukung oleh BSS.
    reference
    optional
    string Nomor referensi dari bank yang dapay digunakan untuk rekonsiliasi, hanya didukung oleh BCA dengan model komersial switcher.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.
    virtualAccountInfo
    required
    Informasi mengenai Virtual Account.
    Detail parameter object
    Key Value
    id
    required
    string ID Virtual Account.
    reusability
    required
    string Tipe Virtual Account. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE
    channelCode
    optional
    string ID untuk partner kanal pembayaran. Value yang tersedia: BCA, BSI, BJB, CIMB SAHABAT_SAMPOERNA, ARTAJASA, BRI, BNI, MANDIRI, PERMATA
    trxId
    required
    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual
    amount
    conditionally required
    object Jumlah pembayaran dari transaksi. Dibutuhkan untuk ONE_TIME_USE QR dan akan diabaikan untuk MULTIPLE_USE QR.
    Kondisional untuk ONE_TIME_USE QR
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Detail parameter objek
    Key Value
    reusability
    required
    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
    paymentMethodReferenceId
    optional
    string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis.
    metadata
    optional
    string Tanggal dimana kode QR akan kedaluwarsa. Format: ISO-8601.
    metadata
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    referenceNo
    required
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    partnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual.
    qrContent
    required
    string QR string yang diberikan untuk ditampilkan kepada end user.
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Detail objek parameter
    Key Value
    paymentMethodId
    required
    string ID dari PaymentMethod yang telah tersimpan sebelumnya, yang akan digunakan pada transaksi ini. Wajib jika payOptionDetails tidak ditentukan.
    paymentMethodReferenceId
    required
    string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis.
    paymentMethodStatus
    required
    string Status dari Payment Method yang telah dibuat sebelumnya. Digunakan untuk menentukan apakah kode QR sudah dapat menerima pembayaran atau belum. Value yang tersedia: REQUIRES_ACTION, PENDING, ACTIVE, INACTIVE, EXPIRED
    paymentMethodExpiresAt
    optional
    string Tanggal dimana kode QR akan kedaluwarsa. Format: ISO-8601
    reusability
    optional
    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
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    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
    originalPartnerReferenceNo
    optional
    string ID orisinil pada sistem layanan konsumer. Antara originalReferenceNo atau originalPartnerReferenceNo wajib ada pada request.
    originalReferenceNo
    optional
    string ID yang disediakan Xendit untuk payment request. Antara parameter ini atau referenceNo wajib disediakan. originalPartnerReferenceNo wajib ada pada request.
    serviceCode
    required
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    originalReferenceNo
    optional
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual.
    serviceCode
    required
    string Diset sebagai '47'
    latestTransactionStatus
    required
    string Status transaksi terakhir. Value yang tersedia: 00, 03, 04, 06
    transactionStatusDesc
    optional
    string Deskripsi status transaksi
    amount
    conditionally required
    object Jumlah pembayaran dari transaksi
    Informasi objek
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    required
    object Informasi tambahan untuk menyelesaikan transaksi
    Detail parameter objek
    Key Value
    paymentMethodId
    required
    string ID dari PaymentMethod yang telah tersimpan sebelumnya, yang akan digunakan pada transaksi ini. Wajib jika payOptionDetails tidak ditentukan.
    paymentMethodReferenceId
    required
    string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis.
    paymentMethodStatus
    required
    string Status dari Payment Method yang telah dibuat sebelumnya. Digunakan untuk menentukan apakah kode QR sudah dapat menerima pembayaran atau belum. Value yang tersedia: REQUIRES_ACTION, PENDING, ACTIVE, INACTIVE, EXPIRED
    paymentMethodExpiresAt
    optional
    string Tanggal dimana kode QR akan kedaluwarsa. Format: ISO-8601
    reusability
    optional
    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
    failureCode
    optional
    string Jika status transaksi adalah FAILED, parameter ini akan menjelaskan alasan kegagalan.
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui.
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-id
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    x-external-id
    required
    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-id
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    x-signature
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    x-timestamp
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.

    Objek Payload Notifikasi

    Payload Object Parameter Type Description
    originalReferenceNo
    required
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait.
    latestTransactionStatus
    required
    string Status terakhir dari transaksi. Value yang tersedia: 00, 06
    transactionStatusDesc
    required
    string Deskripsi dari status transaksi
    amount
    required
    object Actual paid amount
    Informasi objek
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    required
    object Informasi tambahan mengenai pembayaran QR
    Detail parameterobject
    Key Value
    id
    required
    string ID unik untuk pembayaran.
    paymentMethodId
    required
    string ID unik untuk payment method.
    paymentMethodReferenceId
    required
    string ID yang disediakan merchant untuk payment method. Jika tidak disediakan, Xendit akan membuatkannya secara otomatis.
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string TTimestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Contoh: 2020-08-29T09:12:33.001Z
    metadata
    optional
    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    string user-id dari sub-account yang akan Anda buatkan transaksi. Header ini hanya digunakan jika Anda memiliki akses ke xenPlatform.
    WITH-SPLIT-RULE
    optional
    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
    partnerReferenceNo
    required
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual.
    amount
    conditionally required
    object Jumlah dari transaksi. Wajib untuk ONE_TIME_USE QR dan akan diabaikan untuk MULTIPLE_USE QR.
    Kondisional untuk ONE_TIME_USE QR
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    urlParam
    optional
    array Bersifat kondisional, 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
    url
    required
    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)
    type
    required
    string Tipe URL. Value yang diperbolehkan: PAY_RETURN, FAILURE_RETURN, CANCEL_RETURN
    isDeeplink
    optional
    boolean Menjelaskan apabila URL merupakan format deeplink. Xendit tidak mendukung URL deeplink untuk URL yang disediakan oleh merchant, maka field ini akan diabaikan.
    payOptionDetails
    conditionally required
    array Hanya 1 objek yang diperbolehkan. Hanya bisa digunakan jika paymentMethodId tidak ditentukan.
    Informasi objek untuk masing-masing array item
    Key Value
    payMethod
    required
    string Tipe dari payment method. Value yang tersedia: EWALLET, DIRECT_DEBIT
    payOption
    required
    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
    additionalInfo
    conditionally required
    object Dibutuhkan untuk OVO one time payment, BRI, JENIUSPAY
    Informasi objek
    Key Value
    reusability
    optional
    string Menjelaskan apakah payment method dapat digunakan kembali untuk pembayaran selanjutnya tanpa melalui proses penautan akun kembali. Value yang tersedia: ONE_TIME_USE, MULTIPLE_USE
    channelProperties
    optional
    object Informasi tambahan yang dibutuhkan untuk melengkapi transaksi
    Detail objek parameter
    Key Value
    mobileNumber
    required
    string Nomor telepon end customer yang terdaftar di kanal pembayaran. Dalam format in E.164. Wajib untuk: OVO (ONE_TIME_USE), BRI
    cardLastFour
    optional
    string Empat digit terakhir dari kartu debit. Wajib untuk: BRI
    cardExpiry
    optional
    string Bulan dan tahun kedaluwarsa dari kartu debit (dalam format MM/YY). Wajib untuk: BRI
    email
    optional
    string Alamat email end customer yang terdaftar pada kanal pembayaran. Wajib untuk: BRI
    cashtag
    optional
    string Wajib untuk: JENIUSPAY. Cashtag end customer yang terdaftar pada kanal pembayaran.
    additionalInfo
    optional
    object Informasi tambahan untuk transaksi
    Detail objek parameter
    Key Value
    customerId
    required
    string ID yang disediakan oleh Xendit untuk end customer. Dibutuhkan untuk beberapa kanal pembayaran seperti Multiple-use e-wallet dan direct debit.
    paymentMethodId
    optional
    string ID dari PaymentMethod yang telah disimpan sebelumnya untuk digunakan pada transaksi ini. Wajib jika payOptionDetails tidak ditentukan.
    channelProperties
    optional
    object Parameter tambahan untuk masing-masing kanal pembayaran
    Detail objek parameter
    Key Value
    requireAuth
    optional
    boolean Hanya untuk Direct Debit BRI. Menjelaskan apakah end customer perlu melakukan validasi OTP sebelum menyelesaikan pembayaran. OTP akan selalu dibutuhkan untuk transaksi dengan jumlah lebih dari 1,000,000 IDR.
    redeemPoints
    optional
    string Hanya untuk OVO and SHOPEEPAY EWallets. Value yang tersedia: REDEEM_NONE, REDEEM_AL. Menjelaskan apakah points balance pada kanal pembayaran ewallet digunakan pada transaksi.
    Value yang tersedia: REDEEM_NONE - tidak ada point yang digunakan
    REDEEM_ALL - point akan digunakan untuk mengurangi jumlah tagihan sebelum cash balance digunakan.
    OVO: REDEEM_ALL hanya bisa digunakan seat disetujui untuk promosi.
    SHOPEEPAY: Hanya 50% dari jumlah transaksi (dibulatkan ke bawah) yang dapat dibayarkan menggunakan SHOPEEPAY coins.
    description
    optional
    string Kolom bebas untuk informasi tambahan lainnya yang berkaitan dengan payment request.
    metadata
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    referenceNo
    optional
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    partnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual
    approvalCode
    optional
    string Jika status transaksi adalah FAILED, parameter ini menjelaskan alasan kegagalan. Tidak akan muncul jika status transaksi tidak gagal.
    appRedirectUrl
    optional
    string URL pengalihan yang disediakan menggunakan deep linking untuk mengarahkan ke platform partner.
    webRedirectUrl
    optional
    string Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web.
    additionalInfo
    optional
    object Informasi tambahan mengenai transaksi
    Detail objek parameter
    Key Value
    paymentMethodId
    required
    string Mengembalikan payment method ID, bisa berupa yang tersedia pada request, atau payment method baru yang dibuat dari payOptionDetails pada request
    actions
    optional
    array Objek yang menjelaskan detail tindak lanjut untuk melanjutkan pembayaran.
    Informasi objek untuk masing-masing array item
    Key Value
    action
    optional
    string Value yang tersedia: AUTH, RESEND_AUTH
    urlType
    optional
    string Value yang tersedia: API, WEB, MOBILE, DEEPLINK
    url
    optional
    string URL dari action yang akan dilakukan
    method
    optional
    string metode HTTP untuk melakukan action
    created
    optional
    string Timestamp dalam format ISO 8601 saat payment request dibuat
    updated
    optional
    string Timestamp dalam format ISO 8601 saat payment request terakhir kali diperbarui
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    FOR-USER-ID
    optional
    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
    originalPartnerReferenceNo
    optional
    string ID transaksi orisinil dari sistem layanan konsumer. Antara parameter ini atau originalReferenceNo wajib diisi
    originalReferenceNo
    optional
    string ID yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi
    serviceCode
    required
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    originalReferenceNo
    optional
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual
    serviceCode
    required
    string Set menjadi '54'
    latestTransactionStatus
    required
    string Status transaksi terakhir. Value yang tersedia: 00, 01, 02, 03, 04, 05, 06, 07
    transactionStatusDesc
    optional
    string Deskripsi status transaksi
    transAmount
    conditionally required
    object Amount of the transaction
    Informasi objek
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    optional
    object Informasi tambahan mengenai transaksi
    Detail objek parameter
    Key Value
    customerId
    optional
    string ID yang disediakan oleh Xendit untuk end customer. Akan dibutuhkan untuk kanal pembayaran MULTIPLE_USE.
    description
    optional
    string Kolom bebas untuk informasi tambahan lainnya yang berkaitan dengan payment request.
    paymentMethodId
    required
    string ID untuk payment method yang disediakan oleh Xendit
    paymentMethodId
    required
    string ID untuk payment method yang disediakan oleh merchant.
    channelProperties
    optional
    object Pengaturan spesifik untuk payment request.
    Object Informasi untuk masing-masing array item
    Key Value
    redeemPoints
    optional
    string Menjelaskan apakah points balance pada kanal pembayaran akan digunakan pada transaksi.
    successReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi berhasil.
    failureReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi gagal.
    cancelReturnUrl
    optional
    string URL dimana end customer akan diarahkan jika otorisasi dibatalkan.
    requireAuth
    optional
    string Menjelaskan apakah end customer perlu melakukan validasi OTP sebelum menyelesaikan pembayaran. Hanya berlaku untuk BRI.
    actions
    optional
    array Objek yang menjelaskan detail tindak lanjut untuk melanjutkan pembayaran.
    Informasi objek untuk masing-masing array item
    Key Value
    action
    optional
    string Value yang tersedia: AUTH, RESEND_AUTH
    urlType
    optional
    string Value yang tersedia: API, WEB, MOBILE, DEEPLINK
    url
    optional
    string URL dari action yang akan dilakukan
    method
    optional
    string metode HTTP untuk melakukan action
    failureCode
    optional
    string Jika status transaksi adalah FAILED, parameter ini menjelaskan alasan kegagalan.
    created
    optional
    string Timestamp dalam format ISO 8601 saat payment request dibuat
    updated
    optional
    string Timestamp dalam format ISO 8601 saat payment request terakhir kali diperbarui
    metadata
    optional
    object Kolom bebas dalam format JSON untuk informasi tambahan lainnya.

    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    originalPartnerReferenceNo
    optional
    string ID transaksi orisinil dari sistem layanan konsumer. Antara parameter ini atau originalReferenceNo wajib diisi
    originalReferenceNo
    optional
    string Xendit ID yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi
    partnerRefundNo
    optional
    string ID yang disediakan oleh merchant untuk request pengembalian dana. Jika merchant tidak menyediakan, maka akan dibuat secara otomatis.
    refundAmount
    conditionally required
    object Jika refundAmount tidak disediakan, request pengembalian dana akan menginput jumlah terbesar yang memungkinkan untuk dikembalikan dari transaksi terkait.
    Kondisional untuk ONE_TIME_USE QR
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    reason
    optional
    string Alasan mengapa request pengembalian dana dilakukan. Value yang tersedia: FRAUDULENT, DUPLICATE, REQUESTED_BY_CUSTOMER, CANCELLATION, OTHERS
    additionalInfo
    optional
    object Informasi tambahan mengenai transaksi
    Detail objek parameter
    Key Value
    metadata
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    originalReferenceNo
    optional
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    refundNo
    optional
    string ID yang disediakan Xendit untuk request pengembalian dana
    partnerRefundNo
    optional
    string ID yang disediakan oleh merchant untuk request pengembalian dana. Jika merchant tidak menyediakan, maka akan dibuat secara otomatis.
    refundAmount
    conditionally required
    object Jika refundAmount tidak disediakan, request pengembalian dana akan menginput jumlah terbesar yang memungkinkan untuk dikembalikan dari transaksi terkait.
    Kondisional untuk ONE_TIME_USE QR
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    required
    object Informasi tambahan mengenai transaksi
    Detail objek parameter
    Key Value
    channelCode
    required
    string ID untuk partner kanal pembayaran
    status
    required
    string Status dari pengembalian dana. Value yang tersedia: SUCCESS, FAILED, PENDING
    reason
    required
    string Alasan mengapa request pengembalian dana dilakukan. Value yang tersedia: FRAUDULENT, DUPLICATE, REQUESTED_BY_CUSTOMER
    failureCode
    optional
    string status transaksi adalah gagal, parameter ini menjelaskan alasan kegagalan..
    refundFeeAmount
    optional
    string Biaya tambahan untuk memproses pengembalian dana. Hanya diisi jika berlaku.
    created
    optional
    string Timestamp dalam format ISO 8601 saat payment request dibuat
    updated
    optional
    string Timestamp dalam format ISO 8601 saat payment request terakhir kali diperbarui
    metadata
    optional
    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-ID
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    X-EXTERNAL-ID
    required
    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-ID
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    X-SIGNATURE
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    X-TIMESTAMP
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.
    Body Parameter Type Description
    originalReferenceNo
    optional
    string Xendit D yang disediakan oleh Xendit untuk payment request. Antara parameter ini atau originalPartnerReferenceNo wajib diisi
    otp
    optional
    string Kode otorisasi atau OTP yang diinput oleh end customer
    type
    optional
    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
    responseCode
    required
    string Kode respon
    responseMessage
    required
    string Deskripsi respon
    originalReferenceNo
    optional
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan.
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait. Akan diteruskan ke transaksi pembayaran aktual
    customerId
    optional
    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-id
    required
    string Identifikasi perangkat API service yang diakses oleh pengguna. Jika tidak tersedia, silakan set sebagai ‘unknown’.
    Content-Type
    required
    string Harus diset ke application/json
    x-external-id
    required
    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-id
    required
    string Client ID Xendit Anda. Contoh: 7049bc78-0600-43b8-a6be-25225bf9344c
    x-signature
    required
    string Signature yang tidak dapat disangkal untuk request. Pelajari artikel ini untuk informasi lebih lanjut.
    x-timestamp
    required
    string Timestamp untuk X-SIGNATURE. Format yang digunakan adalah yyyy-MM-ddTHH:mm:ssTZD.

    Objek Payload Notifikasi

    Payload Object Parameter Type Description
    originalReferenceNo
    required
    string ID unik untuk payment request. Prefiks menyesuaikan dengan payment method yang digunakan
    originalPartnerReferenceNo
    optional
    string ID yang disediakan merchant untuk transaksi terkait
    latestTransactionStatus
    required
    string Status transaksi terbaru dari pembayaran tersebut. Value yang diperbolehkan: 00, 06
    transactionStatusDesc
    required
    string Deskripsi dari status transaksi
    createdTime
    required
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat. Contoh: 2024-08-29T09:12:33.001Z
    amount
    required
    object Jumlah aktual yang dibayar
    Informasi objek
    Key Value
    value
    required
    string Untuk IDR, format harus memiliki 2 angka desimal. Contoh: IDR 10.000, - akan ditulis sebagai 10000.00
    currency
    required
    string Kode dengan format ISO 4217 yang terdiri dari 3 huruf, dari mata uang yang digunakan pada transaksi. Hanya dapat menggunakan IDR.
    additionalInfo
    required
    object Informasi tambahan tentang pembayaran.
    object detail parameter
    Key Value
    id
    required
    string ID unik utuk pembayaran.
    paymentMethodId
    required
    string ID unit untuk payment method.
    paymentMethodReferenceId
    required
    string ID yang disediakan oleh merchant untuk payment method terkait. Jika merchant tidak menyediakannya, Xendit akan mengisinya secara otomatis.
    created
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest dibuat.
    updated
    optional
    string Timestamp dalam format ISO 8601 saat PaymentRequest terakhir kali diperbarui. Example: 2020-08-29T09:12:33.001Z
    description
    optional
    string deskripsi dari payment request.
    failureCode
    optional
    string Jika status dari transaksi adalah gagal, parameter ini akan menjelaskan alasan dari kegagalan.
    channelProperties
    optional
    object Informasi tambahan mengenai kanal pembayaran.
    object detail parameter
    Key Value
    successReturnUrl
    required
    string URL dimana end customer akan diarahkan jika otorisasi berhasil.
    failureReturnUrl
    required
    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-id
    optional
    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
    Key Value
    account_number
    required
    string Nomor kartu yang akan dikonversi menjadi token
    exp_month
    required
    string Bulan kedaluwarsa kartu yang akan dikonversi menjadi token
    exp_year
    required
    string Tahun kedaluwarsa kartu yang akan dikonversi menjadi token
    card_holder_first_name
    required
    string Nama depan dari pemilik kartu
    karakter: Alphanumeric. Karakter spesial tidak diperbolehkan.
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 50 karakter
    card_holder_last_name
    required
    string Nama belakang dari pemilik kartu
    karakter: Alphanumeric. Karakter spesial tidak diperbolehkan.
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 50 karakter
    card_holder_email
    required
    string Email dari pemilik kartu
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 254 karakter
    card_holder_phone_number
    required
    string Nomor telepon dari pemilik kartu
    karakter: gunakan +(kode_negara) sebagai parameter di depan. Simbol - dan/atau spasi kosong tidak diperbolehkan. Ikuti ITU-E.164 Standard
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 15 karakter
    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: true
    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
    TIDAK AKAN DIGUNAKAN SETELAH 1 OKTOBER 2024. Mohon gunakan parameter card_data.card_holder_email

    Kunci Nilai
    given_names
    optional
    TIDAK AKAN DIGUNAKAN SETELAH 1 OKTOBER 2024. Mohon gunakan parameter card_data.card_holder_first_name

    string Nama pertama pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    surname
    optional
    TIDAK AKAN DIGUNAKAN SETELAH 1 OKTOBER 2024. Mohon gunakan parameter card_data.card_holder_last_name

    string Nama belakang pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    email
    optional
    string Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu
    mobile_number
    optional
    TIDAK AKAN DIGUNAKAN SETELAH 1 OKTOBER 2024. Mohon gunakan parameter card_data.card_holder_phone_number

    string Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164
    phone_number
    optional
    TIDAK AKAN DIGUNAKAN SETELAH 1 OKTOBER 2024. Mohon gunakan parameter card_data.card_holder_phone_number

    string Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor)
    address
    optional
    object Alamat tagihan pemilik kartu
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    parameter objek alamat
    Kunci Nilai
    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
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    street_line2
    optional
    string Alamat lengkap bangunan
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan:
    Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    city
    optional
    string Kabupaten/Kota pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    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
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    postal_code
    optional
    string Kode ZIP atau Kode Pos bila tersedia
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    category
    optional
    string Kategori alamat yang dimasukkan sebagai nilai. Nilai hanya dapat berisikan HOME, WORK, dan PROVINCIAL
    customer
    optional
    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
    Kunci Nilai
    reference_id
    optional
    string Nilai parameter ini adalah ID yang merepresentasi pelanggan Anda di sistem Anda. Nilai dapat disamakan dengan reference_id pada API pembuatan Customer.
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    mobile_number
    optional
    string Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    phone_number
    optional
    string Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor)
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    email
    optional
    string Alamat email pelanggan atau pemilik kartu
    Catatan: Required for AVS and 3DS 2.0
    given_names
    optional
    string Nama pertama pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    surname
    optional
    string Nama belakang pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    nationality
    optional
    string 2-huruf ISO 3166-2 kode negara kewarnegaraan pemilik kartu
    date_of_birth
    optional
    string Tanggal, bulan, dan tahun lahir pelanggan atau pemilik kartu dengan format YYYY-MM-DD
    description
    optional
    string Deskripsi yang diberikan oleh merchant terkait dengan data pelanggan yang dimasukkan sebagai input
    jumlah karakter minimum: 1 karakter
    jumlah karakter maksimum: 500 karakter
    metadata
    optional
    object Data bebas dengan format json yang dapat digunakan pelanggan sebagai data pelengkap.
    addresses
    optional
    Array of JSON Informasi alamat pelanggan. Gunakan parameter ini untuk mengirimkan alamat pengiriman milik pelanggan kepada Xendit jika tersedia. Untuk alamat penagihan, mohon disertakan pada parameter billing_details di atas
    object Parameter Objek Alamat
    Kunci Nilai
    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
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    street_line2
    optional
    string Alamat bangunan
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    city
    optional
    string Kabupaten/Kota pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    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
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    postal_code
    optional
    string Kode ZIP atau kode POS bila tersedia
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
    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.
    status
    required
    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
    Kunci Nilai
    bank
    optional
    string Nama bank penerbit kartu
    country
    optional
    string 2-huruf ISO 3166-2 kode negara Kode negara penerbit kartu
    type
    optional
    string Tipe kartu kredit/debit yang sudah dilakukan tokenisasi. Dapat bernilai CREDIT, DEBIT, PREPAID, dan UNKNOWN
    brand
    optional
    string Merek atau skema dari kartu yang sudah dilakukan tokenisasi. Dapat bernilai VISA, MASTERCARD, JCB, dan AMEX
    network_response
    optional
    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
    three_ds_trans_status
    optional
    Hasil transStatus, langsung berasal dari respon 3DS2.
    three_ds_flow
    optional
    Jika diautentikasi (flow 3DS yang diikuti), alur otentikasi yang diikuti transaksi ini. Baik frictionless atau diautentikasi.

    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_FAILED Status ini berarti customer berusaha melakukan otentikasi menggunakan 3DS tetapi tidak berhasil melengkapi proses otentikasi

    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.
    ACCOUNT_NUMBER_INVALID_ERROR
    400
    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_NOT_SUPPORTED_ERROR
    400
    Merek kartu tidak didukung. Sarankan pengguna untuk menggunakan Visa/Mastercard.
    AUTHENTICATION_REQUIRED_ERROR
    400
    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_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    VERIFICATION_TIMEOUT_ERROR
    408
    Jaringan kartu kredit mengalami timed out ketika berusaha melakukan tokenisasi.
    TEMPORARY_SERVICE_ERROR
    503
    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-id
    optional
    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_TOKEN_NOT_FOUND_ERROR
    404
    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-id
    optional
    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 kartu
    parameter tambahan untuk data kartu
    Key Value
    card_holder_first_name
    required jika card_data disertakan
    string Nama depan dari pemilik kartu
    karakter: Alphanumeric. Karakter spesial tidak diperbolehkan.
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 50 karakter
    card_holder_last_name
    required jika card_data disertakan
    string Nama belakang dari pemilik kartu
    karakter: Alphanumeric. Karakter spesial tidak diperbolehkan.
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 50 karakter
    card_holder_email
    required jika card_data disertakan
    string Email dari pemilik kartu
    minimum jumlah karakter: 3 karakter
    maksimum jumlah karakter: 254 karakter
    card_holder_phone_number
    required jika card_data disertakan
    string Nomor telepon dari pemilik kartu
    karakter: gunakan +(kode_negara) sebagai parameter di depan. Simbol - dan/atau spasi kosong tidak diperbolehkan. Ikuti ITU-E.164 Standard
    minimum jumlah karakter: 1 karakter
    maksimum jumlah karakter: 15 karakter
    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-id
    optional
    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: GMT+0
    .
    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_REVERSED_ERROR
    400
    Charge telah dilakukan pengembalian, maka dari itu pengembalian otorisasi tidak dapat dilakukan
    CHARGE_ALREADY_CAPTURED_ERROR
    400
    Charge telah dilaukan capture, maka dari itu pengembalian otorisasi tidak dapat dilakukan
    CHARGE_FAILED_ERROR
    400
    Charge gagal, maka dari itu pengembalian otorisasi tidak dapat dilakukan
    REQUEST_FORBIDDEN_ERROR
    403
    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_CHARGE_NOT_FOUND_ERROR
    404
    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-id
    optional
    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-rule
    opsional
    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
    optional

    default: true
    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
    Kunci Nilai
    given_names string Nama pertama
    surname
    optional
    string Nama belakang
    email
    optional
    string Alamat email
    mobile_number
    optional
    string Nomor handphone
    phone_number
    optional
    string Nomor telepon lain (telpon rumah atau kantor)
    address
    required
    object Objek Alamat
    parameter objek alamat
    street_line1
    optional
    string Nama bangunan dan nomor unit apartemen / rumah
    street_line2
    optional
    string Alamat bangunan
    city
    optional
    string Kota
    province_state
    optional
    string Gunakan parameter ini untuk memasukkan provinsi, state, atau region dari pemilik kartu. Jika pemilik kartu merupakan penduduk USA, pastikan nilai yang input adalah kode negara bagian (contoh gunakan CA untuk California)
    postal_code
    required
    string Kode POS atau kode ZIP
    country
    optional
    string 2-hufur ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu
    metadata
    optional
    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
    reference_id
    optional
    string Kode unik yang digunakan untuk ID referensi pada API Pembuatan Promo.
    original_amount
    optional
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    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.
    count
    required
    numberBersamaan dengan parameter interval, 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.
    interval
    required
    string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan periode bulanan, maka nilai yang dimasukkan adalah month. Untuk saat ini Xendit hanya menyediakan cicilan dengan periode interval bulanan.

    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
    created
    required
    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
    reference_id
    optional
    string Referensi unik seperti nama atau ID yang diberikan pada promo yang telah dibuat.
    original_amount
    optional
    number Nominal asli dari transaksi (sebelum diberikan potongan harga).
    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
    count
    required
    number Bersamaan dengan parameter interval, parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran.
    interval
    required
    string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran.
    network_response
    optional
    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
    card_network_response_code
    optional
    Kode respons dikembalikan oleh skema (Visa, Mastercard, JCB, China Unionpay atau Amex).
    card_network_descriptor
    optional
    Deskripsi kode respons.
    merchant_advice_code
    optional
    Hanya diberikan jika tersedia, hanya diberikan untuk Mastercard. Kode Mastercard ini menjelaskan tindakan yang harus diambil.
    merchant_advice_descriptor
    optional
    Hanya diberikan jika tersedia. Hanya diberikan untuk Mastercard. Deskripsi / tindakan yang harus diambil untuk Merchant Advice Code.
    three_ds_trans_status
    optional
    Hasil transStatus, langsung berasal dari respon 3DS2.
    three_ds_flow
    optional
    Jika diautentikasi (flow 3DS yang diikuti), alur otentikasi yang diikuti transaksi ini. Baik frictionless atau diautentikasi.

    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_ALREADY_USED_ERROR
    400
    ID Token Sekali Pakai sudah pernah digunakan ketika melakukan Charge. Mohon untuk menggunakan ID Token yang berbeda untuk melakukan Charge.
    AUTHENTICATION_ALREADY_USED_ERROR
    400
    ID otentikasi sudah pernah digunakan ketika melakukan charge. Mohon untuk menggunakan ID otentikasi yang berbeda untuk melakukan Charge
    INVALID_TOKEN_ID_ERROR
    400
    Format ID token tidak valid. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter.
    INVALID_CVN_LENGTH_ERROR
    400
    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_ID_MISSING_ERROR
    400
    ID Otentikasi wajib diisi. Mohon untuk menambahkan ID otentikasi ke dalam request.
    AMOUNT_GREATER_THAN_AUTHENTICATED_ERROR
    400
    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_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    TOKEN_NOT_FOUND_ERROR
    404
    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_NOT_FOUND_ERROR
    404
    Token yang telah diotentikasi dengan otentikasi ID tersebut tidak ditemukan. Mohon cek kembali apakah ID otentikasi tersebut sudah terdaftar.
    MID_NOT_FOUND_ERROR
    404
    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:
  • Fitur cicilan tidak tersedia untuk kartu yang diterbitkan oleh bank tersebut. Mohon dicoba kembali menggunakan kartu yang lain.
  • Interval dari cicilan yang diajukan tidak tersedia. Mohon dicoba kembali menggunakan interval periode cicilan yang lain.
  • 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:
  • IDR: 5000.
  • PHP: 20.

  • 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:
  • IDR: 200000000.
  • PHP: 700000.

  • 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:

    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

    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:

    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:
    • Bisnis yang beroperasi di Indonesia: IDR
    • Bisnis yang beroperasi di Filipina: PHP, USD
    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:
    • GPN: (Gerbang Pembayaran Nasional) gunakan nilai ini untuk melakukan transaksi menggunakan kartu GPN (metode 3 party)
    • BCA: gunakan nilai ini untuk melakukan transaksi menggunakan kartu dengan skema Bank BCA untuk diproses menggunakan konektor inhouse (metode 2.5 party)
    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:
    • true: 3DS akan diinisiasi
    • false: 3DS akan dilewati
    given_names
    required
    string Nama pertama pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    surname
    required
    string Nama belakang pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    email
    required
    string Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu
    mobile_number
    optional
    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
    city
    optional
    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_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.
    INVALID_API_KEY
    400
    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-id
    optional
    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_THAN_AUTHORIZED_ERROR
    400
    Nominal capture melebihi nominal yang terotorisasi.
    INVALID_CHARGE_STATUS_ERROR
    400
    Status charge tidak terotorisasi. Mohon untuk otorisasi transaksi dan lakukan capture kembali
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
    404
    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-KEY
    optional
    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-id
    optional
    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: GMT+0
    .
    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_AMOUNT_EXCEEDED_ERROR
    400
    Nominal refund melebihi total charge
    DUPLICATE_REFUND_ERROR
    400
    external_id sudah pernah digunakan
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
    404
    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-id
    optional
    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_CHARGE_NOT_FOUND_ERROR
    404
    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:

    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.
    Karaktera-z, A-Z, 0-9; simbol yang diterima - _ \
    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_id
    required
    stringID dari bisnis Anda yang terdapat di dalam sistem Xendit.
    bin
    required
    stringBIN 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
    reference_id
    optional
    string Referensi unik yang diberikan untuk promo yang Anda buat.
    Charactersa-z, A-Z, 0-9; accepted symbols - _ \
    original_amount
    required
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    discount_amount
    optional
    number Nominal dari jumlah potongan yang akan diberikan pada objek promo (menerima desimal).
    MaximumNone
    Minimum0
    discount_percent
    optional
    number Nominal dari persentase jumlah potongan yang akan diberikan pada objek promo (menerima desimal).
    Maximum100
    Minimum0
    final_amount
    required
    number Nominal final setelah potongan harga diberikan berdasarkan promo yang digunakan. User harus menggunakan nominal ini untuk melakukan transaksi charge.
    currency
    required
    string Mata uang yang akan digunakan untuk pembayaran.
    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.
    installments
    optional
    object Menjelaskan tentang opsi cicilan yang tersedia.
    parameter tambahan untuk cicilan
    count
    required
    numberBersamaan dengan parameter interval, 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.
    interval
    required
    string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan periode bulanan, maka nilai yang dimasukkan adalah month. Untuk saat ini Xendit hanya menyediakan cicilan dengan periode interval bulanan.
    acquirer
    required
    string Bank yang akan memproses transaksi dan berkorelasi dengan kartu penerbit untuk menyediakan jasa cicilan.
    currency
    required
    string Mata uang yang akan digunakan untuk pembayaran.
    minimum_amount
    required
    number Jumlah minimum yang dibutuhkan untuk melakukan transaksi cicilan. Permintaan charge di bawah nilai ini tidak dapat menggunakan opsi cicilan.

    Nilai ini dapat berbeda untuk setiap bank.
    code
    optional
    string Akan dikembalikan pada respons jika bank penerbit kartu memberikan nilai installment_code sebagai identitas dan kategori dari program cicilan yang tersedia.
    description
    optional
    string Akan dikembalikan jika bank penerbit kartu memberikan deskripsi dari rencana cicilan.
    interest_free_duration
    optional
    number Menjelaskan jumlah bulan dimana bunga dari cicilan ditiadakan (0 %) jika tersedia. Hanya akan dikembalikan jika disediakan oleh bank penerbit kartu.
    installment_amount
    optional
    number Jumlah nominal yang harus dibayarkan oleh pemilik kartu pada setiap periode tagihan cicilan. Mengacu dari total jumlah transaksi dibagi dengan installment_count.
    maximum_amount
    optional
    number Akan dikembalikan jika batasan rencana cicilan membatasi nominal transaksi pembayaran. Jika nominal transaksi yang ada melebihi nilai ini, maka error akan dikembalikan pada respons.
    reward
    optional
    object Jika fitur rewards tersedia pada kartu, objek ini akan dikembalikan di dalam respons.
    parameter rinci dari reward
    Key Value
    balance
    required
    number Saldo dari rewards yang tersedia dan dapat digunakan pada kartu.

    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.
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    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 .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    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.
    KarakterAngka (includes decimals)
    Maksimum 100
    Minimum0
    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.
    KarakterAngka (includes decimals)
    Maksimum tidak ada
    Minimum0
    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 .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    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.
    KarakterAngka (termasuk desimal)
    Maksimum100
    Minimum0
    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.
    KarakterAngka (termasuk desimal)
    Maksimumtidak ada
    Minimum0
    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_ERROR
    403
    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_USE
    409
    Referensi sudah digunakan pada promo lain. Mohon gunakan nama atau referensi yang lain.
    PROMO_CODE_IN_USE
    409
    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 .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    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.
    KarakterAngka (includes decimals)
    Maksimum 100
    Minimum0
    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.
    KarakterAngka (includes decimals)
    Maksimum tidak ada
    Minimum0
    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-id
    opsional
    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-rule
    opsional
    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_id
    wajib
    string Reference ID yang disediakan oleh merchant (255 karakter)
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    amount
    wajib
    number Nominal yang harus dibayarkan
    Minimal - 1,000 IDR untuk ID_JENIUSPAY dan 100 IDR atau 1 PHP untuk eWallet lainnya
    Maksimal - berdasarkan saldo maksimal eWallet
    checkout_method
    wajib
    string Metode checkout yang menentukan alur pembayaran untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    TOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang
    channel_code
    wajib jika checkout_method = ONE_TIME_PAYMENT, opsional jika checkout_method = TOKENIZED_PAYMENT
    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_properties
    wajib ketika checkout_method dan channel_code digunakan
    object Menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - one time payment parameter wajib
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    JENIUS PAY parameter wajib
    Paramater Nilai
    cashtag
    wajib
    string Pengenal unik untuk setiap akun Jenius, mirip dengan nama pengguna. Selalu mulai dengan tanda “$”. 3-15 karakter tidak termasuk tanda “$”. Alfanumerik dan tanda “_”
    OVO - tokenized payment parameter wajib
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    MAYA (PAYMAYA) parameter wajib . End-customer dapat mencoba kembali pembayaran di link yang sama dalam waktu 15 menit
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan
    payment_method_id
    wajib jika checkout_method = TOKENIZED_PAYMENT, opsional jika checkout_method = ONE_TIME_PAYMENT
    string ID dari payment method. Payment method digunakan untuk melakukan tokenisasi pembayaran untuk menandai eWallet end user sebagai metode pembayaran
    customer_id
    opsional
    string ID dari customer object dimana payment method akan dihubungkan. Gunakan Create Customer API untuk melakukan request Customer
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail parameter objek
    Key Nilai
    reference_id
    wajib
    string Pengidentifikasi dari merchant untuk suatu produk tertentu<= 255 karakter
    name
    wajib
    string Nama product
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user. Anda 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.
    metadata
    opsional
    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
    id
    wajib
    string Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4
    business_id
    wajib
    string Business ID dari merchant
    reference_id
    wajib
    string Reference ID yang dibuat oleh merchant
    status
    wajib
    string Status request charge
    Key Value
    SUCCEEDED
    Transaksi pembayaran untuk spesifik charge_id sukses dilakukan
    PENDING
    Transaksi pembayaran untuk spesifik charge_id menunggu pembayaran dilakukan oleh end user
    FAILED
    Transaksi pembayaran untuk spesifik charge_id telah gagal, silakan lihat failure codes untuk alasan kegagalan
    VOIDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan void
    REFUNDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan refund sebagian atau refund penuh
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    charge_amount
    wajib
    number Nominal charge yang direquest dari merchant
    capture_amount
    opsional
    number Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount
    refunded_amount
    opsional
    number Total nominal refund dari merchant kepada end user
    checkout_method
    wajib
    string Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    channel_code
    wajib
    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_properties
    wajib
    object Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - one time payment parameter wajib
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    JENIUS PAY parameter wajib
    Paramater Nilai
    cashtag
    wajib
    string Pengenal unik untuk setiap akun Jenius, mirip dengan nama pengguna. Selalu mulai dengan tanda “$”. 3-15 karakter tidak termasuk tanda “$”. Alfanumerik dan tanda “_”
    OVO - tokenized payment parameter wajib
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    Parameter wajib MAYA (PAYMAYA)
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan. End-customer dapat mencoba kembali pembayaran di tautan yang sama dalam waktu 15 menit
    actions
    opsional
    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
    Key Nilai
    desktop_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan desktop
    mobile_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan perangkat mobile
    mobile_deeplink_checkout_url
    Penyedia layanan eWallet membuat URL untuk deeplink checkout pada perangkat mobile (transaksi langsung masuk ke eWallet app untuk konfirmasi pembayaran)
    qr_checkout_string
    Provider eWallet membuat qr string untuk checkout yang harus digunakan dengan cara melakukan pemindaian pada layar perangkat
    Channel wajib pengalihan informasi lebih lanjut
    Tipe DANA LINKAJA SHOPEEPAY (ID & PH) ASTRAPAY MAYA (PAYMAYA) GCASH GRABPAY SAKUKU
    desktop_web_checkout_url
    mobile_web_checkout_url
    mobile_deeplink_checkout_url
    qr_checkout_string
    is_redirect_required
    wajib
    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_url
    wajib
    string Callback URL dimana notifikasi pembayaran akan dikirimkan
    created
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    updated
    wajib
    string ISO 8601 Timestamp untuk update object charge. Timezone UTC+0
    void_status
    opsional
    string Status request void. Nilai tersedia: PENDING, FAILED, SUCCEEDED
    voided_at
    opsional
    string ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0
    capture_now
    wajib
    string Default: true. Parameter tidak digunakan saat ini
    customer_id
    opsional
    string ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi
    payment_method_id
    opsional
    string ID metode pembayaran dari Xendit sebagai representasi metode pembayaran pelanggan Anda. Hanya dapat digunakan untuk kanal yang mendukung pembayaran tokenisasi
    failure_code
    opsional
    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
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail objek parameter
    Key Nilai
    reference_id
    wajib
    string Identifier produk yang dibuat oleh merchant <= 255 karakter
    name
    wajib
    string Nama produk
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek tambahan yang mungkin digunakan sebagai tambahan atribut produk
    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
    metadata
    opsional
    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_ERROR
    400
    Terdapat invalid input pada salah satu parameter
    UNSUPPORTED_CURRENCY
    400
    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_ID
    400
    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_KEY
    401
    Format API key tidak valid
    INVALID_MERCHANT_CREDENTIALS
    401
    Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request
    CHANNEL_NOT_ACTIVATED
    403
    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_FOUND
    404
    Request pembayaran gagal dikarenakan tidak ditemukan callback url pada dashboard Xendit atau pada request header. Silakan masukkan callback url pada dashboard Xendit
    UNSUPPORTED_CONTENT_TYPE
    403
    Tidak mendukung tipe konten yang di request
    CHARGE_LIMIT_EXCEEDED
    429
    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_ERROR
    500
    Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu
    CHANNEL_UNAVAILABLE
    503
    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-token
    wajib
    string Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut

    webhook-id
    wajib
    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 Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.capture terjadi ketika provider eWallet mengkonfirmasi status transaksi pembayaran
    business_id
    wajib
    string Business ID dari merchant
    created
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    data
    opsional
    object Objek charge eWallet akan dikumpulkan pada parameter ini. Silakan lihat bagian ini untuk informasi lengkapnya
    Data fields
    Key Nilai
    id
    wajib
    string Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4
    business_id
    wajib
    string Business ID dari merchant
    reference_id
    wajib
    string Reference ID yang dibuat oleh merchant
    Catatan: Harus unik per request pembayaran
    status
    wajib
    Status request charge - SUCCEEDED, FAILED, VOIDED, REFUNDED
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    charge_amount
    wajib
    number Nominal charge yang direquest dari merchant
    capture_amount
    opsional
    number Nominal capture yang direquest Anda. Saat ini, capture_amount akan selalu sama dengan charge_amount
    refunded_amount
    opsional
    number Total nominal refund dari merchant kepada end user
    checkout_method
    wajib
    string Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    channel_code
    wajib
    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_properties
    opsional
    object Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - one time payment parameter wajib
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    JENIUS PAY parameter wajib
    Paramater Nilai
    cashtag
    wajib
    string Pengenal unik untuk setiap akun Jenius, mirip dengan nama pengguna. Selalu mulai dengan tanda “$”. 3-15 karakter tidak termasuk tanda “$”. Alfanumerik dan tanda “_”
    OVO - tokenized payment parameter wajib
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    Parameter wajib MAYA (PAYMAYA)
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan. End-customer dapat mencoba kembali pembayaran di link yang sama dalam waktu 15 menit
    actions
    opsional
    string Langkah pengalihan yang harus diambil ketika is_redirect_wajib yang dikembalikan dalam respon adalah true. Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
    is_redirect_wajib
    wajib
    boolean Tanda yang mengindikasikan apakah pengalihan diwajibkan untuk end user dapat menyelesaikan pembayaran
    Ketika True, merchant harus mengarahkan end user ke url yang disediakan pada parameter “actions”. Ketika False, tidak ada pengalihan yang harus dilakukan untuk menyelesaikan pembayaran.
    callback_url
    opsional
    string Webhook URL dimana notifikasi pembayaran akan dikirimkan
    created
    wajib
    string ISO 8601 Timestamp for charge object creation. Timezone UTC+0
    updated
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    void_status
    opsional
    string Status request void. Nilai tersedia: PENDING, FAILED, SUCCEEDED
    voided_at
    opsional
    string ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0
    capture_now
    opsional
    string Default: true. Parameter tidak digunakan saat ini
    customer_id
    opsional
    string ID dari customer object yang dibuat dengan Xendit. ID akan dihubungkan dengan transaksi
    payment_method_id
    opsional
    string Pengidentifikasi dari Xendit untuk token pembayaran end user yang terhubung dengan merchant. Hanya digunakan untuk saluran pembayaran yang mendukung tokenisasi pembayaran
    failure_code
    opsional
    string Alasan kegagalan pembayaran oleh end user atau eWallet issuer. Failure_code diinformasikan kepada merchant melalui webhook atau GET payment status setelah pembayaran dilakukan oleh end user
    payment_detail
    opsional
    object Berisi detail pembayaran tambahan.
    Object parameters details
    Key Value
    fund_source
    opsional
    string Jenis asal dana
    SHOPEEPAY ID - EWALLET_BALANCE, 1_MONTH_INSTALLMENT, 2_MONTH_INSTALLMENT, 3_MONTH_INSTALLMENT, 6_MONTH_INSTALLMENT, 12_MONTH_INSTALLMENT
    SHOPEEPAY MY - SHOPEEPAY_BALANCE, SPAYLATER_INSTALLMENTS_1MO, SPAYLATER_INSTALLMENTS_2MO, SPAYLATER_INSTALLMENTS_3MO, SPAYLATER_INSTALLMENTS_6MO, SPAYLATER_INSTALLMENTS_12MO
    source
    opsional
    string Nama channel
    SHOPEEPAY ID - Shopeepay
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail objek parameter
    Key Nilai
    reference_id
    wajib
    string Identifier produk yang dibuat oleh merchant <= 255 karakter
    name
    wajib
    string Nama produk
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah per unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge. Objek dapat terdiri 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
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge. Objek dapat terdiri 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 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();
    }