Pengantar
Selamat Datang! Di Xendit, misi utama kami adalah untuk menyediakan infrastruktur pembayaran untuk membantu Anda mencapai kesuksesan. Kami akan membantu Anda dalam mengurus uang masuk (menerima pembayaran) dan uang keluar (melakukan pembayaran). Pengguna kami mencakup dari platform bisnis ke perusahaan penyedia pinjaman, dan segala hal diantaranya.
API Xendit dikembangkan berdasarkan konsep REST. API kami dibuat untuk mudah dipahami, berorientasi sumber daya, dan menggunakan kode respons HTTP untuk mendeteksi jika terjadi kesalahan. Kami menggunakan fitur dan fungsi bawaan HTTP sehingga dapat dimengerti oleh klien HTTP umum. Respons API kami memiliki format JSON, termasuk juga pesan kesalahannya.
Untuk mempermudah proses eksplorasi dan pembelajaran API Xendit, kami merangkum seluruh API Xendit dalam bentuk Postman collection yang dapat Anda eksplorasi secara detil di bawah
Silakan kunjungi Panduan Postman untuk pelajari lebih lanjut!
Otentikasi
Untuk dapat sukses melakukan otentikasi dengan API Xendit, Anda harus melakukan otentikasi API key menggunakan
Basic Auth
. Anda dapat mendapatkan API key melalui Dasbor. Sebagai contoh jika API key Anda adalah
xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==
Pilih otentikasi
Basic Auth
. Masukkan nilai API key padausername
dan kosongkanpassword
Format Basic Auth
{{username}}:{{password}}
Ikuti format diatas (dengan titik dua)
xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==:
Lalu, enkripsikan ke frasa sandi Base64
eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==
Tambahkan enkripsi tersebut ke dalam HTTP(s) header
Authorization: Basic eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==
API Xendit dikembangkan berdasarkan konsep REST sehingga rapi dan mudah untuk dimengerti. Sebelum mulai menggunakan API, pastikan Anda sudah melakukan registrasi dan akun Anda sudah terotentikasi karena request API akan gagal apabila akun belum terotentikasi. Anda dapat melakukan otentikasi dengan menambahkan API key Anda ke dalam request.
Anda dapat membuat dan mendapatkan API key Anda melalui Dasbor > Pengaturan > Developers > API Keys. Untuk mempermudah Anda menggunakan API kami, kami menyediakan masing-masing API key untuk test dan live environment. Selalu jaga kerahasiaan dan keamanan API key Anda. Jangan bagikan API key Anda bila tidak diperlukan. Pelajari lebih lanjut mengenai API key disini
Berikut cara membuat API key dan melakukan otentikasi akun Anda untuk mengakses API Xendit:
- Buat API key melalui Dasbor
- Salin API key
- Gunakan Basic Access Authentication atau
BASIC AUTH
sebagai metode otentikasi di server Anda - Format
BASIC AUTH
adalah{{username}}:{{password}}
- Masukkan API key ke dalam
username
dan kosongkanpassword
. Pastikan Anda menyertakan:
di belakang - Enkripsi nilai tersebut dengan Base64
- Sertakan frasa sandi Base64 tersebut ke dalam header
Authorization
Semua request API yang dibuat harus dikirim melalui HTTPS dan bukan HTTP (request melalui HTTP akan otomatis gagal). Semua request yang dibuat dalam mode test tidak akan diteruskan ke jaringan bank sehingga tidak ada uang asli yang terlibat. Semua respon API yang dikembalikan mengikuti format bentuk JSON.
Kami menyediakan PHP client libraries untuk menghemat waktu Anda. Kami juga sedang mengembangkan libraries dan plugins untuk mempermudah penggunaan API Xendit. Bila Anda tertarik untuk berkontribusi, silahkan hubungi kami dan kami akan senang untuk mendengar dari Anda. Sekali lagi, pastikan untuk melakukan otentikasi sebelum Anda menggunakan API kami.
Libraries / SDKs
Xendit memiliki libraries untuk bahasa yang berbeda-beda. Setiap harinya, kami selalu berusaha untuk menambah jumlah libraries yang ada. Jika anda telah membuat library untuk bahasa lain dan ingin menambahkannya ke dalam daftar disini, kirimkan kepada kami link dari kode library tersebut dan kami akan menambahkannya ke daftar library yang telah ada!
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.
Produk yang didukung
- Credit/debit cards
- eWallets
- Cardless Credit
- QR Codes
- Customers
- Direct Debit
- Transfer Bank via Virtual Accounts
- Retail Outlets
- Invoices
- Recurring Payments
- Payouts
- Disbursements
- Batch Disbursements
Instalasi
Anda dapat menginstall library ini dengan menggunakan npm npm install xendit-node
atau lihat kode selengkapnya pada Github
Java
Install Xendit ke dalam kode Java anda
Maven
<dependency>
<groupId>com.xendit</groupId>
<artifactId>xendit-java-lib</artifactId>
<version>SELECTED_VERSION</version>
</dependency>
Gradle
compile 'com.xendit:xendit-java-lib:{SELECTED_VERSION}'
Import Library Xendit
import com.xendit.Xendit;
import com.xendit.exception.XenditException;
import com.xendit.model.AvailableBank;
import com.xendit.model.VirtualAccount;
Java library adalah library sisi server yang dapat membantu anda dengan mudah melakukan integrasi dengan Xendit melalui Java.
Produk yang didukung
- Credit/debit cards
- eWallets
- Cardless Credit
- Transfer bank via Virtual Accounts
- Retail Outlets
- Invoices
- Recurring Payments
- Payouts
- Disbursements
- Batch Disbursements
- Customers
- Direct Debit
Instalasi
Instalasi Library Java Xendit (Gradle dan Maven) sangat mudah dan sederhana. Untuk detail lebih lanjut mengenai langkah-langkah tersebut, lihat bagian kanan.
- Tambahkan dependensi Xendit ke dalam kode Java anda
- Import library Xendit
- Dapatkan API key anda di Dashboard untuk mulai menggunakan Xendit Java Library API.
Anda juga dapat mempelajari lebih lanjut di sumber Github kami untuk panduan instalasi yang lengkap
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
Terdapat 2 versi dari library Xendit PHP yang kami dukung:
- v2 (terbaru)
- v1
Produk yang didukung - Xendit PHP v2
- Credit/debit cards
- eWallets
- Cardless Credit
- Transfer bank via Virtual Accounts
- Retail Outlets
- Invoices
- Recurring Payments
- Payouts
- Disbursements
- Batch Disbursements
- Customers
- Direct Debit
Produk yang didukung - Xendit PHP v1
- Credit/debit cards
- Transfer bank via Virtual Accounts
- Invoices
- Disbursements
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.
Produk yang didukung
- Credit/debit cards
- eWallets
- Cardless Credit
- Transfer Bank via Virtual Accounts
- Retail Outlets
- Invoices
- Recurring Payments
- Payouts
- Disbursements
- Batch Disbursements
- Customers
- Direct Debit
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.
Produk yang didukung
- Credit/debit cards
- eWallets
- Cardless Credit
- QR Codes
- Direct Debit
- Transfer bank via Virtual Accounts
- Retail Outlets
- Invoices
- Recurring Payments
- Payouts
- Disbursements
- Batch Disbursements
Instalasi
Anda dapat menginstall library ini dengan menggunakan pip pip install xendit-python
atau lihat kode selengkapnya pada Github
C# / .NET
Instalasi melalui .NET CLI
dotnet add package Xendit.net
Instalasi melalui Package Manager
Install-Package Xendit.net
Instalasi melalui PackageReference
<PackageReference Include="Xendit.net" Version="<VERSION>" />
Lihat sumber pada Github
Library .NET adalah library sisi server yang dapat membantu anda melakukan integrasi dengan Xendit melalui bahasa pemrograman C#.
Produk yang didukung
- Customers
- Direct Debit
- Bank Transfer via Virtual Accounts
- Retail Outlets (PH)
- Invoices
- Disbursements
- eWallets
Instalasi
Anda dapat menginstall library ini dengan menggunakan .NET CLI dotnet add package Xendit.net
atau lihat kode selengkapnya pada Github dan NuGet
Android
Unduh Xendit Android SDK
https://github.com/xendit/xendit-sdk-android
Android SDK membantu Anda memproses pembayaran digital menggunakan Xendit dengan fitur sebagai berikut:
- Tokenisasi kartu kredit/debit dengan single-use token
- Tokenisasi kartu kredit/debit dengan multiple-use token
- Otentikasi transaksi kartu kredit/debit
iOS
Unduh Xendit iOS SDK
https://github.com/xendit/xendit-sdk-ios-src
iOS SDK membantu Anda memproses pembayaran digital menggunakan Xendit dengan fitur sebagai berikut:
- Tokenisasi kartu kredit/debit dengan single-use token
- Tokenisasi kartu kredit/debit dengan multiple-use token
- Otentikasi transaksi kartu kredit/debit
Request ID
Setiap permintaan API memiliki identifikasi yang terhubung dengan permintaan tersebut. Anda dapat mendapatkan informasi identifikasi permintaan API Request-ID
pada header respon. Anda dapat menggunakan Request-ID
untuk mencari log pada Log API di Dasbor. Pelajari lebih lanjut cara mencari Log API menggunakan Request-ID
pada dokumentasi API Log.
Apabila Anda perlu menghubungi kami untuk pengecekan permintaan API yang spesifik, Anda dapat memberikan informasi Request-ID kepada kami untuk pengecekan yang lebih cepat dan akurat.
Versioning
Contoh Versioning
curl https://api.xendit.co/ewallets -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H X-API-VERSION='2020-02-01' \
-d external_id='ovo-ewallet' \
-d amount=1000 \
-d phone='08123123123'\
-d ewallet_type='OVO'
Xendit selalu melakukan perkembangan terhadap API kami sebagai bentuk pertumbuhan kami bersama bisnis Anda. Kami selalu berusaha untuk membuat perubahan yang selalu kompatibel dengan versi sebelumnya. Ketika kami melakukan launching API yang tidak kompatibel dengan versi sebelumnya, kami menggunakan versioning untuk menghindari hal-hal yang tidak diharapkan seperti hal-hal yang dapat menyebabkan sistem Anda berhenti bekerja. Anda dapat melakukan upgrade ke versi terbaru kapanpun Anda siap untuk melakukannya.
Anda dapat mengunjungi Dasbor Anda untuk melihat versi API apa yang sedang berjalan. Untuk melakukan pengetesan versi API yang spesifik, Anda dapat mencantumkan versi API yang ingin anda gunakan melalui API-version
header pada request API
Header | Deskripsi |
---|---|
API-Version optional |
string Cantumkan parameter ini dalam request API untuk memilih versi API yang diinginkan. Format: YYYY-MM-DD . Contoh: 2020-02-01 Bila tidak dicantumkan, Xendit akan menggunakan versi API yang sesuai dengan settingan Anda |
Kompatibilitas Dengan Versi Sebelumnya
Perubahan-perubahan berikut merupakan perubahan API kami yang kompatibel dengan versi sebelumnya:
- Penambahan resource API yang baru
- Penambahan parameter opsional pada request API
- Penambah properti baru pada respon API
- Perubahan urutan properti pada respon API
- Perubahan panjang karakter atau format dari semua ID objek
- Penambahan kode error yang baru
- Penambahan tipe event webhook yang baru
- Penambahan properti baru pada data webhook
Panduan Migrasi
Panduan berikut dibuat untuk membantu Anda melakukan migrasi dengan aman dari versi sekarang ke versi yang terbaru:
- Tes API baru dengan menggunakan header
API-Version
di mode Test. Pastikan Anda telah menangani request, respon, error, dan callback data yang terbaru dengan benar. Skenario testing dapat dilihat di bagian Skenario Testing - Ketika semua skenario testing telah berjalan sesuai yang diharapkan, Anda dapat mengganti versi API Anda untuk mode Test di Dasbor. Ketika Anda mengganti versi API Anda melalui Dasbor, maka versi yang akan dipakai untuk pemanggilan API yang tidak mencantumkan
API-version
pada header akan sesuai dengan nilai yang ada di setingan Dasbor - Ulangi langkah nomor 1 dan 2 pada mode Live
- Ketika Anda menemukan kendala pada proses migrasi ini, Anda tetap dapat mengganti ulang ke versi API sebelumnya yang masih beroperasi
Catatan Perubahan
Versi | API | Resources Path | Catatan Perubahan |
---|---|---|---|
2020-02-21 | eWallets | /ewallets |
Pembayaran OVO diproses secara asinkron dan callback akan dikirimkan setelah pembayaran telah selesai diproses |
2019-05-01 | Credit Cards | /credit_card_charges/refunds |
Pembuatan Refund Kartu Kredit diproses secara sinkron |
Rate Limit
API Rate Limit adalah fitur yang membatasi jumlah permintaan yang dapat dibuat oleh seorang pengguna atau akun ke API dalam jangka waktu tertentu. Ini sering digunakan untuk mencegah penggunaan yang berlebihan atau tidak pantas terhadap API, dan untuk memastikan bahwa semua pengguna memiliki akses yang adil terhadap sumber daya yang disediakan oleh API.
Xendit menggunakan algoritma Sliding Window untuk menerapkan API Rate Limit. Algoritma ini membagi jangka waktu tertentu (seperti sejam atau sehari) menjadi jendela yang lebih kecil, dan melacak jumlah permintaan yang dibuat dalam setiap jendela. Misalnya, jika Rate Limit adalah 50 permintaan per detik (RPS), dan ukuran jendela adalah satu menit, algoritma akan mengizinkan hingga 3000 permintaan dalam setiap jendela satu menit.
Secara umum, API Rate Limit diatur pada 3000 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 |
Jika Anda melebihi Rate Limit untuk sebuah endpoint, Anda akan menerima kode status HTTP 429 (Too Many Requests) dengan kode kesalahan RATE_LIMIT_EXCEEDED
. Penting untuk menangani kesalahan ini dan kontrol/tunda permintaan Anda sampai kuota Rate Limit terisi kembali.
Berikut adalah beberapa praktik terbaik untuk menangani Rate Limit API dengan lancar sebagai klien:
- Implementasikan Rate Limit di aplikasi Anda: Penting untuk mengimplementasikan Rate Limit di aplikasi Anda sendiri agar tidak melebihi Rate Limit API. Ini dapat dilakukan dengan melacak jumlah permintaan yang dibuat dan waktu pembuatan mereka, serta membandingkannya dengan kebijakan Rate Limit API.
- Tangani kesalahan Rate Limit: Jika Anda menerima kode status HTTP 429 (Too Many Requests) dengan kode kesalahan
RATE_LIMIT_EXCEEDED
, penting untuk menangani kesalahan ini dengan lancar di aplikasi Anda. Salah satu cara untuk melakukannya adalah dengan mencoba meminta ulang setelah selang waktu tertentu telah berlalu, untuk memberi kuota Rate Limit kesempatan untuk terisi kembali. - Gunakan backoff eksponensial: Anda dapat implementasi backoff eksponensial saat mencoba meminta ulang setelah kesalahan Rate Limit. Ini berarti meningkatkan jumlah waktu yang Anda tunggu antara cobaan ulang dengan faktor dua (atau kelipatan lainnya) setiap kali Anda menerima kesalahan Rate Limit. Misalnya, Anda mungkin mencoba meminta ulang setelah 1 detik, kemudian 2 detik, kemudian 4 detik, dan seterusnya. Ini membantu mengurangi risiko membebani API dengan terlalu banyak cobaan ulang dalam jangka waktu yang sangat singkat.
- Gunakan caching: Menyimpan hasil permintaan API secara lokal dapat membantu mengurangi jumlah permintaan yang dibuat ke API, serta meningkatkan performa aplikasi Anda. Dengan menyimpan hasil permintaan API secara lokal dan menggunakannya kembali sampai mereka menjadi kedaluwarsa, Anda dapat mengurangi kebutuhan untuk membuat permintaan sering ke API. Dengan mengikuti praktik terbaik ini, Anda dapat membantu menjamin bahwa aplikasi Anda menangani Rate Limit dengan lancar dan memberikan pengalaman yang andal dan konsisten untuk pengguna Anda.
Kami dapat mengurangi Rate Limit untuk mencegah penyalahgunaan, atau menaikkan limit untuk aplikasi yang mempunyai traffic tinggi. Untuk meningkatkan Rate Limit untuk akun Anda, Anda dapat menghubungi kami melalui email api.xendit.co 4 minggu lebih awal dengan menyediakan informasi Business ID Anda. Kami akan meninjau permintaan Anda dan mungkin dapat meningkatkan batas tergantung pada kebutuhan aplikasi Anda dan penggunaan keseluruhan API.
Secara keseluruhan, penting bagi Anda untuk mengelola penggunaan API Anda dengan hati-hati untuk memastikan bahwa Anda tidak melebihi Rate Limit dan mengganggu layanan untuk pengguna lain. Dengan menerapkan Rate Limit dan penanganan kesalahan yang tepat dalam aplikasi Anda, Anda dapat memastikan bahwa pengguna Anda memiliki pengalaman yang stabil dan konsisten saat mengakses API.
Error
Di bawah ini adalah beberapa error paling umum dalam endpoint kami. Setiap error tertentu terletak di bawah setiap endpoint. Jika Anda memiliki pertanyaan, silakan hubungi kami
Kode Error | Deskripsi |
---|---|
400 | Request tidak diterima, error pada validasi, key belum live |
401 | Akses tidak terotorisasi, contoh: API key salah |
403 | Akses terlarang, contoh: API tidak dapat memiliki izin untuk endpoint ini |
404 | Halaman tidak ditemukan |
500 | Error tidak diketahui - hubungi kami apabila ini terjadi. Apabila ini adalah response untuk request disbursement, mohon untuk cek status pada sumber (contoh: disbursement, refund kartu kredit) sebelum mencoba lagi agar request tidak terproses dua kali |
Callback
Xendit menggunakan callback untuk memberikan notifikasi ke sistem atau aplikasi Anda ketika ada
Instalasi
Anda perlu menyediakan endpoint sistem Anda untuk menerima callback dari Xendit. Notifikasi callback yang dikirimkan akan melalui request POST ke URL yang Anda cantumkan di Dashboard. Anda dapat melakukan konfigurasi callback URL Anda melalui Pengaturan Callback. Anda juga dapat menggunakan tool seperti ngrok untuk membuat endpoint sementara untuk menerima callback pada saat melakukan testing
Upaya Pengiriman dan Pengiriman Ulang
Penjelasan mengenai upaya pengiriman callback ke sistem serta pengiriman ulang yang akan dijalankan apabila callback tidak direspon dengan baik oleh sistem Anda
Melihat Events
Anda dapat mengecek informasi-informasi perihal upaya pengiriman callback dari Xendit ke sistem Anda seperti respon terakhir dari sistem Anda, upaya-upaya pengiriman ulang, waktu untuk merespon callback, dan status HTTP yang Xendit terima untuk setiap pengiriman. Semua informasi ini dapat Anda akses melalui Callback tab
Upaya Pengiriman Ulang
Xendit akan mengirimkan callback 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 Callback Melalui Email
Anda juga dapat menerima ringkasan statistik callback 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 callback event dengan benar sangatlah krusial untuk memastikan integrasi Anda berjalan sesuai yang diharapkan
Segera Merespon Event
Bila Anda memiliki callback 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 callback Anda dianjurkan untuk dipisah agar callback diterima dengan sukses dan cepat dan tidak timeout
Penanganan Events yang duplikat
Endpoint callback 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 callback 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 callback 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 callback 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 Callback token unik untuk akun Xendit Anda yang digunakan untuk verifikasi asal mula event yang dikirimkan ke sistem Anda |
Anda dapat mengambil data callback token anda melalui Dasbor pada Pengaturan Callback. Setiap token adalah unik per environment
Balance (Saldo)
Saldo Anda mewakili uang di akun cash Xendit dan Holding Anda.
Rekening uang Tunai Anda menyimpan uang yang telah dilunasi ke rekening Anda dan tersedia untuk penarikan, pencairan, atau transaksi lainnya. Akun Holding Anda menunjukkan uang yang tidak dapat digunakan karena sedang diproses untuk penyelesaian ke akun Tunai Anda atau pencairan ke akun eksternal.
Untuk transaksi money-out, misalnya, saat melakukan pencairan, akun Tunai Anda didebit dan akun Holding Anda dikreditkan saat transaksi keluar sedang diproses. Setelah transaksi money-out berhasil, akun Holding Anda akan didebet ketika uang dikirim ke penerima yang dituju.
Untuk transaksi money-in, misalnya, ketika Anda menerima pembayaran atau dana top-up ke akun Anda, akun Holding Anda pertama kali dikreditkan saat transaksi yang masuk sedang diproses. Setelah transaksi diselesaikan, akun Holding Anda didebit dan akun Cash Anda dikreditkan saat uang dilepaskan ke akun Cash Anda.
Untuk melihat saldo Anda saat ini di setiap akun, Anda dapat mengambil Saldo Anda untuk akun Cash atau Holding Anda melalui API. Anda juga dapat mengunjungi tab Transaksi dasbor Anda untuk melihat saldo Kas Anda, atau tab Transit untuk melihat saldo Holding Anda.
Permintaan Pengecekan Saldo
Contoh Permintaan Pengecekan Saldo
curl https://api.xendit.co/balance -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$getBalance = \Xendit\Balance::getBalance('CASH');
var_dump($getBalance);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Balance } = x;
const balanceSpecificOptions = {};
const b = new Balance(balanceSpecificOptions);
const resp = await b.getBalance()
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
Balance balance = Balance.get();
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := balance.GetParams{
AccountType: "CASH",
}
resp, err := balance.Get(&data)
if err != nil {
log.Fatal(err)
}
fmt.Printf("balance: %+v\n", resp)
from xendit import Xendit, BalanceAccountType
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
Balance = xendit_instance.Balance
balance = Balance.get(
account_type=BalanceAccountType.CASH,
)
print(balance)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
BalanceClient balance = xendit.Balance;
BalanceResponse holdingBalance = await balance.Get(BalanceAccountType.Holding);
Parameter Request (Money-out read permission)
Pengecekan saldo memungkinkan Anda untuk mengetahui saldo Kas Anda dan saldo Holding Anda.
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Parameter Query | Tipe | Deskripsi |
---|---|---|
account_type optional default: CASH |
string |
Jenis akun yang dipilih (CASH atau HOLDING ). |
currency optional |
string |
Filter mata uang untuk pelanggan yang memiliki akun dengan lebih dari satu mata uang. Kolom ini bersifat opsional jika Anda hanya memiliki 1 mata uang. Jika lebih, harap pilih mata uang yang Anda inginkan. contoh: IDR , PHP , USD |
Parameter Respon
Contoh Respon Permintaan Pengecekan Saldo
{
"balance": 1241231
}
Parameter | Deskripsi |
---|---|
balance | Sisa saldo di tipe akun yang ditentukan dalam permintaan API anda |
Customers
API yang berguna untuk melakukan request yang terkait dengan customer. Dengan API ini anda bisa membuatkan profil customer anda, bisnis atau individual, beserta status KYC pendaftarannya, dan informasi lainnya. API ini berguna untuk anda yang menggunakan berbagai macam API pembayaran Xendit, termasuk penggunaan channel pembayaran Direct Debit, atau untuk memenuhi informasi KYC untuk registrasi transfer.
Customer Object
Customer Object adalah struktur data standar yang memuat informasi salah satu customer anda. Komponen-koponen utama yang dimiliki adalah:
- Tipe customer (Individual atau Business)
- Deskripsi customer
- Alamat customer
- Akun identitas dan dokumen KYC yang menandakan legitimasi customer
- Metadata lainnya
Ketika satu (atau lebih) customer dikembalikan oleh endpoint yang ada di bagian ini, body response akan memuat Customer Object (atau array dari beberapa Customer Object). Setiap object memiliki struktur berikut:
Contoh Customer Object - Individual
{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe",
"nationality": "ID",
"place_of_birth": "Jakarta",
"date_of_birth": "1980-01-01",
"gender": "MALE",
"employment": {
"employer_name": "Xendit",
"nature_of_business": "Payment Gateway",
"role_description": "Test dummy"
}
},
"business_detail": null,
"email": "customer@website.com",
"mobile_number": "+628121234567890",
"phone_number": "+628121234567890",
"addresses": [{
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "993448",
"country": "ID",
"category": "HOME",
"is_primary": true
}],
"identity_accounts": [{
"type": "CREDIT_CARD",
"company": "OCBC",
"description": "My account",
"country": "ID",
"properties":{
"token_id": "586f0ba2ab70de5d2b409e0d"
}
}],
"kyc_documents": [{
"type": "IDENTITY_CARD",
"sub_type": "NATIONAL_ID",
"country": "ID",
"document_name": "KTP",
"document_number": "12356789012456",
"expires_at": null,
"holder_name": "John Doe",
"document_images": [
"file-ec700c1c-db17-4496-b1fb-04ebe551b412"
]
}],
"description": "My first customer",
"date_of_registration": "2020-03-30",
"domicile_of_registration": "ID",
"metadata": {
"foo": "bar"
},
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}
Example Customer Object - Business
{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "BUSINESS",
"individual_detail": null,
"business_detail": {
"business_name": "ACME Corp",
"business_type": "CORPORATION",
"nature_of_business": null,
"business_domicile": null,
"date_of_registration": null
},
"email": "customer@website.com",
"mobile_number": null,
"phone_number": null,
"addresses": [],
"identity_accounts": [],
"kyc_documents": [],
"description": null,
"metadata": null,
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string |
Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-... |
||||||||||||||||||||||||||||||||||||||||||||||||
reference_idrequired |
string |
Identifikasi customer dari merchant | ||||||||||||||||||||||||||||||||||||||||||||||||
typerequired |
string |
Tipe customer. Nilai-nilai yang didukung: INDIVIDUAL , BUSINESS |
||||||||||||||||||||||||||||||||||||||||||||||||
individual_detailoptional |
object |
Objek JSON yang memuat informasi individual. Akan kosong apabila type bukan INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailoptional |
object |
Objek JSON yang memuat detail bisnis. Akan kosong apabila type bukan BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor telepon customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak tambahan customer dalam format E.164. Bisa juga telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat email customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objek JSON yang memuat informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsrequired |
array |
Array dari objek JSON dengan informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkait dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan dapat menyimpan informasi akun untuk eksekusi pembayaran dalam ekosistem API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsrequired |
array |
Array dari objek JSON berisi dokumen KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi customer dari merchant.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Objeck dari informasi tambahan yang diberikan pada saat pembuatan customer | ||||||||||||||||||||||||||||||||||||||||||||||||
createdrequired |
string |
Timestamp pembuatan customer dalam format ISO | ||||||||||||||||||||||||||||||||||||||||||||||||
updatedrequired |
string |
Timestamp perubahan status customer terakhir dalam format ISO |
Create Customer
Lakukan request POST ke endpoint ini untuk membuat customer untuk penggunaan nanti dengan endpoint-endpoint pembayaran.
Endpoint: Create Customer
POST https://api.xendit.co/customers
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Create Customer
curl https://api.xendit.co/customers -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H 'Content-Type: application/json'
--data-raw '{
"reference_id": "demo_1475801962607"
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}'
<?php
$url = "https://api.xendit.co/customers";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$data = [
"reference_id" => "demo_1475801962607"
"type" => "INDIVIDUAL",
"individual_detail" => [
"given_names" => "John",
"surname" => "Doe"
],
"email" => "customer@website.com",
"mobile_number" => "+628121234567890"
];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
var reqBody = JSON.stringify({
"reference_id": "demo_1475801962607"
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"});
var requestOptions = {
method: 'POST',
headers: headers,
body: reqBody,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload = {
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;
CustomerParameter individualParameter = new CustomerParameter
{
ReferenceId = "demo_11212163",
Type = CustomerType.Individual,
IndividualDetail = new IndividualDetail
{
GivenNames = "John",
Gender = CustomerGender.Male,
},
IdentityAccount = new IdentityAccount[]
{
new IdentityAccount
{
Country = Country.Indonesia,
Type = CustomerIdentityAccountType.BankAccount,
Properties = new IdentityAccountProperties { AccountNumber = "account_number" }
}
},
KycDocuments = new KycDocument[]
{
new KycDocument
{
Country = Country.Indonesia,
Type = CustomerKycDocumentType.IdentityCard,
SubType = CustomerKycDocumentSubType.NationalId,
}
},
};
CustomerResponse individualCustomerVersion20201031 = await customer.Create(individualParameter);
Header Parameter | Tipe | Deskripsi |
---|---|---|
IDEMPOTENCY-KEYoptional |
string |
Kode unik untuk mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh environment development & production.
|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API tertentu. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
reference_idrequired |
string |
Pengidentifikasi customer yang diberikan oleh merchant. Request dengan reference_id duplikat akan mengembalikan error. Anda harus melakukan PATCH request pada resource customer object.
|
||||||||||||||||||||||||||||||||||||||||||||||||
typerequired |
string |
Tipe customer. Nilai-nilai yang didukung: INDIVIDUAL , BUSINESS |
||||||||||||||||||||||||||||||||||||||||||||||||
individual_detailconditionally required |
object |
Object JSON yang memuat informasi individual. Dibutuhkan apabila tipe adalah INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailconditionally required |
object |
Object JSON object yang memuat informasi bisnis. Dibutuhkan apabila tipe adalah BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor HP customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak tambahan customer dalam format E.164. Bisa sebagai telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
hashed_phone_numberoptional |
string |
Hashed phone number
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat email customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objeck JSON yang memuat informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsoptional |
array |
Array objek JSON yang memuat informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkair dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan informasi akun untuk eksekusi pembayaran dalam ekosistem pembayaran dengan API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsoptional |
array |
Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi customer yang diberikan merchant.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Objek dari informasi tambahan yang berhubungan dengan customer. Definisikan sifat dan nilai JSON sesuai yang dibutuhkan untuk meneruskan informasi melalui API. Anda bisa melakukan spesifikasi sampai 50 kunci, dengan nama kunci sampai 40 karakter dan nilai sampai 500 karakter. Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit. |
Parameter Respon
Respon sukses akan berisi satu Customer Object
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DUPLICATE_ERROR409 |
Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik. |
IDEMPOTENCY_ERROR409 |
Idempotency-key telah digunakan sebelumnya. Gunakan idempotency-key yang unik dan coba kembali. |
Get Customer
Untuk mendapatkan satu objek customer
Endpoint: Get Customer
GET https://api.xendit.co/customers/:id
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Get Customer
curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
--header 'API-VERSION: 2020-10-31'
<?php
$url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$headers[] = "API-VERSION: 2020-10-31";
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
headers.append("API-VERSION", "2020-10-31");
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := customer.getCustomer{
id: 'cust-239c16f4-866d-43e8-9341-7badafbc019f'
}
resp, err := customer.getCustomer(&getCustomerByReferenceIDData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("retrieved customer: %+v\n", resp)
try {
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
Customer[] customers = Customer.getCustomer("cust-239c16f4-866d-43e8-9341-7badafbc019f");
} catch (XenditException e) {
e.printStackTrace();
}
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-... |
Parameter Respon
Respon sukses akan berisi satu Customer Object
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND404 |
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali |
Get Customer by Reference ID
Untuk mendapatkan array customer objek sesuai dengan reference_id
- pengidentifikasi yang anda berikan
Endpoint: Get Customer menggunakan Reference ID
GET https://api.xendit.co/customers?reference_id={reference_id}
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Get Customer menggunakan Reference ID
curl https://api.xendit.co/customers?reference_id=demo_1475801962607 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$url = "https://api.xendit.co/customers";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$queryString = "?reference_id=demo_1475801962607";
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url.$queryString);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
let queryString = "?reference_id=demo_1475801962607";
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url + queryString, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers?reference_id=demo_1475801962607"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Query Parameter | Tipe | Deskripsi |
---|---|---|
reference_idrequired |
string |
Pengidentifikasi anda untuk customer |
Parameter Respon
Contoh respon sukses Get Customer menggunakan Reference ID
{
"data": [{
"id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "demo_1475801962607",
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe",
"nationality": null,
"place_of_birth": null,
"date_of_birth": null,
"gender": null,
"employment": null
},
"business_detail": null,
"email": "customer@website.com",
"mobile_number": null,
"phone_number": null,
"hashed_phone_number": null,
"addresses": [],
"identity_accounts": [],
"kyc_documents": [],
"description": null,
"metadata": null,
"created": "2020-03-30T06:12:47.212Z",
"updated": "2020-03-30T06:12:47.212Z"
}],
"has_more": false
}
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi |
---|---|---|
data | array |
Array dari Customer Objects yang dikembalikan oleh query. Array bisa kosong |
has_more | boolean |
Mengidentifikasi apakah ada item lainnya yang dapat di-query dengan after_id dari item terakhir pada hasil sekarang |
Kode Error
Lihat lainnya error pada umumnya di sini.
Update Customer
Lakukan request PATCH ke endpoint ini untuk melakukan update pada data customer Anda. Anda hanya dapat mengubah data-data sesuai dengan parameter yang tersedia pada request. Perubahan apapun pada field-field di objek customer akan menggantikan data tersebut secara keseluruhan.
Apabila anda ingin menambahkan data pada suatu array, request PATCH Anda harus memiliki kondisi akhir array yang diinginkan (contoh, konten yang ada sekarang dan elemen array baru yang ingin anda tambahkan). Berikan nilai NULL untuk menghapus konten yang ada sekarang.
Perhatikan bahwa reference_id
dan type
pada suatu customer tidak dapat di-update.
Endpoint: Update Customer
PATCH https://api.xendit.co/customers/:id
Versi
Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2020-10-31 (terbaru) | Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum |
2020-05-19 | Versi asli |
Parameter Request
Contoh Request Update Customer
curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X PATCH \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H 'Content-Type: application/json'
--data-raw '{
"individual_detail": {
"given_names": "Jane",
"surname": "Doe"
}
}'
<?php
$url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$headers[] = "Content-Type: application/json";
$data = [
"individual_detail" => [
"given_names" => "Jane",
"surname" => "Doe"
]
];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
var reqBody = JSON.stringify({
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"});
var requestOptions = {
method: 'PATCH',
headers: headers,
body: reqBody,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload = {
"type": "INDIVIDUAL",
"individual_detail": {
"given_names": "John",
"surname": "Doe"
},
"email": "customer@website.com",
"mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;
CustomerParameter individualParameter = new CustomerParameter
{
Type = CustomerType.Individual,
IndividualDetail = new IndividualDetail
{
GivenNames = "John",
Gender = CustomerGender.Male,
}
};
CustomerResponse individualCustomerVersion20201031 = await customer.Update(individualParameter);
Header Parameter | Tipe | Deskripsi |
---|---|---|
API-VERSIONoptional |
string |
Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini. |
for-user-idoptional |
string |
User-id yang Anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut. |
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
individual_detailoptional |
object |
Objek JSON object yang memuat detil individu. Akan gagal validasi API apabila type bukan INDIVIDUAL
Parameter detail individu
|
||||||||||||||||||||||||||||||||||||||||||||||||
business_detailoptional |
object |
Objek JSON object yang memuat detil bisnis. Akan gagal validasi API apabila type bukan BUSINESS
Parameter detail bisnis
|
||||||||||||||||||||||||||||||||||||||||||||||||
mobile_numberoptional |
string |
Nomor seluler dari customer dalam format E.164
|
||||||||||||||||||||||||||||||||||||||||||||||||
phone_numberoptional |
string |
Nomor kontak customer tambahan dalam format E.164. Bisa sebagai telepon rumah
|
||||||||||||||||||||||||||||||||||||||||||||||||
emailoptional |
string |
Alamat e-mail customer
|
||||||||||||||||||||||||||||||||||||||||||||||||
addressesoptional |
array |
Array dari alamat objek JSON yang memuat berbagai informasi alamat customer.Parameter alamat
|
||||||||||||||||||||||||||||||||||||||||||||||||
identity_accountsoptional |
array |
Array dari objek JSON dengan informasi yang terkait dengan finansial, media sosial, atau akun lain yang berhubungan dengan customer. Array ini dapat menyimpan informasi untuk tujuan KYC dan mendukung penyimpanan informasi akun untuk melakukan pembayaran dalam ekosistem API Xendit.Parameter akun identitas
|
||||||||||||||||||||||||||||||||||||||||||||||||
kyc_documentsoptional |
array |
Array objek JSON dengan dokumen yang dikumpulkan untuk KYC customer ini. Parameter dokumen kyc
|
||||||||||||||||||||||||||||||||||||||||||||||||
descriptionoptional |
string |
Deskripsi yang diberikan merchant untuk customer.
|
||||||||||||||||||||||||||||||||||||||||||||||||
date_of_registrationoptional |
string |
Tanggal dimana akun pembeli sudah dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
domicile_of_registrationoptional |
string |
Negara dimana akun pembeli ini dibuat di dalam website merchant
|
||||||||||||||||||||||||||||||||||||||||||||||||
metadataoptional |
object |
Informasi tambahan objek yang berhubungan dengan customer. Definisikan sifat JSON dan nilai-nilai sesuai yang dibutuhkan untuk meneruskan informasi via API. Anda bisa menetapkan sampai 50 kunci, dengan kata kunci sampai 40 karakter dan nilai-nilai sampai 500 karakter. Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit. |
Parameter Respon
Respon sukses akan berisi satu Customer Object dengan konten yang diperbarui
Kode Error
Lihat lainnya error pada umumnya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND404 |
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali |
Files
API untuk anda melakukan operasi terkait file kustomer anda. Dapat digunakan untuk file customer bersifat bisnis dan individu untuk kebutuhan KYC dan bukti untuk chargeback
Upload File
Lakukan request POST ke endpoint ini untuk mengupload file untuk KYC atau Chargeback Evidence. Saat ini kami mendukung penguploadan file PNG, JPG/JPEG, PDF yang kurang dari 10 MB.
Endpoint: Upload File
POST https://api.xendit.co/files
Parameter Request
Contoh Request Upload File
curl https://api.xendit.co/files -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
--form 'file=@/Users/utkarshagarwal/Desktop/Screenshot 2020-10-13 at 5.28.45 PM.png' \
--form 'purpose=CHARGEBACK_EVIDENCE'
<?php
$url = "https://api.xendit.co/files";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
$headers = [];
$headers[] = "Content-Type: application/json";
$payload = array('file'=> new CURLFILE('~/yourpath/file.png'),'purpose' => 'CHARGEBACK_EVIDENCE');
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let url = "https://api.xendit.co/files";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var formdata = new FormData();
formdata.append("file", fileInput.files[0], "file.png");
formdata.append("purpose", "CHARGEBACK_EVIDENCE");
var requestOptions = {
method: 'POST',
headers: headers,
body: formdata,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={'purpose': 'CHARGEBACK_EVIDENCE'}
files=[
('file', open('/yourpath/file.png','rb'))
]
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Body Parameter | Tipe | Deskripsi |
---|---|---|
purposerequired |
string |
Tujuan dari file yang terupload Nilai-nilai yang didukung: KYC_DOCUMENT , CHARGEBACK_EVIDENCE |
filerequired |
file |
File itu. Nilai-nilai yang didukung: application/pdf , image/png , image/jpg , image/jpeg |
Parameter Respon
Contoh Respon Sukses Upload File
{
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
"purpose": "CHARGEBACK_EVIDENCE",
"created": "2020-10-08T06:38:33.479Z",
"updated": "2020-10-08T06:38:33.479Z",
"type": "image/png",
"size": 10000,
"url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
purposerequired |
string |
Tujuan dari file yang terupload |
createdrequired |
string |
UTC Timestamp pembuatan file dalam format ISO |
updatedrequired |
string |
UTC Timestamp perubahan file terakhir dalam format ISO |
typerequired |
string |
Tipe file |
sizerequired |
integer |
Ukuran file dalam satuan bytes |
urlrequired |
string |
URL untuk mengunduh file |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Validasi input gagal. Field errors dalam response akan merincikan fields yang melanggar validasi. |
FILE_TOO_LARGE 413 |
Ukuran file lebih besar dari 2.000.000 byte dan melebihi batas ukuran. Kecilkan payload sebelum mencoba kembali. |
UNSUPPORTED_CONTENT_TYPE415 |
Format file tidak didukung. Lihat kembali tipe file sebelum mencoba lagi. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
RATE_LIMIT_EXCEEDED 429 |
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama. |
Get File by Id
Melakukan request GET ke endpoint ini untuk mendapatkan informasi detail dari file
Endpoint: Get File
GET https://api.xendit.co/files/{file-id}
Contoh Request Get File
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId;
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Parameter Respon
Contoh Respon Sukses Get File
{
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
"purpose": "CHARGEBACK_EVIDENCE",
"created": "2020-10-08T06:38:33.479Z",
"updated": "2020-10-08T06:38:33.479Z",
"type": "image/png",
"size": 10000,
"url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
purposerequired |
string |
Tujuan dari file yang terupload |
createdrequired |
string |
UTC Timestamp pembuatan file dalam format ISO |
updatedrequired |
string |
UTC Timestamp perubahan file terakhir dalam format ISO |
typerequired |
string |
Tipe file |
sizerequired |
integer |
Ukuran file dalam satuan bytes |
urlrequired |
string |
URL untuk mengunduh file |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
Download File by Id
Melakukan request GET ke endpoint ini untuk mengunduh file
Endpoint: Download File
GET https://api.xendit.co/files/{file-id}/download
Example Download File Request
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download --request GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId . "/download";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId+"/download";
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response)
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
RATE_LIMIT_EXCEEDED 429 |
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama. |
Delete File by Id
Melakukan request DELETE ke endpoint ini untuk menghapus file
Endpoint: Delete File
DELETE https://api.xendit.co/files/{file-id}
Contoh request menghapus file
curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request DELETE \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php
$fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
$url = "https://api.xendit.co/files/" . $fileId;
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$headers = [];
$curl = curl_init();
$payload = json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;
var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var requestOptions = {
method: 'DELETE',
headers: headers,
redirect: 'follow'
};
fetch(url, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import requests
import base64
api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}
auth_token = 'Basic ' + base64_token
headers = {
'Authorization': auth_token
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
Parameter Respon
Contoh respon sukses menghapus file
{
"is_deleted": true,
"id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
"business_id": "b647524d-9c5d-414c-843a-3c819853d6b0"
}
Body Parameter | Tipe | Deskripsi |
---|---|---|
idrequired |
string |
ID unik yang di generate oleh Xendit untuk setiap file |
business_idrequired |
string |
ID bisnis yang terdaftar di Xendit |
is_deletedrequired |
boolean |
Status penghapusan |
Kode Error
Lihat contoh error lainya di sini.
Kode Error | Deskripsi |
---|---|
DATA_NOT_FOUND 404 |
File tidak ditemukan |
Laporan
Sebuah API unutk menghasilkan dan mendapatkan laporan. Laporan yang tersedia adalah Laporan Saldo dan Transaksi. Anda dapat menggunakan endpoint ini untuk menghasilkan laporan secara otomatis. Anda dapat menggunakan isi dari laporan untuk melakukan rekonsiliasi. Isi dari laporan pada API ini sama persis dengan yang dapat anda peroleh dari mengunduh di dashboard.
Objek Laporan
Contoh Objek Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "COMPLETED",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body | Tipe | Deskripsi | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
Id unik dari laporan. Id ini akan memiliki prefiks report_ . |
||||||||
type required |
string |
Tipe dari laporan. Tipe yang tersdia:
| ||||||||
filter required |
object |
Filter yang diterapkan pada laporan.Parameter Filter
|
||||||||
format required |
string |
Format dari laporan. Format yang tersedia adalah CSV . |
||||||||
status required |
string |
Status dari laporan. Status awal akan PENDING ketika Anda menghasilkan laporan melalui API.
|
||||||||
url optional |
string |
URL untuk mengunduh laporan setelah berhasil. Laporan hanya dapat diundah dalam waktu 24 jam. Ketika url kedaluwarsa, Anda harus mengirim permintaan ulang untuk menghasilkan laporan. |
||||||||
currency required |
string |
Mata uang di dalam laporan Lihat daftar mata uang yang didukung. |
||||||||
business_id required |
string |
Id dari bisnis Xendit tempat transaksi dilakukan. | ||||||||
created required |
string (ISO 8601 |
Waktu ketika laporan pertama kali diminta pada UTC+0. | ||||||||
updated required |
string (ISO 8601 |
Waktu ketika laporan diperbarui pada UTC+0. |
Menghasilkan Laporan
Endpoint: Menghasilkan Laporan
POST https://api.xendit.co/reports
Gunakan endpoint ini untuk menghasilkan laporan. Anda dapat menentukan tipe dan filter dari konten yang ada pada laporan. Alur dari endpoint ini bersifat asynchronous
. Ini berarti Xendit akan mengirimkan callback
kepada Anda ketika laporan selesai dibuat. Lihat notifikasi laporan untuk informasi lebih lanjut. Cara lainnya, Anda dapat menggunakan endpoint mendaptakan laporan untuk melihat detail dan status dari laporan.
Parameter Request
Header Parameter | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. |
.
Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.
Contoh Permintaan Menghasilkan Laporan
curl https://api.xendit.co/reports -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-d type=BALANCE_HISTORY \
-d currency=IDR
Contoh Respon Menghasilkan Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "PENDING",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body | Tipe | Deskripsi | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
type required |
string |
Tipe dari laporan yang akan dihasilkan. Tipe yang tersdia:
| ||||||||
filter required |
object |
Filter yang diterapkan pada laporan. Parameter Filter
Kombinasi dari from dan to harus kurang dari 31 hari. |
||||||||
format optionaldefault:
|
string |
Format dari laporan. Format yang tersedia adalah CSV . |
||||||||
currency optionaldefault:
|
string |
Mata uang untuk difilter Lihat daftar mata uang yang didukung. |
||||||||
report_version optional |
string |
Parameter ini mengindikasikan versi report/laporan yang hendak Anda gunakan. Parameter ini hanya hanya tersedia untuk Laporan Transaksi (Transactions Report) Nilai default: VERSION_0 Nilai versi <> perubahan: |
Parameter Respon
Mengembalikan Objek Laporan dengan kode status 201
Kode Error
Lihat daftar kode error umum lainnya disini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
INVALID_DATE_RANGE400 |
Rentang dari filter from dan to terlalu besar. Harap kurangi rentang sesuai batasan yang ada pada parameter. |
Mendapatkan Laporan
Endpoint: Mendapatkan Laporan
GET https://api.xendit.co/reports/{report_id}
Gunakan endpoint ini untuk mengapatkan detail laporan secara spesifik berdasarkan id. Anda dapat menggunakan endpoint ini sebagai alternatif dibandingkan menggukanakan callback laporan.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
The sub-account user-id that you want to get this transaction for. This header is only used if you have access to xenPlatform. See xenPlatform for more information |
Contoh Mendapatkan Laporan
curl https://api.xendit.co/transactions/report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Contoh Respon Mendapatkan Laporan
{
"id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
"type": "BALANCE_HISTORY",
"status": "COMPLETED",
"filter": {
"from": "2021-06-23T04:01:55.574Z",
"to": "2021-06-24T04:01:55.574Z"
},
"format": "CSV",
"url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
"currency": "IDR",
"business_id": "5f34f60535ba7c1c0eed846a",
"created": "2021-06-24T04:01:55.570Z",
"updated": "2021-06-24T04:01:55.570Z"
}
Parameter Path | Tipe | Deskripsi |
---|---|---|
report_id required |
string |
The id of report. |
Parameter Respon
Mengembalikan Objek Laporan dengan kode status 200
Kode Error
Lihat daftar kode error umum lainnya disini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
Notifikasi Laporan
Endpoint: Notifikasi Laporan
POST https://yourcompany.com/report_callback_url
Xendit mengirim notifikasi pembayaran ke sistem Anda melalui callback. Anda perlu mempersiapkan URL untuk menerima callback dan mendaftarkan URL tersebut melalui Setelan Callback pada Dasbor Xendit.
Ketika pembayaran berhasil diproses, Xendit mengirimkan pesan ke URL menggunakan metode POST secara langsung melalui callback. Xendit turut melampirkan x-callback-token
header yang dapat Anda validasi dengan Token Verifikasi di Setelan Callback untuk mengecek keaslian pesan tersebut.
Kami harap sistem Anda dapat merespon callback dengan status 200
secepatnya. Xendit mengganggap callback 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 Callback bila diperlukan. Terakhir, Anda juga dapat menerima email callback setiap 6 jam untuk mengecek sistem callback Anda secara berkala.
Pelajari lebih lanjut mengenai Callback.
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}}/{{callback_url}}'
Parameter Body | Tipe | Deskripsi | ||||||
---|---|---|---|---|---|---|---|---|
event required |
string |
Tipe dari notifikasi. Tipe yang tersedia:
| ||||||
Report Object |
Parameter lainnya sama dengan objek laporan. |
Laporan Riwayat Saldo
Laporan riwayat saldo adalah laporan yang menunjukkan daftar riwayat dari pergerakan saldo pada akun anda. Laporan ini sama dengan laporan pada Menu Saldo di dashboard. Anda dapat menggukan laporan ini untuk memeriksa saldo harian atau melakukan rekonsiliasi antara data transaksi Anda dengan saldo yang berubah pada akun. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe BALANCE_HISTORY
.
Kolom Laporan
Kolom | Deskripsi | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product Id | ID yang dihasilkan oleh Xendit untuk tiap produk | ||||||||||||||||||||||||
Transaction Id | Id unik Xendit yang dihasilkan pada setiap transaksi. Anda dapat menggunakan id ini untuk mencocokkan transaksi dan biayanya, atau mencocokkan antara transaksi pada laporan transaksi dan riwayat saldo. | ||||||||||||||||||||||||
Transaction Type | Daftar tipe transaksi:
|
||||||||||||||||||||||||
Line Type | Tipe baris yang tersedia:
|
||||||||||||||||||||||||
Payment Channel | Kanal untuk mengidentifikasi sumber dari transaki. Lihat kode kanal untuk informasi lebih lanjut. |
||||||||||||||||||||||||
Reference | Id yang dihasilkan oleh Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan ‘external_id’ | ||||||||||||||||||||||||
Currency | Mata uang transaksi. Lihat daftar mata uang yang didukung. |
||||||||||||||||||||||||
Amount | Nominal dari transaksi. Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217. |
||||||||||||||||||||||||
Balance | Saldo Anda pada transaksi ini. | ||||||||||||||||||||||||
Debit or Credit |
|
||||||||||||||||||||||||
Created Date ISO | Waktu ketika transaksi dibuat berdasarkan format ISO 8601. | ||||||||||||||||||||||||
Timezone | Zona waktu dengan format “+XXXX UTC”. Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna. |
||||||||||||||||||||||||
Created Date | Waktu ketika transaksi dibuat. | ||||||||||||||||||||||||
Payment Date | Waktu ketika pembayaran diterima tetapi belum masuk ke saldo Anda. Hanya tersedia untuk transaksi pembayaran. | ||||||||||||||||||||||||
Settlement Date | Waktu ketika pembayaran diterima dan ditambahkan pada saldo Anda. Hanya tersedia untuk transaksi pembayaran. | ||||||||||||||||||||||||
Completed Date | Waktu ketika dana telah dikirimkan ke penerima. Hanya tersedia untuk transaksi disbursement. | ||||||||||||||||||||||||
Bank Code | Kode bank yang digunakan sebagai sumber atau tujuan transaksi. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT . |
||||||||||||||||||||||||
Name | Nama dari VA atau penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT .. |
||||||||||||||||||||||||
Account Number | Nomor rekening VA atay penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT . |
||||||||||||||||||||||||
Description | Deskripsi dari transaksi. | ||||||||||||||||||||||||
Invoice ID | Id invoice. Hanya tersedia untuk pembayaran melalui invoice.. | ||||||||||||||||||||||||
Bank Reference | Referensi bank yang digunakan unuk transaksi DISBUSEMENT |
Laporan Transaksi
Laporan transaksi adalah laporan yang menunjukkan semua transaksi yang ada entah transaksi itu telah masuk ke saldo atau tidak. Laporan ini tidak akan menunjukkan topup dan withdrawal yang bukan merupakan transaksi. Laporan ini sama dengan laporan pada Menu Transaksi di dashboard. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe TRANSACTIONS
.
Kolom Laporan
Kolom | Deskripsi | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Status dari transaksi
|
||||||||||||||
Type | Tipe dari transaksi
|
||||||||||||||
Channel | Kanal untuk mengidentifikasi sumber dari transaksi. Kanal yang tersedia untuk tiap tipe adalah:
|
||||||||||||||
Channel Name | Nama kanal yang tersedia akan berbeda untuk tiap kanal. Lihat kode kanal untuk informasi lebih lanjut |
||||||||||||||
Account Number | Nomor akun yang digunakan pada transaksi. Hal ini akan berbeda untuk tiap kanal. Sebagai contoh, pada kanal CARD ini akan berupa sebagian nomor kartu kredit dan pada kanal BANK akan berupa nomor rekening. |
||||||||||||||
Currency | Mata uang transaki. See our supported currencies. |
||||||||||||||
Amount | Nominal dari transaksi. Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217. |
||||||||||||||
Fee Amount | Nominal dari biaya. | ||||||||||||||
VAT Amount | Nominal PPN dari transaski | ||||||||||||||
Net Amount | Nominal bersih transaksi setelah dikurangi biaya dan pajak. | ||||||||||||||
Reference | Refernsi dari transksi. Ini dihasilkan dari sisi Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan External Id | ||||||||||||||
Transaction Id | Id dari transaksi | Invoice Id | Id dari invoice. Jika ini transaksi pembayaran menggunakan invoice. | Batch Id | Id batch settlement untuk transaksi kartu kredit | Payment Id | Id pembayaran yang dihasilkan oleh Xendit dan sama dengan id pada produk | Payment Date | Waktu ketika pembayaran tercatat di Xendit | Timestamp - Created | Waktu ketika transaksi dibuat pertama kali | Timestamp - Updated | Waktu ketika transaksi diperbarui | Timestamp - Settled | Waktu ketika transaksi telah masuk ke saldo Anda |
Timezone | Zona waktu dengan format “+XXXX UTC”. Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna. |
||||||||||||||
Description | Deskripsi transaksi | ||||||||||||||
Channel Reference | Referensi yang dihasilkan oleh mitra kanal kami. Ini dapat digunakan untuk rekonsiliasi antara sisi Anda, Xendit, dan mitra kami. |
Transaksi
Sebuah API untuk mencari dan melihat transaksi. Transaksi yang ada meliputi uang masuk, uang keluar, dan transfer yg terjadi dalam akun. Anda dapat menggunakan endpoint tunggal ini untuk mendapatkan status transaksi dan melakukan rekonsiliasi. API ini sama persis dengan menu transaksi yang ada di dashboard. Lihat dokumentasi kami tentang petunjuk penggunan menu transaksi untuk rekonsiliasi.
Objek Transaksi
Contoh Objek Transaksi
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23232",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"status": "SUCCESS",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z",
"fee": {
"xendit_fee": 1500,
"value_added_tax": 500,
"xendit_withholding_tax": 0,
"third_party_withholding_tax": 0,
"status": "COMPLETED"
}
}
Body Parameter | Type | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
Id unik dari transaksi. Id akan memiliki prefiks txn_ . |
||||||||||||||||||||||||||||
product_id required |
string |
Id produk dari sebuah transaksi. Id ini akan memiliki prefiks yang berbeda untuk tiap produk. Anda dapat menggukana id ini untuk mencocokkan antara transaksi dari API ini ke tiap API produk. | ||||||||||||||||||||||||||||
type required |
string |
Tipe dari transaksi. Tipe yang tersedia::
| ||||||||||||||||||||||||||||
channel_code optional |
string |
Kanal dari transaksi yang digunakan. Lihat kode kanal untuk daftar kanal yang ada tiap kategori. |
reference_id required |
string |
Referensi dari sebuat transaksi Untuk beberapa produk, referensi lebih dikenal dengan external_id . Ini adalah id yang dibuat oleh Anda dan dapat digunakan untuk rekonsiliasi.. |
account_identifier optional |
string |
Account identifer atau pengenal dari akun yang digunakan untuk setiap transaksi. Formatnya akan berbeda untuk setiap jeniis kanal transaksi. Sebagai contoh, pada kanal BANK akan berisi nomer rekining dan pada CARD akan berisi sebagian nomor kartu kredit. |
currency optional |
string (ISO 4217) |
ata uang transaksi. Lihat daftar mata uang yang didukung oleh Xendit. |
amount required |
number |
Nominal dari transaksi. Jumlah angka desimal akan berbeda untuk tiap mata uang sesuai ISO 4217. |
net_amount required |
number |
Nominal bersih dari transaksi yang telah dipotong biaya dan pajak.. | cashflow required |
string |
Menunjukkan apakah transaksi uang masuk atau uang keluar. Untuk transfer, transfer keluar akan tercatat sebagai uang keluar dan transfer masuk sebagai uang masuk. Nilai yang tersedia adalah MONEY_IN untuk uang masuk and MONEY_OUT untuk uang keluar. |
||||||||||
status required |
string |
string | Status transaksi. Status yg tersedia:
| channel_category required |
string |
Kategori kanal dari transaksi untuk mengidentifikasi sumber dari transaksi kanal yang tersedia untuk tiap tipe adalah:
|
|||||||||||||||||||||||||
business_id required |
string |
Id dari bisnis yang melakukan transaksi ini. | ||||||||||||||||||||||||||||
created required |
string (ISO 8601) |
Waktu ketika transaksi ini dibuat saat UTC+0. | ||||||||||||||||||||||||||||
updated required |
string (ISO 8601) |
Waktu terakhir ketika transaksi ini diperbarui saat UTC+0. | ||||||||||||||||||||||||||||
fee required |
object |
| ||||||||||||||||||||||||||||
settlement_status optional |
string |
Status settlement akan muncul untuk transaksi uang masuk. Untuk transaksi uang keluar, nilainya adalah NULL
|
||||||||||||||||||||||||||||
estimated_settlement_time optional |
string (ISO 8601) |
Estimated settlement time akan muncul untuk transaksi uang masuk. Untuk transaksi uang keluar, nilainya adalah NULL Estimasi tanggal dan jam di mana nominal transaksi akan ter-settle ke saldo merchant. Contoh: "2022-04-26T08:44:39.566Z" |
Mendapatkan Transaksi
Endpoint: Mendapatkan Transaksi
GET https://api.xendit.co/transactions/{transaction_id}
Gunakan endpoint ini untuk mendaptkan sebuah detail transaksi yang spesifik berdasarkan id transaksi. Jika Anda ingin melakukan pencarian menggunakan parameter lain atau menginginkan hasil yang banyak, lihat mendapatkan daftar transaksi
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut. |
Contoh Permintaan Mendapatkan Transaksi
curl https://api.xendit.co/transactions/txn_13dd178d-41fa-40b7-8fd3-f83675d6f413 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Contoh Respon Mendapatkan Transaksi
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23232",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z"
}
Parameter Path | Tipe | Deskripsi |
---|---|---|
transaction_id required |
string |
Id dari transaksi. |
Parameter Respon
Mengembalikan Objek Transaksi dengan kode HTTP status 200
Kode Error
Lihat contoh umum error lainya di sini.
Kode Error | Deskripsi |
---|---|
TRANSACTION_NOT_FOUND404 |
Transaksi dengan id ini tidak ditemukan. |
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
Mendapatkan Daftar Transaksi
Endpoint: Mendapatkan Daftar Transaksi
GET https://api.xendit.co/transactions
Gunakan endpoint ini untuk mendapatkan seluruh transaksi atau memilih filter dan kata kunci tertentu. Anda dapat melakukan filter menggunakan waktu, tipe, atau status. Anda juga dapat melakukan pencarian berdasarkan referensi atau id produk. Hasil daftar transaksi yang dikembalikan akan menggunakan paginasi dan terurut berdasakan waktu pembuatan.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id sub-akun yang akan digunakan untuk mendapatkan transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut. |
Contoh Permintaan Mendapatkan Daftar Transaksi
curl https://api.xendit.co/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2 -X GET \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Parameter Query | Tipe | Deskripsi |
---|---|---|
types optional |
array of strings |
Tipe transaksi yang akan difilter. Jika tidak ditentukan, semua tipe transaksi akan dikembalikan. Tipe yang tersedia: DISBURSEMENT : Disbursement dari transaksi uang keluar. PAYMENT : Pembayaran yang meliputi semua jenis uang masuk. REMITTANCE_PAYOUT : Transaksi remittance untuk payout. TRANSFER : Transaski transfer antar akun Xendit. Transfer bisa keluar atau masuk. REFUND : Sebuah transaksi pengembalian dana telah dibuat untuk melakukan pengembalian dana dari transaksi masuk. |
statuses optional |
array of strings |
Status transaksi yang akan difilter. Jika tidak ditentukan, semua status transaksi akan dikembalikan. Status yg tersedia: PENDING : Transaksi masih menunggu diproses. Ini merujuk pada transaksi uang keluar ketika saldo uang Anda masih ditahan. SUCCESS : Transaksi uang keluar telah berashil dikirim atau uang masuk telah diterima. FAILED : Transaksi gagal untuk dikirim/diterima. VOIDED : Transaksi uang masuk dibatalkan oleh kustomer.REVERSED : Transaksi dibatalkan oleh Xendit. |
channel_categories optional |
array of strings |
Kanal transaksi yang akan difilter. Jika tidak ditentukan, semua kanal transaksi akan dikembalikan. Untuk tipe DISBURSEMENT dan REMITTANCE_PAYOUT , kategori kanal yang tersedia adalah BANK and CASH . Untuk tipe PAYMENT , kategori kanal yang tersedia adalah CARDS , CARDLESS_CREDIT , DIRECT_DEBIT , EWALLET , PAYLATER , QR_CODE , RETAIL_OUTLET , VIRTUAL_ACCOUNT . Sedangkan untuk tipe TRANSFER , kategori kanal yang tersedia adalah XENPLATFORM . |
reference_id optional |
string |
Referensi yang akan dicari. Pencarian menggunakan referensi adalah case sensitive dan dapat parsial. |
product_id optional |
string |
Id produk yang akan dicari. Pencarian menggunakan id produk adalah case sensitive dan sama persis. |
account_identifier optional |
string |
Account identifier yang akan dicari. Pencarian menggunakan ccount identifier adalah case sensitive dan sama persis. |
currency optionaldefault:
|
string (ISO 4217) |
Mata uang yang akan difilter. Lihat datafat mata uang yang didukung. |
amount optional |
number |
Nominal transaksi yang akan dicari. Pencarian ini akan mencari dengan nilai yang sama persis. |
created[gte] optional |
string (ISO 8601) |
Batas awal waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
created[lte] optional |
string (ISO 8601) |
Batas akhi waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
updated[lte] optional |
string (ISO 8601) |
Batas awal waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
updated[gte] optional |
string (ISO 8601) |
Batas akhir waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan. |
limit optionaldefault:
|
number |
Batas dari jumlah transaksi yang dikembalikan untuk tiap request. Batas berada dalam rentang 1 and 50. |
after_id optional |
string |
Batas id dari transaksi sebelumnya. Gunakan ini bersama links pada respon untuk keperluan paginasi. |
before_id optional |
string |
Batas id dari transaksi setelahnya. |
Parameter Respon
Contoh Respon Mendapatkan Daftar Transaksi
{
"has_more": true,
"data": [
{
"id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref23244",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:42:15.601Z",
"updated": "2021-06-23T02:42:15.601Z"
},
{
"id": "txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
"product_id": "d290f1ee-6c54-4b01-90e6-d701748f0700",
"type": "PAYMENT",
"status": "SUCCESS",
"channel_category": "RETAIL_OUTLET",
"channel_code": "ALFAMART",
"reference_id": "ref242424",
"account_identifier": null,
"currency": "IDR",
"amount": 1,
"cashflow": "MONEY_IN",
"business_id": "5fc9f5b246f820517e38c84d",
"created": "2021-06-23T02:39:23.176Z",
"updated": "2021-06-23T02:39:23.176Z"
}
],
"links": [
{
"href": "/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2&after_id=txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
"method": "GET",
"rel": "next"
}
]
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
data required |
array of objects |
Mengembalikan array Objek Transaksi. Mengembalikan array kosong bila hasil tidak ditemukan. |
has_more required |
bolean |
Mengindikasikan apakah masih ada transaksi lainnya pada halaman selanjutnya menggukan parameter after_id . Gunakan links untuk mendapatkan hasil selanjutnya. |
links optional |
object |
Tautan ke hasil selanjutnya berdasakan HATEOAS jika ada. Format HATEOAS adalah: href : URI dari target, ini akan berisi tautan ke halaman selanjutnya. rel : Hubungan antara sumber dan target, nilainya akan berisi next . method : Metode HTTP, ini akan berisi GET . |
Kode Error
Lihat contoh umum error lainya di sini.
Kode Error | Deskripsi |
---|---|
FEATURE_NOT_AVAILABLE400 |
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini. |
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": "2020"
},
"card_cvn": "123",
"is_multiple_use": false,
"should_authenticate": true,
"billing_details": {
"given_names": "John",
"surname": "Hudson",
"email": "john@xendit.co",
"mobile_number": "+6208123123123",
"phone_number": "+6208123123123",
"address": {
"country": "ID",
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "12345"
}
}
}
Contoh objek tokenData dengan data pemilik kartu (dapat berupa alamat pengiriman barang)
{
"amount": "10000",
"card_data": {
"account_number": "4456530000001096",
"exp_month": "12",
"exp_year": "2020"
},
"card_cvn": "123",
"is_multiple_use": false,
"should_authenticate": true,
"customer": {
"reference_id": "123e4567-e89b-12d3-a456-426614174000",
"mobile_number": "+6208123123123",
"email": "john@xendit.co",
"given_names": "John",
"surname": "Hudson",
"phone_number": "+6208123123123",
"nationality": "ID",
"addresses": [{
"country": "ID",
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "12345",
"category": "WORK"
}],
"date_of_birth": "1990-04-13",
"description": "customer using promo",
"metadata": {}
}
}
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.
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Bodi | Tipe | Deskripsi | |||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amount optional |
string |
Jumlah biaya yang ingin dikenakan. Wajib diisi untuk Token Sekali Pakai karena digunakan untuk proses otentikasi. | |||||||||||||||||||||||||||||||||||||||||
card_data required |
object |
Detail informasi kartu pelanggan paramater objek data kartu
|
|||||||||||||||||||||||||||||||||||||||||
card_cvn optional |
string |
Kode CVN/CVC kartu. Opsional namun sangat direkomendasikan. Dibutuhkan untuk kartu yang diterbitkan di Eropa. | |||||||||||||||||||||||||||||||||||||||||
is_multiple_use optional default: false |
boolean |
Penentuan apakah token akan digunakan berulang kali atau tidak | |||||||||||||||||||||||||||||||||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | |||||||||||||||||||||||||||||||||||||||||
should_authenticate default:
|
boolean |
Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak. | |||||||||||||||||||||||||||||||||||||||||
billing_details optional |
object |
Rincian tagihan pemilik kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem 3DS EMV dan verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan dari negara Amerika / Kanada / Inggris Raya parameter pada detil data tagihan
|
|||||||||||||||||||||||||||||||||||||||||
customeroptional |
object |
Informasi yang berkaitan dengan pelanggan (pemilik kartu), contohnya rincian kontak. Parameter ini direkomendasikan untuk menjalankan protokol otentikasi yang lebih baik, meningkatkan tingkat kesuksesan transaksi, dan mencegah tindakan-tindakan penipuan (fraud). Cantumkan parameter ini untuk mencatat alamat pengiriman pelanggan, bila tersedia. Parameter Objek Pelanggan
| |
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"
}
Response Parameters
Body Parameter | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
id required |
string |
ID token kartu kredit/debit. ID token ini akan digunakan kemudian untuk melakukan proses charge pada kartu kredit. | ||||||||||
authentication_id required |
string |
Akan disertakan apabila otentikasi digabung demgam Token Sekali Pakai. | ||||||||||
masked_card_number required |
string |
6 angka pertama dan 4 angka terakhir pada kartu kredit. | ||||||||||
statusrequired |
string |
Status proses tokenisasi. Lihat Status Tokenisasi | ||||||||||
payer_authentication_url optional |
string |
Dikembalikan pada respon hanya jika permintaan pembuatan token dilakukan bersamaan dengan permintaan otentikasi dan status yang dikembalikan bernilai IN_REVIEW. Parameter ini berisikan dengan URL yang nantinya akan diakses oleh pemilik kartu untuk melakukan otentikasi 3DS (memasukkan OTP. | ||||||||||
failure_reason optional |
string |
Jika tokenization yang digabung dengan otentikasi mengalami kegalan dengan status FAILED, parameter ini menjelaskan alasan dari kegagalan tersebut. Lihat Alasan Kegagalan pada Proses Tokenisasi | ||||||||||
card_info optional |
object |
Informasi kartu yang sudah dilakukan proses tokenisasi. parameter info kartu
|
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. Oleh karena itu, pengiriman token ke sistem backend Anda untuk melakukan charge adalah tindakan yang aman. |
FAILED | Proses tokenisasi dapat mengalami kegagalan dengan alasan yang bervariasi. Lihat Alasan Kegagalan pada Proses Tokenisasi. |
Alasan Kegagalan pada Proses Tokenisasi
Alasan Kegagalan | Deskripsi |
---|---|
AUTHENTICATION |
Status ini berarti customer berusaha melakukan otentikasi menggunakan 3DS tetapi tidak berhasil melengkapi proses otentikasi |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT400 |
Isi dari request bukan format JSON yang benar. |
ACCOUNT_NUMBER400 |
Nomor kartu kredit tidak valid atau salah. |
VALIDATION_ERROR 400 |
Data dikirimkan dengan format yang salah |
BRAND_NOT400 |
Merek kartu tidak didukung. Sarankan pengguna untuk menggunakan Visa/Mastercard. |
AUTHENTICATION400 |
Anda tidak menyertakan authentication_id yang valid dalam request dan akun anda tidak dikonfigurasi untuk otentikasi pilihan. Sertakan authentication_id yang valid atau hubungi kami bila Anda ingin mematikan setingan wajib otentikasi. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
VERIFICATION408 |
Jaringan kartu kredit mengalami timed out ketika berusaha melakukan tokenisasi. |
TEMPORARY503 |
Terjadi masalah ketika melakukan tokenisasi pada jaringan kartu kredit. |
CONNECTION_ERROR |
Terjadi kesalahan pada saat melakukan hubungan dengan server kami. Silahkan mencoba lagi dan bila kegagalan terus terjadi, silahkan mencoba menggunakan perangkat atau jaringan lain |
TOKENIZATION_ERROR |
Kesalahan umum. Coba lagi atau coba dengan menggunakan kartu yang lain. |
Mendapatkan Token
Definisi: Mendapatkan Token
GET https://api.xendit.co/credit_card_tokens/:credit_card_token_id?
Contoh Melakukan Permintaan Mendapatkan Token Request Menggunakan Token ID
curl https://api.xendit.co/credit_card_tokens/605c05d3f81fa60011b2fa4e \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
Contoh Respon Token Response
{
"business_id": "602103396f17450020ca2246",
"created": "2021-03-25T03:38:59.318Z",
"id": "605c05d3f81fa60011b2fa4e",
"status": "VALID",
"card_expiration_month": "12",
"card_expiration_year": "2025",
"metadata": {
"bank": "PT. Bank Rakyat Indonesia (Persero)",
"country_code": "US",
"type": "CREDIT",
"brand": "VISA",
},
"card_info": {
"bank": "PT. Bank Rakyat Indonesia (Persero)",
"country": "ID",
"type": "CREDIT",
"brand": "VISA",
"card_art_url": "",
"fingerprint": "6021f7d3717e0500115fbb0d",
},
}
Ini adalah endpoint untuk mengambil suatu objek token. Anda perlu menentukan nilai dari token_id
.
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda dapatkan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_token_id required |
string |
Dapat diinput dengan nilai diantara id token dari kartu kredit yang sudah di tokenisasi. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
CREDIT_CARD_TOKEN404 |
credit_card_token_id tidak ditemukan |
Pembuatan Otentikasi
Javascript Function: createAuthentication
Xendit.card.createAuthentication(authenticationData, function (err, data) {
if (err) {
//Definisikan penanganan kesalahan
}
if (data.status === 'VERIFIED') {
// Penanganan keberhasilan
} else if (data.status === 'IN_REVIEW') {
// Penanganan otentikasi (3DS)
} else if (data.status === 'FAILED') {
// Penanganan kegagalan
}
});
Untuk melakukan otentikasi pada token, silahkan menggunakan fungsi Xendit.card.createAuthentication
di Xendit.js. Fungsi ini menerima objek authenticationData
dan mengembalikan authentication_id
yang dapat digunakan untuk melakukan otentikasi. Silahkan melihat Pembuatan Charge untuk detil lebih lanjut mengenai Charge.
Lihat Sample Otentikasi untuk contoh implementasi.
Contoh Objek authenticationData
{
"amount": "10000",
"token_id": "58e2096018b815f555c8a524"
}
Contoh Respon Otentikasi
{
"id": "58e2097218b815f555c8a526",
"status": "VERIFIED"
}
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter 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. |
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"
}
You can do authorization using create charge endpoint. Just capture field as false, and you will receive an authorized charge response.
Otorisasi Dengan Nilai 0
Pembuatan otorisasi menggunakan API yang sama dengan pembuatan charge, hanya saja parameter amount
diisi dengan nilai 0
Pembuatan Charge. Kegunaan dari fitur ini adalah untuk melakukan pengecekan apakah kartu dapat melakukan transaksi atau tidak.
Otorisasi dengan nilai 0 tidak tersedia untuk transaksi melalui MIGS dan koneksi langsung ke bank. Apabila Anda melakukan proses transaksi dengan metode aggregator, fitur ini akan otomatis bekerja untuk Anda. Fitur ini juga otomatis bekerja pada mode tes
Example Zero Amount Authorization Request
curl -X POST \
https://api.xendit.co/credit_card_charges \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d '{
"token_id" : "598d5d0e51e0870d44c61534",
"external_id": "postman-charge-1502436817",
"amount": 0,
"authentication_id":"598d5d0f51e0870d44c61535"
}'
<?php
require 'vendor/autoload.php';
$options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
$xenditPHPClient = new XenditClient\XenditPHPClient($options);
$external_id = 'sample-external-id-1475459775872';
$token_id = 'sample-token-id-1475459775872';
$amount = 0;
$authentication_id = '58e2097218b815f555c8a526';
$response = $xenditPHPClient->captureCreditCardPayment($external_id, $token_id, $amount);
print_r($response);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.createAuthorization({
externalID: 'sample-external-id-1475459775872',
tokenID: 'sample-token-id-1475459775872',
amount: 0,
authID: '58e2097218b815f555c8a526',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.createAuthorization(
"token_id", // tokenId
"test_id", // externalId
0, // amount
"auth_id", // authenticationId
false // capture
);
} catch (XenditException e) {
e.printStackTrace();
}
Example Zero Amount Authorization Response
{
"created": "2020-01-11T07:33:14.442Z",
"status": "AUTHORIZED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 0,
"external_id": "postman-charge-1502436793",
"merchant_id": "xendit",
"merchant_reference_code": "598d5d0d51e0870d44c61533",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"id": "598d5dba51e0870d44c61539"
}
Pengembalian Otorisasi (Reverse Auhorization)
Definisi: Pembuatan Reverse Authorization
POST https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal
Contoh Permintaan Pembuatan Reverse Authorization
curl -X POST \
https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-d '{
"external_id": "reverse-authorization-1502436817",
}'
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '5ecc82736275b80019591c91';
$params = ['external_id' => 'reverse-authorization-1502436817'];
$reverseAuth = \Xendit\Cards::reverseAuthorization(
$id,
$params
);
var_dump($reverseAuth);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.reverseAuthorization({
externalID: 'reverse-authorization-1502436817',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardReverseAuth creditCardReverseAuth = CreditCard.reverseAuthorization(
"1234567", //chargeId
"reverse-authorization-1502436817" //externalId
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
reverseAuthorizationData := card.ReverseAuthorizationParams{
ChargeID: "123",
ExternalID: "reverse-authorization-1502436817",
}
reverseAuthorizationResp, err := card.ReverseAuthorization(&reverseAuthorizationData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("reversed authorization: %+v\n", reverseAuthorizationResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
reverse_authorization = CreditCard.reverse_authorizatiton(
credit_card_charge_id="5f0421fa8cc1e8001973a1d6",
external_id="reverse-authorization-1594106387",
)
print(reverse_authorization)
Contoh dari bentuk permintaan
{
"external_id": "reverse-authorization-1502436817",
}
Contoh dari respon pengembalian otorisasi
{
"status": "SUCCEEDED",
"currency": "IDR",
"credit_card_charge_id": "5ecc82640d679500199621ad",
"business_id": "5dd7928f4e6d9a2ec299ea43",
"external_id": "reverse-authorization-1502436817",
"amount": 5000,
"created": "2020-05-26T02:44:03.458Z",
"id": "5ecc82736275b80019591c91"
}
API ini dapat melakukan pengembalian transaksi yang sudah memiliki status AUTHORIZED
dan belum dilakukan capture (pemindahan uang ke acquiring bank).
Parameter Request
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi |
---|---|---|
external_id required |
string |
Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan. |
Parameter Respon
Parameter | Tipe | Deskripsi |
---|---|---|
status required |
string |
Reverse Authorization status. Lihat Status Pengembalian Otorisasi. |
currency required |
string |
Mata uang dari otorisasi yang ingin dikembalikan. |
credit_card_charge_id required |
string |
ID dari otorisasi / charge yang ingin dikembalikan. |
business_id required |
string |
ID akun bisnis Xendit Anda. |
external_id required |
string |
Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan. |
amount required |
number |
Nominal uang yang dikembalikan untuk permintaan pengembalian otorisasi ini. |
created required |
string |
Cap waktu ISO yang mencatat kapan permintaan pengembalian otorisasi tersebut dibuat reverse authorization
Timezone: .
|
id required |
string |
ID dari pengembalian otorisasi. |
failure_reason optional |
string |
Jika status FAILED , parameter ini menjelaskan alasan dari kegagalan permintaan tersebut. Lihat Alasan Kegagalan Pengembalian Otorisasi. |
Status Pengembalian Otorisasi
Status | Deskripsi |
---|---|
SUCCEEDED | Pengembalian Otorisasi telah berhasil dilakukan. |
FAILED | Pengembalian Otorisasi gagal |
Alasan Kegagalan Pengembalian Otorisasi
Failure Reason | Description |
---|---|
REVERSE_AUTHORIZATION_REJECTED_BY_BANK | Permintaan pengembalian otorisasi ditolak oleh bank. Hal ini mungkin terjadi apabila otorisasi sudah lewat dari masa tenggang, ataupun kredit (uang) sudah dikembalikan ke akun pemegang kartu. |
PROCESSOR_ERROR | Permintaan pengembalian otorisasi gagal karena terdapat isu integrasi antara pemroses dengan bank penerbit kartu. Hubungi Kami apabila anda mengalami permasalahan ini |
Error Pada Permintaan Pengembalian Otorisasi
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Nilai yang dimasukkan pada parameter mengalami kesalaham. Pada objek error dijelaskan paramater mana yang mengalami kesalahan. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter. |
CHARGE_ALREADY_REVERSED400 |
Charge telah dilakukan pengembalian, maka dari itu pengembalian otorisasi tidak dapat dilakukan |
CHARGE_ALREADY_CAPTURED400 |
Charge telah dilaukan capture , maka dari itu pengembalian otorisasi tidak dapat dilakukan |
CHARGE_FAILED400 |
Charge gagal, maka dari itu pengembalian otorisasi tidak dapat dilakukan |
REQUEST_FORBIDDEN403 |
API key yang dipakai tidak memiliki izin untuk melakukan permintaan pengembalian otorisasi. Mohon gunakan API key yang mempunyai izin yang sesuai. Pelajari lebih lanjut here |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan untuk permintaan ini. Mohon gunakan credit_card_charge_id lain yang valid |
INVALID_AMOUNT_FOR_REVERSE_AUTHORIZATION_ERROR 400 |
Nominal yang ingin dikembalikan tidak sesuai. Mohon dipastikan bahwa nominal charge tidak sama dengan 0. |
Pembuatan Charge
Definisi: Pembuatan Charge
POST https://api.xendit.co/credit_card_charges
Contoh Permintaan Pembuatan Charge
curl -X POST \
https://api.xendit.co/credit_card_charges \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d '{
"token_id" : "598d5d0e51e0870d44c61534",
"external_id": "postman-charge-1502436817",
"amount": 900000,
"authentication_id": "598d5d0f51e0870d44c61535",
"descriptor": "My new store",
"currency": "IDR",
"mid_label": "IDR_MID",
"billing_details": {
"given_names": "John",
"surname": "John Doe",
"email": "johndoe@xendit.co",
"mobile_number": "+62899336634448",
"phone_number": "+629934448",
"address": {
"street_line1": "Panglima Polim IV",
"street_line2": "Ruko Grand Panglima Polim, Blok E",
"city": "Jakarta Selatan",
"province_state": "DKI Jakarta",
"postal_code": "993448",
"country": "ID"
}
},
"promotion": {
"reference_id": "BCA_10",
"original_amount": 1000000
},
"installment": {
"count": 3,
"interval": "month"
},
"metadata": {}
}'
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'token_id' => '5e2e8231d97c174c58bcf644',
'external_id' => 'card_' . time(),
'authentication_id' => '5e2e8658bae82e4d54d764c0',
'amount' => 15000,
'capture' => false
];
$createCharge = \Xendit\Cards::create($params);
var_dump($createCharge);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const resp = await card.createCharge({
externalID: 'sample-external-id-1475459775872',
tokenID: 'sample-token-id-1475459775872',
amount: 900000,
authID: '58e2097218b815f555c8a526',
descriptor: "My new store",
currency: "IDR",
midLabel: "IDR_MID",
billingDetails: {
given_names: "John",
surname: "John Doe",
email: "johndoe@xendit.co",
mobile_number: "+62899336634448",
phone_number: "+629934448",
address: {
street_line1: "Panglima Polim IV",
street_line2: "Ruko Grand Panglima Polim, Blok E",
city: "Jakarta Selatan",
province_state: "DKI Jakarta",
postal_code: "993448",
country: "ID"
}
},
promotion: {
referenceId: "BCA_10",
originalAmount: 1000000
},
installment: {
count: 3,
interval: "month"
}
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.createCharge(
"token_id", //tokenId
"postman-authorize-1502437417", //externalId
90000, //amount
"auth_id", //authenticationId
"XDT*MYBUSINESS-MY NEW STORE" //Descriptor
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
createChargeData := card.CreateChargeParams{
TokenID: "example-token-id",
AuthenticationID: "example-authentication-id",
ExternalID: "postman-charge-1502436793",
Amount: 900000,
Capture: new(bool),
}
chargeResp, err := card.CreateCharge(&createChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("created charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.create_charge(
token_id="5f0410898bcf7a001a00879d",
external_id="card_charge-1594106478",
amount=900000
)
print(charge)
Ketika Anda memiliki token, token tersebut dapat digunakan untuk melakukan Charge pada kartu
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
with-fee-ruleoptional |
string |
ID Fee Rule yang ingin Anda aplikasikan ke transaksi yang dilakukan Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan fee_rule_id pada header response API Apabila for-user-id header tidak tersedia, Fee Rule akan menggunakan Akun Master sebagai sumber dana untuk mengirimkan Fee ke akun destinasi Header tersebut hanya dapat digunakan apabila Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token_id required |
string |
ID Token yang digunakan untuk melakukan Charge. | |||||||||||||||||||||||||||||
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. | |||||||||||||||||||||||||||||
authentication_id optional |
string |
ID Otentikasi untuk mengotentikasi charge. Tidak wajib diisi hanya bila sudah diotentikasi dengan Token Sekali Pakai, atau setingan tidak wajib otentikasi sudah diaktifkan pada akun Anda. | |||||||||||||||||||||||||||||
amount required |
number |
Jumlah biaya yang akan di-charge. | |||||||||||||||||||||||||||||
authentication_id optional |
string |
ID Otentikasi untuk mengotentikasi charge. Tidak wajib diisi hanya bila sudah diotentikasi dengan Token Sekali Pakai, atau setingan tidak wajib otentikasi sudah diaktifkan pada akun Anda. | |||||||||||||||||||||||||||||
capture optionaldefault:
|
boolean |
Kondisi dimana Anda akan menentukan apakah akan melakukan Capture langsung atau tidak langsung. Ubah nilai menjadi false bila Anda menginginkan otentikasi saja (penahanan uang), untuk kemudian di-capture dengan capture endpoint.Catatan: Otorisasi akan kedaluwarsa dalam 7 hari. |
|||||||||||||||||||||||||||||
descriptor optional |
string |
Deskriptor khusus untuk mengidentifikasi merchant pada laporan penggunaan kartu kredit pemilik kartu. Note: Untuk pelanggan dengan mode aggregator, nilai yang akan dikembalikan adalah XDT*[MERCHANT_NAME]-DESCRIPTOR Untuk pelanggan dengan mode switcher, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR |
|||||||||||||||||||||||||||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | |||||||||||||||||||||||||||||
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda. Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
|||||||||||||||||||||||||||||
billing_details optional |
object
|
Rincian tagihan dari pemegang kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan di negara USA / Canada / Ingrris Raya. parameter pada detil data tagihan
|
|||||||||||||||||||||||||||||
metadataoptional |
object |
Data bebas dengan format json yang dapat digunakan pelanggan sebagai data pelengkap. | |||||||||||||||||||||||||||||
promotion optional |
object |
Jika Anda ingin menggunakan promosi, Anda harus memasukkan parameter ini pada permintaan transaksi Anda
|
|||||||||||||||||||||||||||||
installment optional |
object |
Parameter ini diperlukan sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk mengecek apakah BIN atau token id yang digunakan mempunyai opsi cicilan, mohon mengacu pada Opsi Charge.
|
Contoh Respon Pembuatan Charge
{
"created": "2020-01-11T07:33:14.442Z",
"status": "CAPTURED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 900000,
"external_id": "postman-charge-1502436793",
"merchant_id": "xendit",
"merchant_reference_code": "598d5d0d51e0870d44c61533",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"capture_amount": 900000,
"descriptor": "XDT*MYBUSINESS-MY NEW STORE",
"id": "598d5dba51e0870d44c61539",
"mid_label": "IDR_MID",
"promotion": {
"reference_id": "BCA_10",
"original_amount": "1000000"
},
"installment": {
"month": 3,
"interval": "month"
}
}
Contoh Respon Otorisasi
{
"created": "2020-01-11T07:43:39.563Z",
"status": "AUTHORIZED",
"business_id": "5850e55d8d9791bd40096364",
"authorized_amount": 90000,
"external_id": "postman-authorize-1502437417",
"merchant_id": "xendit",
"merchant_reference_code": "598d5ffb51e0870d44c6153a",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"eci": "05",
"descriptor": "XDT*MYBUSINESS-MY NEW STORE",
"id": "598d602b51e0870d44c6153d",
"mid_label": "IDR_MID",
"promotion": {
"reference_id": "BCA_10",
"original_amount": "100000"
},
"installment": {
"month": 3,
"interval": "month"
}
}
Respon Pembuatan Charge
Parameter | Tipe | Deskripsi | ||||
---|---|---|---|---|---|---|
createdrequired |
string |
Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge. | ||||
business_id required |
string |
ID akun bisnis Xendit Anda. | ||||
authorized_amount required |
number |
Nominal uang yang diotorisasi untuk Charge ini. | ||||
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. | ||||
card_type required |
string |
Tipe Kartu (CREDIT or DEBIT ). |
||||
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 digit) yang mengindikasikan bahwa proses otorisasi telah disetujui oleh penerbit kartu. | ||||
cvn_code optional |
string |
Respon yang didapatkan dari validasi CVN (3 digit kode keamanan yang terdapat dibalik kartu). Parameter ini tidak akan tertera pada respon apabila CVN tidak disertakan pada saat permintaan pembuatan charge atau pembuatan token. Lihat Kode CVN. | ||||
merchant_reference_code required |
string |
Kode merchant yang digunakan untuk melakukan rekonsiliasi transaksi dengan bank. | ||||
descriptor optional |
string |
Deskriptor khusus untuk menentukan identitas merchant. Catatan: Untuk aggregator merchant, nilai yang akan dikembalikan adalah XDT*[MERCHANT_NAME]-DESCRIPTOR Untuk switcher merchant, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR |
||||
currency optional |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda | ||||
mid_label optional |
string |
Karakter string spesifik yang digunakan untuk memberikan label pada MID pelanggan. Konfigurasi penanda label ini dapat dilakukan melalui menu pengaturan kartu kredit di Dasbor, pada menu pengaturan kartu kredit ( Jika pelanggan tidak menyertakan mid_label bersamaan dengan request transaksi, transaksi akan diproses menggunakan MID prioritas 1. Catatan: Hanya dikembalikan pada response untuk switcher merchant |
||||
id required |
string |
ID dari charge di sistem Xendit. | ||||
promotion optional |
object |
Jika Anda ingin menggunakan promosi pada transaksi charge, Anda harus memasukkan parameter di bawah ini. detil objek promosi
|
||||
installment optional |
object |
Parameter ini diberikan pada respon sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk melihat apakah BIN mempunyai cicilan yang tersedia atau tidak, lihat [Permintaan Opsi Charge] (#permintaan-opsi-charge). detil objek installment
|
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 |
---|---|
EXPIRED_CARD | Kartu yang akan di-capture telah kedaluwarsa. Kami sarankan untuk menggunakan kartu yang lain. |
CARD_DECLINED | Kartu yang akan di-capture ditolak oleh bank. Kami sarankan untuk menggunakan kartu yang lain. |
BLOCKED_BY_ACQUIRER | Transaksi gagal karena pengakuisisi kami tidak dapat menerima transaksi. Kemungkinan besar karena otentikasi 3DS gagal atau tidak terjadi. Pelanggan disarankan menyelesaikan autentikasi 3DS atau mencoba lagi dengan kartu yang memiliki 3DS. |
INSUFFICIENT_BALANCE | Kartu yang akan di-capture tidak memiliki saldo yang cukup untuk melengkapi proses capture. |
STOLEN_CARD | Kartu yang akan di-capture telah ditandai sebagai kartu yang dicuri. Kami sarankan untuk menggunakan kartu yang lain. |
INACTIVE_CARD | Kartu yang akan di-capture tidak aktif. Kami sarankan untuk menggunakan kartu yang lain. |
INVALID_CVN | Nomor CVN yang dimasukkan salah. |
CREDIT_LIMIT | Jumlah tagihan melebihi batas persetujuan dari bank penerbit. Kami sarankan untuk menggunakan kartu lain atau menambah limit kredit. |
PROCESSOR_ERROR | Proses charge gagal karena adanya isu integrasi antara prosesor kartu dengan bank. Silahkan hubungi kami bila Anda menemui isu ini. |
PROCESSOR_TIMEOUT | Kami menerima timeout dari prosesor ketika mengirim request charge. Hal ini biasanya terjadi karena masalah koneksi. Kami sarankan pelanggan untuk mencoba kembali transaksi. |
BIN_BLOCK | BIN (Bank Identification Number) kartu tersebut telah diblokir sesuai dengan permintaan dari Bank. |
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. |
TOKEN_ALREADY400 |
ID Token Sekali Pakai sudah pernah digunakan ketika melakukan Charge. |
AUTHENTICATION400 |
ID otentikasi sudah pernah digunakan ketika melakukan charge. |
INVALID_TOKEN_ID400 |
Format ID token tidak valid. |
INVALID_CVN400 |
Jumlah angka CVN tidak valid. Untuk kartu berlogo AMEX, jumlah angka CVN harus 4 angka. Selain AMEX, jumlah angka CVN harus 3 angka. |
AUTHENTICATION_ID400 |
ID Otentikasi wajib diisi. |
AMOUNT_GREATER_THAN400 |
Jumlah nominal angka yang di-charge melampaui jumlah yang diotentikasi |
INVALID_AUTHENTICATION_ID_ERROR 400 |
Format ID otentikasi tidak valid. |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
TOKEN_NOT404 |
ID token tersebut tidak ditemukan dalam sistem. |
AUTHENTICATION_NOT404 |
Token yang telah diotentikasi dengan otentikasi ID tersebut tidak ditemukan. |
MID_NOT404 |
MID yang digunakan pada parameter mid_label tidak dapat ditemukan. Lakukan pengecekan ulang jika Anda sudah mendaftarkan mid tersebut atau lakukan pengecekan pada input parameter mid Anda |
INVALID_PROMOTION_DETAILS 400 |
Detil promosi yang dimasukkan tidak valid. Mohon dapat melakukan permintaan kembali dengan mengganti input objek promo yang ingin digunakan. |
CARDHOLDER_NAME_REQUIRED 400 |
Mohon dapat menyertakan nama pemilik kartu pada parameter billing_details pada request Anda. |
INSTALLMENT_BELOW_AMOUNT_MINIMUM 400 |
Nominal transaksi yang ingin dilakukan berada di bawah minimum batas transaksi cicilan. |
INSTALLMENT_UNAVAILABLE 404 |
Kemungkinan penjelasan kesalahan: |
AMOUNT_BELOW_MINIMUM_LIMIT 400 |
Nominal yg dimasukkan pada input di bawah batas minimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau lebih dari batas minimum. Batas minimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut: |
AMOUNT_ABOVE_MAXIMUM_LIMIT 400 |
Nominal yg dimasukkan pada input di atas batas maksimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau kurang dari batas maksimum. Batas maksimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut: |
INCOMPLETE_AUTHENTICATION 400 |
authentication_id yang dimasukkan tidak dapat digunakan karena proses otentikasi tidak dapat diselesaikan. Hal ini biasanya terjadi karena adanya kendala saat menampilkan render halaman 2FA, pelanggan tidak menyelesaikan proses 3DS, atau hal lain terjadi seperti timeout dari sisi bank. Mohon mencoba lagi transaksi ini atau Anda dapat menghilangkan authentication_id dari Charge request apabila 3DS opsional sudah diaktifkan untuk bisnis Anda. (Apabila Anda ingin dapat melakukan otentikasi secara opsional/dinamis 3DS, kontak kami untuk mengaktifkan fitur ini. Lihat dokumentasi otentikasi untuk panduan integrasi dan testing.) |
Tipe Charge
Status | Deskripsi |
---|---|
SINGLE_USE_TOKEN | Charge yang dibuat dengan Token Sekali Pakai |
MULTIPLE_USE_TOKEN | Charge yang dibuat dengan Token Pemakaian Berulang |
RECURRING | Melakukan charge berulang dengan Langganan |
Kode ECI
ECI | Deskripsi |
---|---|
0 | Tidak bisa diotentikasi (MasterCard) |
1 | Percobaan Otentikasi(MasterCard) |
2 | Otentikasi Berhasil (MasterCard) |
5 | Otentikasi Berhasil (Visa, AMEX, JCB) |
6 | Percobaan Otentikasi (Visa, AMEX, JCB) |
7 | Tidak bisa diotentikasi (Visa, AMEX, JCB) |
Charge menggunakan CVV untuk Multi-Use Token
Contoh Charge dengan CVV menggunakan Xendit.js
const tokenData = {
token_id: “sample-token-id-6ab4hmu832j8oenx71b”, (wajib)
card_cvn: “123”,
billing_details: object,
customer: object
};
Contoh Charge dengan CVV menggunakan Android SDK
final Xendit xendit = new Xendit(getApplicationContext(), <PUBLISHABLE_KEY>, this);
xendit.storeCVN(
<tokenId>, (wajib)
<cardCVN>,
<billingDetails>,
<customerDetails>,
null,
callback);
Contoh Charge dengan CVV menggunakan iOS SDK
let storeCVNRequest = XenditStoreCVNRequest.init(tokenId: <tokenId>) (wajib);
authenticationRequest.cardCvn = <cardCvn>;
Xendit.storeCVN(
fromViewController: self,
storeCVNRequest: storeCVNRequest,
onBehalfOf: nil,
completion: completion)
CVV merupakan salah satu bagian dari proses transaksi kartu kredit, di mana pemilik kartu menyediakan tiga atau empat kode angka untuk otorisasi transaksi tersebut. Mengapa memasukkan CVV adalah hal yang penting:
- Berperan sebagai lapisan keamanan tambahan untuk otorisasi transaksi yang datang dari pemilik kartu sebenarnya
- Meningkatkan kepercayaan bank untuk menerima transaksi karena dapat mengindikasikan transaksi tersebut dibuat oleh pemilik kartu sebenarnya
Apabila Anda ingin melakukan transaksi menggunakan CVN/CVV untuk multi-use token, Anda dapat mengikuti panduan ini.
Apa itu CVV?
CVV adalah singkatan dari “Card Verification Value”, terdiri dari tiga atau empat kode angka yang terletak pada bagian depan atau belakang kartu. CVV digunakan oleh issuer sebagai lapisan tambahan untuk keamanan transaksi, memasukkan CVV dapat meningkatkan tingkat kesuksesan transaksi dan menurunkan kemungkinan terjadinya penipuan.
CVV merupakan bagian dari Sensitive Authentication Data (SAD) yang diregulasi ketat oleh PCI. Merujuk pada peraturan PCI, sebuah bisnis tidak diperbolehkan untuk menyimpan CVN/CVV setelah proses otorisasi dilakukan dan sistem yang digunakan harus mengikuti regulasi PCI serta memproses CVN/CVV harus dilakukan di dalam Card Data Environment (CDE) yang diaudit.
Cara penggunaan
Siapkan ID token penggunaan yang ingin Anda gunakan untuk melakukan charge. Gunakan ID token tersebut sesuai dengan acuan pada contoh kode di bagian kanan.
Pembuatan Safe Acceptance
Fitur ini merupakan alternatif dari API charge, dimana dapat digunakan untuk kondisi sebagai berikut
- Melakukan transaksi pembayaran kartu kredit/debit online dengan mengirimkan data lengkap dari suatu kartu kepada sistem Xendit melalui sisi klien (frontend) tanpa menggunakan proses Tokenisasi (untuk proses standard transaksi Visa/MasterCard/JCB/AMEX)
- Melakukan transaksi pembayaran kartu kredit/debit online dimana tampilan antarmuka saat pembayaran dikendalikan oleh pihak pemroses kartu dan pemilik kartu dialihkan kepada tampilan antarmuka tersebut untuk memasukan rincian data kartu
Gunakan halaman demo ini untuk menguji skenario menggunakan Safe Acceptance, dan untuk melihat contoh bagaimana Safe Acceptance dapat diintegrasikan di halaman web.
Penjelasan Metode Integrasi dari Pemrosesan Pembayaran pada Safe Acceptance
Kekuatan dari fitur Safe Acceptance API yang Kami miliki terletak pada kemampuan untuk mendukung proses pembayaran kartu kredit pada metode integrasi yang umum digunakan secara fleksibel. Secara umum, terdapat beberapa metode integrasi yang dijelaskan sebagai berikut:
-
2.5 party Merchant akan melakukan otentikasi 3DS dan pembayaran dalam satu kali permintaan pada API. Merchant akan mengirimkan data kartu ke Xendit, dimana Xendit akan melanjutkannya kepada pemroses pembayaran. Sebelum melakukan proses pembayran, Xendit akan melakukan inisiasi 3DS kepada pemroses pembayaran, kemudian mengarahkan merchant kepada halaman otentikasi 3DS milik pemroses pembayaran, dimana pemilik kartu dapat memasukkan OTP yang didapatkan dari bank.
-
3 party Merchant akan melakukan otentikasi 3DS dan pembayaran sesuai dengan alur yang ditentukan oleh pihak pemroses pembayaran. Proses inisiasi pembayaran akan dilakukan oleh Safe Acceptance API, dimana Xendit akan mengarahkan merchant kepada tampilan antarmuka yang dimiliki oleh pihak pemroses pembayaran. Pemilik kartu akan memasukkan data kartu langsung pada halaman checkout milik pihak pemroses pembayaran dan melakukan proses otentikasi 3DS pada halaman tersebut. Data kartu tidak akan melewati Xendit dan akan diproses langsung oleh pihak pemroses pembayaran.
Perlu dijadikan catatan bahwa pada fitur Safe Acceptance, parameter token_id
masih dapat digunakan untuk melakukan transaksi
Definis: Pembuatan Transaksi Safe Acceptance
POST
https://api.xendit.co/credit_cards/safe_acceptance
Contoh Permintaan Safe Acceptance
{
"amount": "1200000",
"return_url": "https://mybusiness.co",
"reference_id": "xdt-safe-acceptance-007",
"transaction_type": "SALES",
"request_timestamp": "2021-01-10T09:50:40+03:00",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"card_number": "1889800000000171",
"card_exp_year": "2021",
"card_exp_month": "03",
"card_cvn": "101",
"should_authenticate": true,
"currency": "IDR",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"authorization": "Basic eG5kX3B1YmxpY19kZXZlbG9wbWVudF9PNDZBZkw4azFlRGtwSnRmN3RPSERDV01OQ2w4dFI0azNibVJ4bm1EUnIyb0NnZHdnQTo=",
"signed_field_names": "reference_id,amount,currency,request_timestamp,return_url,authorization,signed_field_names",
"signature": "37c0323212908b9d4fe607f9d237c95aae2503a799d278afdc663268b5f8906e"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema Visa / MasterCard / JCB)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"card_type": "CREDIT",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema BCA)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "143481XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "BCA",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema GPN)
{
"created": "2021-01-10T09:50:40+03:00",
"business_id": "5d08a4nfea3b620019cfa213c",
"authorized_amount": 1200000,
"reference_id": "ecm-8112",
"merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
"masked_card_number": "143481XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "GPN",
"status": "CAPTURED",
"bank_reconciliation_id": "5622988916826241203012",
"eci": "05",
"capture_amount": "1200000",
"currency": "IDR",
"id": "5d1eca0ca3bcd10019a7e2ee",
"authorized_amount": "1200000",
"merchant_id" : "00080091009103589348501",
"descriptor": "INV-SAFE-ACCEPTANCE-007",
"promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
"promotion_original_amount: 50000,
"signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
"signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
}
Parameter Permintaan
Parameter | Tipe | Deskripsi |
---|---|---|
amount required |
number |
Jumlah biaya yang akan di-charge. |
reference_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
request_timestamp required |
string |
Stempel waktu saat permintaan pembuatan safe acceptance dilakukan, dengan format ISO8601. Dibutuhkan untuk membuat signature untuk kemudian digunakan sebagai validasi pada sistem Xendit. Contoh: 2021-01-10T09:50:40+03:00 |
currency required |
string |
Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Mata uang yang tersedia:
|
return_url required |
string |
URL ini akan digunakan untuk mengarahkan pelanggan akhir apabila transaksi pembayaran sudah selesai. URL ini akan dipanggil menggunakan metode HTML form POST dengan hasil transaksi yang dicantumkan pada response. Singature akan dikirimkan pada response untuk dapat divalidasi oleh pelanggan. |
authorization required |
string |
Public API Key dari sistem Xendit Anda (yang sudah dikonversi menjadi format base-64). |
signature required |
string |
Nilai dari parameter ini didapatkan dengan menggunakan dari secret API key Xendit yg dapat diambil dari Dasbor Anda, kemudian membuat hash dari parameter yang dicantumkan pada permintaan dengan methode sha256. Lihat Dokumentasi Safe Acceptance Kami sebagai petunjuk. |
signed_field_names required |
string |
Nilai dari parameter ini harus berisikan dengan nilai kunci dari parameter yang nantinya akan digunakan untuk melakukan verifikasi signature, dipisahkan dengan tanda koma.
Makndatori:(jika permintaan Anda berisikan parameter tersebut):
amount, currency, authorization, reference_id, request_timestamp,mid_label, channel_code, return_url, should_authenticate
|
channel_code optional |
string |
Nilai yang digunakan untuk menentukan konektor mana yang akan digunakan dalam proses Safe Acceptance. Jika tidak diisi, nilai defaultnya adalah Visa/MasterCard/JCB/AMEX. Untuk transaksi lain, lihat:
|
card_number optional |
string |
Nomor kartu kredit/debit online yang akan dikonversi menjadi token. Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_exp_year optional |
string |
Tahun kedaluwarsa kartu kredit / debit online (4 digit angka) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_exp_month optional |
string |
Tanggal kedaluwarsa kartu kredit / debit online (2 digit angka) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_cvn optional |
string |
Kode keamanan yang terdapat pada bagian belakang kartu (3 atau 4 digit) Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party |
card_holder_name optional |
string |
Nama lengkap dari pemilik kartu |
token_id optional |
string |
ID Token yang digunakan untuk melakukan Charge. Hanya dibutuhkan jika prosesor yang digunakan membutuhkan proses tokenisasi, dan Anda memiliki token ID yang didapatkan dari proses tokenisasi sebelumnya. |
should_authenticate optional |
boolean |
Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak. Jika tidak diinput, maka akan menyesuaikan dengan pengaturan 3DS merchant pada sistem Xendit. Nilai yang diterima:
|
given_namesoptional |
string |
Nama pertama pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
surnameoptional |
string |
Nama belakang pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
emailoptional |
string |
Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu |
mobile_numberoptional |
string |
Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164 |
phone_number optional |
string |
Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor) |
country required |
string |
2-huruf ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu |
street_line1 optional |
string |
Nama bangunan dan nomor unit apartemen / rumah Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
street_line2 optional |
string |
Alamat lengkap bangunan Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
cityoptional |
string |
Kabupaten/Kota pemilik kartu Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
province_state optional |
string |
Provinsi, state, atau region pemilik kartu. Jika pemilik kartu merupakan penduduk Amerika, pastikan nilai yang dimasukkan adalah kode negara bagian (contoh gunakan CA untuk California) Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
postal_code optional |
string |
Kode ZIP atau Kode Pos bila tersedia Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
descriptor optional |
string |
Penanda spesifik yang menjelaskan identitas merchant. Niali ini akan tercantum pada tagihan pemilik kartu. Jumlah karakter minimum : 1 karakter Jumlah karakter maksimum : 255 karakter |
use_reward optional |
boolean |
Penanda bahwa transaksi pembayaran akan menggunakan rewards yang tersedia dari bank penerbit kartu. Hanya dapat disertakan pada permintaan jika Anda mendapatkan parameter rewards pada respond dari Get Charge Option. Nilai yang diterima: ‘true’: semua rewards yang tersedia akan digunakan untuk pembayaran ‘false’: reward tidak akan digunakan untuk pembayaran |
installment_count optional |
number |
Parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah 3. |
installment_interval optional |
string |
Parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah month . |
installment_code optional |
string |
Digunakan untuk mengidentifikasi tipe cicilan dan fitur yang berkaitan dengan cicilan tersebut seperti bunga dan tagian. Parameter ini mandatori untuk disertakan pada permintaan jika Xendit mengembalikan parameter installment_code pada respons Get Charge Option untuk kartu pelanggan akhir. |
promotion_reference_id optional |
string |
Kode unik yang digunakan untuk ID referensi pada API Pembuatan Promo. |
promotion_original_amount optional |
string |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
mid_label optional |
string |
Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda. Note: Hanya dapat digunakan untuk pelanggan dengan mode switcher |
Response Parameters
Parameter | Type | Description |
---|---|---|
id required |
string |
ID unik dari charge di sistem Xendit. |
created required |
string |
Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge. |
reference_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. |
business_id required |
string |
ID akun bisnis Xendit Anda. |
card_brand required |
string |
Skema kartu (VISA, MASTERCARD, JCB, AMEX, GPN) |
card_type required |
string |
Tipe kartu (CREDIT atau DEBIT) |
masked_card_number required |
number |
Enam angka pertama dan Empat angka terakhir pada kartu kredit. Enam 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 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 |
---|---|
EXPIRED_CARD | Kartu yang akan di-capture telah kedaluwarsa. Kami sarankan untuk menggunakan kartu yang lain. |
CARD_DECLINED | Kartu yang akan di-capture ditolak oleh bank. Kami sarankan untuk menggunakan kartu yang lain. |
INSUFFICIENT_BALANCE | Kartu yang akan di-capture tidak memiliki saldo yang cukup untuk melengkapi proses capture. |
STOLEN_CARD | Kartu yang akan di-capture telah ditandai sebagai kartu yang dicuri. Kami sarankan untuk menggunakan kartu yang lain. |
INACTIVE_CARD | Kartu yang akan di-capture tidak aktif. Kami sarankan untuk menggunakan kartu yang lain. |
INVALID_CVN | Nomor CVN yang dimasukkan salah. |
PROCESSOR_ERROR | Proses charge gagal karena adanya isu integrasi antara prosesor kartu dengan bank. Silahkan hubungi kami bila Anda menemui isu ini. |
BIN_BLOCK | BIN (Bank Identification Number) kartu tersebut telah diblokir sesuai dengan permintaan dari Bank. |
ISSUING_BANK_UNAVAILABLE | Kartu yang digunakan tidak valid. |
Error Codes
Error Code | Description |
---|---|
API_VALIDATION_ERROR400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT400 |
Isi dari request bukan format JSON yang benar. |
INVALID_API_KEY400 |
Mohon gunakan Public API key untuk transaksi ini. |
SIGNATURE_VALIDATION_ERROR 400 |
Signature yang digunakan tidak valid. Mohon lakukan permintaan dengan signature yang valid. |
Capture Charge
Definisi: Capture Charge
POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/capture
Contoh Permintaan Capture Charge
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.captureCharge({
chargeID: id,
amount: 10000,
});
console.log(resp)
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/capture \
-X POST \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-d amount=15000
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '598942c4bb91a4ec309e9a37';
$params = ['amount' => 10000];
$captureCharge = \Xendit\Cards::capture($id, $params);
var_dump($captureCharge);
?>
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.captureCharge(
"12345678", //chargeId
10000 //amount
);
} catch (XenditException e) {
e.printStackTrace();
}
captureChargeData := card.CaptureChargeParams{
ChargeID: "598942c4bb91a4ec309e9a37",
Amount: 9900,
}
chargeResp, err := card.CaptureCharge(&captureChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("captured charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.capture_charge(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
amount=75000,
)
print(charge)
Contoh Respon Capture Charge
{
"created": "2020-01-08T04:49:08.815Z",
"status": "CAPTURED",
"business_id": "5848fdf860053555135587e7",
"authorized_amount": 10000,
"external_id": "test-pre-auth",
"merchant_id": "xendit",
"merchant_reference_code": "598942aabb91a4ec309e9a35",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"capture_amount": 9900,
"id": "598942c4bb91a4ec309e9a37"
}
Capture pada charge hanya perlu dilakukan apabila Anda melakukan pra-otentikasi dengan menentukan parameter capture
dengan nilai false
pada request Pembuatan Charge. Anda dapat melakukan capture dengan nominal yang berbeda dengan nominal yang terotorisasi selama nominal tersebut tidak melampaui nominal yang terotorisasi. Respon dari endpoint sama dengan respon charge
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_charge_id required |
string |
ID charge. |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount required |
string |
Nominal yang akan di-captured. Tidak dapat melampaui nominal yang terotorisasi. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT 400 |
Isi dari request bukan format JSON yang benar. |
AMOUNT_GREATER_THAN400 |
Nominal capture melebihi nominal yang terotorisasi. |
INVALID_CHARGE400 |
Status charge tidak terotorisasi |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
AUTHORIZATION_EXPIRED 400 |
Otorisasi sudah dikembalikan (dapat berarti juga bahwa uang sudah kembali ke pemilik kartu) atau sudah kedaluwarsa. Mohon untuk membuat auhorization atau charge baru. |
Pembuatan Refund
Definisi: Pembuatan Refund
POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/refunds
Contoh Permintaan Pembuatan Refund
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/refunds \
-X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H "X-IDEMPOTENCY-KEY: unique-id-12345" \
-d amount=15000
-d external_id=unique-external-id
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'external_id' => 'postman-charge-1502436793',
'amount' => 15000,
'X-IDEMPOTENCY-KEY' => 'unique-id'
];
$refund = \Xendit\Cards::createRefund($id, $params);
var_dump($refund);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.createRefund({
chargeID: '5877255293ff67900c6aa64e',
amount: 15000,
externalID: 'unique-external-id',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardRefund creditCardRefund = CreditCard.createRefund(
"1234567", //id
50000, //amount
"external_id" //externalId
);
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
createRefundData := card.CreateRefundParams{
IdempotencyKey: "unique-idempotency-key",
ChargeID: "58f984f09d1b74bc08506c34",
Amount: 15000,
ExternalID: "unique-external-id",
}
refundResp, err := card.CreateRefund(&createRefundData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("refunded charge: %+v\n", refundResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
refund = CreditCard.create_refund(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
amount=10000,
external_id="card_refund-1594106755",
)
print(refund)
Contoh Respon Pembuatan Refund
{
"updated": "2020-01-21T04:05:09.755Z",
"created": "2020-01-21T04:05:04.936Z",
"credit_card_charge_id": "58f89041780d51ed097896c5",
"user_id": "57c5aa7a36e3b6a709b6e148",
"amount": 15000,
"external_id": "unique-external-id",
"status": "REQUESTED",
"fee_refund_amount": 150,
"id": "58f984f09d1b74bc08506c34"
}
API refund menerima dua parameter, amount
dan external_id
. ID charge yang dikembalikan setelah charge yang berhasil harus digunakan pada request URL per definisi. Beberapa refund dapat dibuat selama total nominal uang yang akan refund tidak melebihi dari total nominal charge. Beberapa refund parsial dapat dilakukan selama nilai dari dari total jumlah refund tidak lebih besar dari jumlah nilai transaksi.
Catatan: Idempotensi dapat dicapai dengan mengirimkan header dengan kunci X-IDEMPOTENCY-KEY.
Parameter Request (Money-in write permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
X-IDEMPOTENCY-KEYoptional |
string |
Sebuah kunci unik yang digunakan untuk menghindari duplikasi pemrosesan suatu request. Wajib unik untuk lingkungan development maupun production |
x-api-version mandatory |
string |
Nilai dari parameter ini harus “2019-05-01” |
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount required |
string |
Nominal uang yang akan di-refund. |
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
Parameter Respon
Parameter | Tipe | Deskripsi |
---|---|---|
updated required |
string |
Cap waktu ISO yang mencatat kapan terakhir refund tersebut mendapatkan pengkinian. |
created required |
string |
Cap waktu ISO yang mencatat kapan refund tersebut dibuat Timezone: . |
credit_card_charge_id required |
string |
ID charge yang digunakan untuk mengidentifikasi charge yang akan digunakan. |
user_id required |
string |
ID bisnis akun Xendit Anda. |
amount required |
number |
Nominal uang yang akan di-refund. |
external_id required |
string |
Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter. |
status required |
string |
Status dari refund tersebut. Lihat Status-status Refund |
failure_reason required |
string |
Keterangan yang diberikan apabila permintaan refund gagal. lihat Alasan Refund Gagal. |
fee_refund_amount required |
number |
Nilai nominal dari biaya transaksi yang dikembalikan (nilai ini diproporsikan sesuai dengan jumlah nilai refund yang diminta). |
id required |
string |
ID unik yang digunakan sebagai referensi dari permintaan refund. |
Status status Refund
Status | Deskripsi |
---|---|
REQUESTED | Permintaan refund berhasil. |
FAILED | Permintaan refund gagal. |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
INVALID_JSON_FORMAT 400 |
Isi dari request bukan format JSON yang benar. |
REFUND_AMOUNT400 |
Nominal refund melebihi total charge |
DUPLICATE_REFUND400 |
external_id sudah pernah digunakan |
REQUEST_FORBIDDEN403 |
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
Alasan Refund Gagal
Alasan Gagal | Deskripsi |
---|---|
INSUFFICIENT_BALANCE | Saldo pada akun Xendit Anda tidak cukup untuk melakukan refund (saldo tersebut digunakan untuk mengembalikan biaya transaksi) |
REFUND_FAILED | Permintaan refund telah ditolak oleh bank. Mohon dicoba kembali atau hubungi kami di help@xendit.co |
REFUND_PERIOD_EXPIRED | Masa berlaku refund telah kadaluarsa. Anda dapat melakukan refund kepada merchant dengan menggunakan disbursement. |
Mendapatkan Charge
Definisi: Mendapatkan Charge
GET https://api.xendit.co/credit_card_charges/:credit_card_id?id_type=charge
Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan External ID
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e?id_type=external \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan Charge ID (Default)
curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e \
-X GET \
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$id = '598942c4bb91a4ec309e9a37';
$getCharge = \Xendit\Cards::retrieve($id);
var_dump($getCharge);
?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);
const resp = await card.getCharge({ chargeID: '5877255293ff67900c6aa64e' });
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
CreditCardCharge creditCardCharge = CreditCard.getCharge("5877255293ff67900c6aa64e");
} catch (XenditException e) {
e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
getChargeData := card.GetChargeParams{
ChargeID: "598942c4bb91a4ec309e9a37",
}
chargeResp, err := card.GetCharge(&getChargeData)
if err != nil {
log.Fatal(err)
}
fmt.Printf("retrieved charge: %+v\n", chargeResp)
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
charge = CreditCard.get_charge(
credit_card_charge_id="5f0422aa2bbbe50019a368c2",
)
print(charge)
Contoh Respon Charge Response
{
"created": "2020-08-08T04:49:08.815Z",
"status": "CAPTURED",
"business_id": "5848fdf860053555135587e7",
"authorized_amount": 10000,
"external_id": "test-pre-auth",
"merchant_id": "xendit",
"merchant_reference_code": "598942aabb91a4ec309e9a35",
"card_type": "CREDIT",
"masked_card_number": "400000XXXXXX0002",
"charge_type": "SINGLE_USE_TOKEN",
"card_brand": "VISA",
"bank_reconciliation_id": "5132390610356134503009",
"capture_amount": 9900,
"id": "598942c4bb91a4ec309e9a37"
}
Ini adalah endpoint untuk mengambil suatu objek charge. Anda perlu menentukan nilai dari charge_id
. Respon dari endpoint sama dengan respon pembuatan charge
Parameter Request (Money-in read permission)
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idoptional |
string |
User-id dari sub-akun yang ingin Anda buatlan tokennya. Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Query | Tipe | Deskripsi |
---|---|---|
credit_card_id required |
string |
Dapat diinput dengan nilai diantara id charge dari transaksi yang sudah di otorisasi atau capture ATAU menggunakan external_id dari transaksi yang diinput oleh pengguna pada saat pembuatan charge. |
id_type optional |
string |
Dijelaskan di [Tipe ID] (tipe-id). Jika tidak diinput, nilai akan diisi dengan charge . |
Tipe ID
Type | Description |
---|---|
charge | Pencarian transaksi charge akan menggunakan ID charge yang diberikan oleh Xendit dimana data tersebut tertera pada respon transaksi charge atau otorisasi |
external | Pencarian transaksi charge akan menggunakan external ID yang diinput oleh pengguna pada saat pengguna melakukan permintaan pembuatan charge atau otorisasi |
Kode Error
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi. |
CREDIT_CARD_CHARGE404 |
credit_card_charge_id tidak ditemukan |
Permintaan Opsi Charge
Saat menerima transaksi kartu kredit untuk pelanggan Anda, Anda pasti mengharapkan untuk dapat memberikan tambahan pilihan metode pembayaran. Hal ini meliputi:
- Pembayaran menggunakan cicilan
- Pembayaran menggunakan promo
Opsi tersebut harus dipilih oleh pengguna sebelum melakukan permintaan Charge. Contohnya apabila Anda ingin mengecek apakah kartu yang ingin digunakan memiliki promo dan diskon, maka sebelum Anda melakukan permintaan untuk pembayaran dengan kartu kredit, Anda dapat mengecek terlebih dahulu apakah terdapat opsi cicilan atau tidak, dan Anda dapat menampilkan opsi tersebut kepada pengguna, untuk kemudian dipilih oleh pengguna.
API Permintaan Opsi Charge kami dapat membantu Anda dalam hal tersebut. Anda dapat mengirimkan permintaan ke endpoint kami edngan mengirimkan info yang sudah dimasukkan oleh pengguna (seperti BIN (Nomor Identifikasi Kartu), kode promo), kemudian Xendit akan melakukan pengecekan apakah terdapat opsi charge untuk permintaan tersebut. Respon yang diberikan akan berisi tentang opsi opsi yang tersedia untuk parameter yang dimasukkan. Anda dapat memilih opsi tersebut dan melakukan transaksi charge dengan rincian yang sudah diberikan pada respon.
Definisi: Permintaan Opsi Charge
GET https://api.xendit.co/credit_card_charges/option
Contoh Permintaan Opsi Charge
curl -X GET \
https://api.xendit.co/credit_card_charges/option
-u xnd_public_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"bin": "552002",
"amount": 1000000,
"currency": "IDR”
}
Contoh Respon dari Permintaan Opsi Charge
{
"business_id": "5ea2a0cdb62b6a00108ed248",
"bin": "552002",
"promotions":[{
"reference_id": "some_promo_1",
"discount_percent": "25",
"original_amount": 1000000,
"final_amount": 750000,
"currency": "IDR"
}],
"installments" : [{
"count": 3,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
},{
"count": 6,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
},{
"count": 12,
"interval": "month",
"acquirer": "BRI",
"currency": "IDR",
"minimum_amount": 500000
}]
}
Permintaan Untuk Mendapatkan Opsi Charge
Parameter | Deskripsi |
---|---|
amount required |
number Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
bin optional |
array of strings BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
currency default: IDR |
string Mata uang yang akan digunakan untuk pembayaran. |
promo_code optional |
string Kode promo yang dapat digunakan oleh pengguna untuk mengaktifkan promo. Masukkan nilai pada parameter ini apabila user ingin pelanggan menggunakan kode promo untuk mengaktifkan promo.
|
token_id required |
string ID token dari kartu, didapatkan saat melakukan proses tokenisasi dengan xendit. Kami akan mencari nilai BIN dari token ID yang dimasukkan. |
Respon Permintaan Opsi Charge
Parameter | Deskripsi | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
business_idrequired |
string ID dari bisnis Anda yang terdapat di dalam sistem Xendit. |
||||||||||||||||||||
binrequired |
string BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
||||||||||||||||||||
promotions optional |
array Array berisikan detil dari daftar promo yang tersedia rincian parameter promosi
|
||||||||||||||||||||
installments optional |
object Menjelaskan tentang opsi cicilan yang tersedia. parameter tambahan untuk cicilan
|
||||||||||||||||||||
reward optional |
object Jika fitur rewards tersedia pada kartu, objek ini akan dikembalikan di dalam respons. parameter rinci dari reward
|
Pembuatan Promo
Cara terbaik untuk menarik pelanggan adalah dengan menawarkan potongan harga berdasarkan tipe kartu kredit yang mereka gunakan. Bank penerbit kartu kredit sering kali bekerja sama dengan badan usaha untuk menyediakan potongan harga kepada pemegang kartu jika mereka memilih untuk melakukan pembayaran menggunakan kartu kredit. Hal terpenting dari fitur yang terdapat dalam alur pembayaran adalah kemampuan untuk melakukan pengecekan terhadap nomor kartu, apakah kartu tersebut diterbitkan oleh bank yang spesifik.
Xendit memberikan layanan promo API untuk membantu tipe promosi tersebut di atas. Fitur tersebut mengizinkan pengguna untuk membuat promo dan memilih rentang dari Bank Identification Numbers (BINs; merupakan 6 angka digit pertama dari kartu kredit), untuk mendapatkan promo yang ingin digunakan. Saat melakan proses pembayaran kartu kredit, pengguna dapat mengirimkan permintaan GET kalkulasi promo. Jika terdapat promo yang sesuai dengan jenis kartu yang digunakan, maka Xendit akan secara otomatis menerapkan potongan harga dan memberikan response terkait dengan informasi potongan harga tersebut, sehingga pengguna dapat melanjutkan proses pembayaran dengan nominal yang sudah dipotong.
Definisi: Pembuatan Promo
POST https://api.xendit.co/promotions
Contoh Membuat Permintaan Pembuatan Promo
curl -X POST \
https://api.xendit.co/promotions
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
from xendit import Xendit
api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard
promotion = CreditCard.create_promotion(
reference_id="BRI_20_JAN-1594176600",
description="20% discount applied for all BRI cards",
discount_amount=10000,
bin_list=['400000', '460000'],
start_time="2020-01-01T00:00:00.000Z",
end_time="2021-01-01T00:00:00.000Z",
min_original_amount=25000,
max_discount_amount=5000
)
print(promotion)
Contoh Response Permintaan Pembuatan Promo
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"status": "ACTIVE",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Permintaan Pembuatan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id required |
string |
Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo.
|
description required |
text |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list optional |
array of strings |
Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo. Contoh: ["400000", "460000"] |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk fitur promosi. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo. Contoh: "BCA" |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
discount_amount optional |
number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time required |
ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time required |
ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount optional |
number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount optional |
number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Response Pembuatan Promo
Objek Promo
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Deretan karakter alfanumerik unik yang merupakan identitas dari promo yang sudah dibuat (dibuat oleh Xendit). |
business_id | string |
Deretan karakter alfanumerik unik yang merupakan identitas dari akun Anda dalam sistem Xendit, digunakan untuk mengidentifikasi akun Anda. |
status | string |
Status dari suatu objek promo. Lihat Status Promo |
reference_id | string |
Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo. simbol yang diterima semua karakter spesial dapat digunakan. |
description | string |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list | array of strings |
Daftar dari BIN yang diperbolehkan untuk melakukan transaksi menggunakan promo. Saat memilih spesifik bank, semua BIN yang terasosiasi dengan sistem promosi yang terdaftar di Xendit akan dapat menggunakan promo tersebut. Kode bank harus sesuai dengan daftar yang tertera di sini. |
channel_code | string |
Kode bank yang diperbolehkan untuk melakukan transaksi menggunakan promo. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo. |
discount_percent | number |
Persentase dari jumlah potongan yang akan diberikan pada objek promo. Saat objek promo telah dibuat menggunakan discount_percent , parameter ini akan ditampilan pada response.
|
discount_amount | number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Saat objek promo telah dibuat menggunakan discount_amount , parameter ini akan ditampilan pada response.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time | ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time | ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount | number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount | number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Status Promo
Status | Description |
---|---|
ACTIVE | Promo aktif dan dapat digunakan |
INACTIVE | Promo tidak aktif karena belum melewati start_time |
EXPIRED | Promo sudah kedaluarsa karena melewati batas end_time |
PAUSED | Promo diberhentikan sementara atas permintaan dari pengguna |
Kesalahan Pembuatan Promo
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR 400 |
Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error. |
INVALID_JSON_FORMAT 400 |
Permintaan tidak memenuhi standar format JSON. |
REQUEST_FORBIDDEN_ERROR403 |
API key yang digunakan tidak memiliki izin untuk melakukan permintaan. Mohon dapat menggunakan izin yang tepat pada API key atau gunakan API key yang berbeda. |
REFERENCE_IN_USE409 |
Referensi sudah digunakan pada promo lain. Mohon gunakan nama atau referensi yang lain. |
PROMO_CODE_IN_USE409 |
Kode promo sudah terdaftar pada promo yang tersedia. Mohon gunakan kode promo yang lain |
Mendapatkan Promo
API ini dapat digunakan untuk mendapatkan rincian dari promo yang telah dibuat. Hal ini sangat berguna untuk mendapatkan daftar dari promo yang tersedia. Jika parameter yang dimasukkan memberikan kecocokan di lebih dari satu promo, hasil yang akan diberikan pada response akan berbentuk array.
Definisi: Mendapatkan Promo
GET https://api.xendit.co/promotions?reference_id={reference_id}
Contoh Permintaan Untuk Mendapatkan Promo
curl -X GET \
https://api.xendit.co/promotions?reference_id=BRI_20_JAN
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Respon Permintaan Untuk Mendapatkan Promo
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BRI_20_JAN",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"status": "ACTIVE",
"bin_list": [
"400000",
"460000"
],
"discount_percent": 20,
"channel_code": "BRI",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Parameter Yang dapat Digunakan
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id optional |
string |
Masukkan karakter spesifik reference_id dari satu objek promo yang telah dibuat. |
status required |
enum |
Status dari Promo yang telah dibuat.ACTIVE or INACTIVE . |
bin optional |
string |
BIN spesifik dari kartu. Contoh: 460000 |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk menggunakan Promo. |
currency optional default: IDR |
string |
Mata uang yang digunakan untuk pembayaran. Sementara ini hanya menerima IDR . |
Respon Permintaan Mendapatkan Promo
Rincian dari promo yang tersedia dikembalikan dalam bentuk array dalam format Objek Promo., tergantung pada input yang dimasukkan oleh user saat melakukan permintaan untuk mendapatkan promo. Contohnya, jika user memasukkan nilai pada parameter bin_list
yaitu [ "400000" ], maka response yang diberikan akan berupa array dari promo yang tersedia, yang berkaitan dengan BIN tersebut
Jika tidak ada promo yang tersedia dan cocok dengan permintaan user, response akan berupa array kosong.
Mendapatkan Perhitungan Promo
API ini dapat digunakan untuk menghitung berapa jumlah potongan harga yang akan diberikan pada nominal transaksi yang akan dilakukan (di-charge). API ini menerima BIN atau promo_code
, dan juga nominal original dari transaksi. Jika ditemukan kecocokan pada BIN atau promo_code
terhadap promo yang sudah dibuat, Xendit akan menerapkan potongan harga pada nominal asli dan mengembalikan nominal yang sudah dipotong pada response. Fitur ini hanya melakukan perhitungan pada promo yang memiliki status ACTIVE
.
Kami telah membangun halaman untuk Anda melakukan test dengan mengirimkan request Get Promotion Calculations sebelum Anda integrasi. Anda bisa mencoba nya disini. Anda memerlukan kunci / key API Publik Anda, yang dapat Anda dapatkan dengan melakukan registrasi di Dashboard kami dan menuju ke halaman Settings.
Definisi: Mendapatkan Perhitungan Promo
GET https://api.xendit.co/promotions/calculate?amount={amount}&bin={bin}
Contoh Permintaan Perhitungan Promo Menggunakan 6 Digit Pertama Kartu Kredit (BIN)
curl -X GET \
https://api.xendit.co/promotions/calculate?amount=1000000&bin=460000
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Permintaan Perhitungan Promo Menggunakan Token ID
curl -X GET \
https://api.xendit.co/promotions/calculate?amount=1000000&token_id=598d5d0e51e0870d44c61534
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
Contoh Respon dari Permintaan Penghitungan Promo
{
"original_amount": 1000000,
"discount_percent": 20,
"reference_id": "BRI_20_JAN",
"final_amount": 800000,
"currency": "IDR",
"description": "20% discount applied for all BRI cards",
"min_original_amount": 500000,
"max_discount_amount": 100000
}
}
Permintaan Mendapatkan Perhitungan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
amount required |
number |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
bin optional |
string |
BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
promo_code optional |
string |
Karakter promo_code yang dimasukkan oleh pemegang kartu, dimana nilai dari parameter ini kemudian digunakan untuk mengecek apakah promo_code tersebut berasosiasi dengan Promo yang tersedia dan masih dalam status aktif. |
currency optional default: IDR |
string |
Mata uang yang digunakan untuk pembayaran. Sementara ini hanya menerima IDR . |
token_id optional |
string |
Id token dari kartu, yang didapatkan dari proses tokenisasi pada sistem Xendit. Kami akan mengasosiasikan token ID tersebut dengan enam digit pertama kartu kredit. |
Response Perhitungan Promo
Parameter | Tipe | Deskripsi |
---|---|---|
reference_id optional |
string |
Referensi unik yang diberikan untuk promo yang Anda buat. |
original_amount required |
number |
Nominal original dari transaksi (Sebelum diberlakukan pemotongan). |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promo. Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent . |
discount_amount optional |
number |
Nominal dari potongan harga yang akan diberikan pada promo. Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent . |
final_amount required |
number |
Nominal final setelah potongan harga diberikan berdasarkan promo yang digunakan. User harus menggunakan nominal ini untuk melakukan transaksi charge. |
description | string |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. Diberikan pada response saat mengirimkan permintaan pada Get Promotion . |
min_original_amount optional |
number |
Nilai minimum transaksi agar promo dapat digunakan. |
max_discount_amount optional |
number |
Nilai maksimum dari diskon yang dapat digunakan pada promo. |
Pembaruan Promo
Anda dapat menggunakan fitur ini untuk melakukan pembaruan pada promosi yang telah dibuat sebelumnya.
Definisi: Pembaruan Promo
PATCH https://api.xendit.co/promotions/:promotion_id
Contoh Permintaan Pembaruan Promotion
curl -X GET \
https://api.xendit.co/promotions/36ab1517-208a-4f22-b155-96fb101cb378
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
-H 'content-type: application/json' \
-d {
"description": "20% discount applied for all BCA cards",
"bin_list": [
"411455",
"422566"
],
"discount_percent": 20,
"channel_code": "BCA",
"currency": "IDR"
}
Contoh Respon Pembaruan Promotion
{
"id": "36ab1517-208a-4f22-b155-96fb101cb378",
"business_id": "5e61664b3dba955c203d232e",
"reference_id": "BCA_20",
"description": "20% discount applied for all BRI cards",
"start_time": "2020-01-01 00:00:00.000Z",
"end_time": "2020-01-01 00:00:00.000Z",
"transaction_limit": 0,
"is_deleted": false,
"status": "ACTIVE",
"bin_list": [
"411455",
"422566"
],
"discount_percent": 20,
"channel_code": "BCA",
"currency": "IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
Parameter Permintaan Pembaruan Promo
Tidak semua parameter dari Objek Promo dapat diperbaharui. Parameter yang dapat diperbaharui adalah sebagai berikut:
Body Parameter | Tipe | Deskripsi |
---|---|---|
description required |
text |
Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan. |
promo_code optional |
string |
Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo. Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah objek promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code , jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
|
bin_list optional |
array of strings |
Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo. Contoh: ["400000", "460000"] |
channel_code optional |
string |
Kode bank yang diperbolehkan untuk fitur promosi. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo.Kode bank harus sesuai dengan kode yang tertera di sini. |
discount_percent optional |
number |
Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
discount_amount optional |
number |
Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga. User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
|
currency default: IDR |
string |
Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang. Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS , maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia. |
start_time required |
ISO |
Semua promo yang dibuat akan langsung berlaku pada saat itu juga. User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
end_time required |
ISO |
Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali. Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo). |
min_original_amount optional |
number |
Nilai minimum transaksi agar dapat menggunakan promo. |
max_discount_amount optional |
number |
Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi. |
Respon Pembaruan Promo
Mengembalikan Objek Promo. Parameter yang Anda masukkan pada permintaan pembaruan promo akan tertera pada respon.
Error Codes
Error Code | Description |
---|---|
API_VALIDATION_ERROR 400 |
Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error. |
INVALID_JSON_FORMAT 400 |
Permintaan tidak memenuhi standar format JSON. |
PROMOTION_NOT_FOUND_ERROR 404 |
Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid |
PROMO_CODE_IN_USE 400 |
Kode promo ini telah digunakan pada promo sebelumnya atau sedang digunakan pada promo yang sedang berjalan. Mohon gunakan kode promo yang lain. |
INVALID_DISCOUNT_TYPE 400 |
Objek promo dengan id tersebut mempunya tipe diskon persen / diskon jumlah. Mohon sesuaikan dengan objek promo yang ada. |
INVALID_START_TIME_UPDATE 400 |
Objek promo dengan id promo tersebut memiliki masa berlaku waktu habis. Mohon sesuaikan dengan waktu promo dimulai. |
Menghapus Promo
Gunakan fitur ini untuk menghapus promo yang telah dibuat.
Definition: Menghapus Promo
DELETE https://api.xendit.co/promotions/:promotion_id
Contoh Permintaan Menghapus Promo
curl -X DELETE \
https://api.xendit.co/promotions/6055a96c-a870-4a2f-b61f-4015af6478cb
-u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
Contoh Respon Permintaan Menghapus Promo
{
"id":"6055a96c-a870-4a2f-b61f-4015af6478cb",
"created":"2020-07-29T10:57:47.426Z",
"business_id":"5edfb2a5d40e3040347d91fd",
"reference_id":"Cypress-Test-Promo-Delete-1596020266435",
"start_time":"2020-07-29T10:57:46.373Z",
"end_time":"2020-07-30T10:57:46.373Z",
"status":"DELETED",
"type":"PROMO_CODE",
"discount_amount":5000,
"promo_code":"Cypress-Test-Promo-Delete-1596020266435",
"currency":"IDR",
"min_original_amount": 25000,
"max_discount_amount": 5000
}
}
Parameter Permintaan Menghapus Promo
Path Parameter | Tipe | Deskripsi |
---|---|---|
promotion_id optional |
string |
Spesifik id yang diberikan oleh Xendit dari suatu objek promo yang telah dibuat. |
Respon Permintaan Menghapus Promo
Parameter | Tipe | Deskripsi |
---|---|---|
id | string |
Id unik dari promo yang akan dihapus (ID pada promo yg dibuat oleh Xendit). |
is_deleted | boolean |
Status dari pada suatu objek promo yang menandakan bahwa objek promo sudah dihapus. |
Error Codes
Error Code | Description |
---|---|
PROMOTION_NOT_FOUND_ERROR 404 |
Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid |
eWallet
eWallet API kami memungkinkan Anda untuk melakukan charge dan menerima pembayaran langsung dari penyedia layanan ewallet terkemuka. Dengan melakukan satu integrasi, Anda akan mendapatkan akses ke seluruh eWallet yang tersedia termasuk integrasi di masa depan. Sampai saat ini, kami telah memproses jutaan transaksi eWallet.
Untuk detil di setiap API termasuk panduan integrasi, silakan merujuk pada dokumentasi kami.
Versi API
Anda sedang melihat versi terbaru API eWallet kami. Pada versi ini, dengan sekali integrasi Anda akan mendapatkan akses ke seluruh eWallet yang tersedia dan eWallet yang akan tersedia mendatang! API ini juga memungkinkan Anda untuk melakukan alur tokenized payment dan auth/capture payment di masa mendatang. Klik di sini untuk melihat versi sebelumnya.
Versi | Changelog |
---|---|
2021-01-25 Terbaru |
API eWallet baru yang mendukung top eWallet provider di Indonesia dan Filipina. API versioning tidak butuhkan. Anda dapat mengakses API eWallet baru dengan memanggil POST /ewallets/charges |
Pembuatan Charge eWallet
Endpoint: Pembuatan Request Charge eWallet
POST https://api.xendit.co/ewallets/charges
eWallet
Parameter Request
Contoh: Pembuatan Request Charge eWallet
curl https://api.xendit.co/ewallets/charges -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'content-type: application/json' \
--data '{
"reference_id": "order-id-123",
"currency": "IDR",
"amount": 25000,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://redirect.me/payment"
},
"metadata": {
"branch_area": "PLUIT",
"branch_city": "JAKARTA"
}
}' \
try {
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
Map<String, String> channelProperties = new HashMap<>();
channelProperties.put("success_redirect_url", "https://dashboard.xendit.co/register/1");
Map<String, String> metadata = new HashMap<>();
metadata.put("branch_code", "tree_branch");
Map<String, Object> params = new HashMap<>();
params.put("reference_id", "test-reference-id");
params.put("currency", "IDR");
params.put("amount", 1000);
params.put("checkout_method", "ONE_TIME_PAYMENT");
params.put("channel_code", "ID_SHOPEEPAY");
params.put("channel_properties", channelProperties);
params.put("metadata", metadata);
EWalletCharge charge = EWalletCharge.createEWalletCharge(params);
} catch (XenditException e) {
e.printStackTrace();
}
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$params = [
'reference_id' => 'test-reference-id',
'currency' => 'IDR',
'amount' => 1000,
'checkout_method' => 'ONE_TIME_PAYMENT',
'channel_code' => 'ID_SHOPEEPAY',
'channel_properties' => [
'success_redirect_url' => 'https://dashboard.xendit.co/register/1',
],
'metadata' => [
'branch_code' => 'tree_branch'
]
];
$createEWalletCharge = \Xendit\EWallets::createEWalletCharge($ewalletChargeParams);
var_dump($createEWalletCharge);
?>
from xendit import EWallet
ewallet_charge = EWallet.create_ewallet_charge(
reference_id="test-reference-id",
currency="IDR",
amount=1000,
checkout_method="ONE_TIME_PAYMENT",
channel_code="ID_SHOPEEPAY",
channel_properties={
"success_redirect_url": "https://dashboard.xendit.co/register/1",
},
metadata={
"branch_code": "tree_branch",
},
)
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := ewallet.CreateEWalletChargeParams{
ReferenceID: "test-reference-id",
Currency: "IDR",
Amount: 1000,
CheckoutMethod: "ONE_TIME_PAYMENT",
ChannelCode: "ID_SHOPEEPAY",
ChannelProperties: map[string]string{
"success_redirect_url": "https://dashboard.xendit.co/register/1",
},
Metadata: map[string]interface{}{
"branch_code": "tree_branch",
},
}
charge, chargeErr := ewallet.CreateEWalletCharge(&data)
if chargeErr != nil {
log.Fatal(chargeErr)
}
fmt.Printf("created e-wallet charge: %+v\n", charge)
const x = new require("xendit-node")({
secretKey:
"xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
});
const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);
const resp = await ew.createEWalletCharge({
referenceID: 'test-reference-id',
currency: 'IDR',
amount: 1000,
checkoutMethod: 'ONE_TIME_PAYMENT',
channelCode: 'ID_SHOPEEPAY',
channelProperties: {
successRedirectURL: 'https://dashboard.xendit.co/register/1',
},
metadata: {
branch_code: 'tree_branch'
}
});
console.log(resp);
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
EWalletChargeClient eWalletCharge = xendit.EWalletCharge;
EWalletChargeParameter parameter = new EWalletChargeParameter
{
ReferenceId = "demo-reference-id",
Currency = Currency.IDR,
Amount = 1000,
CheckoutMethod = EWalletEnum.CheckoutMethod.OneTimePayment,
ChannelCode = EWalletEnum.ChannelCode.IdOvo,
ChannelProperties = new EWalletChargeProperties
{
MobileNumber = "+628123123123",
},
};
EWalletChargeResponse eWalletChargeResponse = await eWalletCharge.Create(parameter);
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idopsional |
string |
User-id sub-account yang Anda ingin gunakan untuk membuat transaksi Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform . Silakan buka xenPlatform untuk informasi lebih lanjut. |
with-fee-ruleopsional |
string |
ID Fee Rule yang ingin Anda aplikasikan ke pembayaran eWallet ini Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan fee_rule_id pada header response API. Apabila for-user-id header tidak tersedia, Fee Rule akan menggunakan Akun Master sebagai sumber dana untuk mengirimkan Fee ke akun destinasi Header tersebut hanya dapat digunakan apabila Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut |
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
reference_idwajib |
string |
Reference ID yang disediakan oleh merchant (255 karakter) | ||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
||||||||||||||||||||||||||||||||||||||||
amountwajib |
number |
Nominal yang harus dibayarkan Minimal - 1,000 IDR untuk ID_JENIUSPAY dan 100 IDR atau 1 PHP untuk eWallet lainnyaMaksimal - berdasarkan saldo maksimal eWallet |
||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Metode checkout yang menentukan alur pembayaran untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali pakaiTOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang |
||||||||||||||||||||||||||||||||||||||||
channel_codewajib jika checkout_method =
|
string |
Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_ASTRAPAY , ID_JENIUSPAY , ID_SAKUKU , PH_PAYMAYA , PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
||||||||||||||||||||||||||||||||||||||||
channel_propertieswajib ketika
|
object |
Menunjukkan informasi yang dibutuhkan untuk memulai transaksi OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
MAYA (PAYMAYA) parameter wajib
|
||||||||||||||||||||||||||||||||||||||||
payment_method_idwajib jika checkout_method =
|
string |
ID dari payment method. Payment method digunakan untuk melakukan tokenisasi pembayaran untuk menandai eWallet end user sebagai metode pembayaran | ||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object dimana payment method akan dihubungkan. Gunakan Create Customer API untuk melakukan request Customer | ||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail parameter objek
|
||||||||||||||||||||||||||||||||||||||||
metadataopsional |
object |
Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan. Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter. Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
Parameter Respon
Contoh: Respon Sukses Pembuatan Charge eWallet API
{
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "PENDING",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_required": true,
"callback_url": "https://calling-back.com/xendit/shopeepay",
"created": "2017-07-21T17:32:28Z",
"updated": "2017-07-21T17:32:28Z",
"void_status": null,
"voided_at": null,
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_code": "tree_branch"
}
}
Parameter Body | Tipe | Deskripsi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
reference_idwajib |
string |
Reference ID yang dibuat oleh merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
statuswajib |
string |
Status request charge
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
charge_amountwajib |
number |
Nominal charge yang direquest dari merchant | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
capture_amountopsional |
number |
Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
refunded_amountopsional |
number |
Total nominal refund dari merchant kepada end user | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali pakai |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
channel_codewajib |
string |
Channel Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_ASTRAPAY , ID_JENIUSPAY , ID_SAKUKU , PH_PAYMAYA , PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
channel_propertieswajib |
object |
Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
Parameter wajib MAYA (PAYMAYA)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
actionsopsional |
string |
Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan dalam respon adalah true . Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
Channel wajib pengalihan informasi lebih lanjut
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
is_redirect_requiredwajib |
boolean |
Menandakan apakah redirection/pengalihan wajib dilakukan untuk menyelesaikan pembayaran Ketika True, merchants mengalihkan end user ke url yang diberikan pada bagian “actions”. Ketika False, tidak diperlukan adanya redirection untuk melanjutkan pembayaran |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
callback_urlwajib |
string |
Callback URL dimana notifikasi pembayaran akan dikirimkan | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
updatedwajib |
string |
ISO 8601 Timestamp untuk update object charge. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
void_statusopsional |
string |
Status request void. Nilai tersedia: PENDING , FAILED , SUCCEEDED |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
voided_atopsional |
string |
ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
capture_nowwajib |
string |
Default: true . Parameter tidak digunakan saat ini |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
payment_method_idopsional |
string |
ID metode pembayaran dari Xendit sebagai representasi metode pembayaran pelanggan Anda. Hanya dapat digunakan untuk kanal yang mendukung pembayaran tokenisasi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
failure_codeopsional |
string |
Alasan kegagalan pembayaran oleh end user maupun dari provider eWallet. Kode kegagalan akan diberitahukan kepada merchant pada callback pembayaran atau melalui GET payment status setelah transaksi dilakukan oleh end user | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail objek parameter
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadataopsional |
object |
Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit |
Kode Eror
Contoh: Respon Eror Pembuatan Request Charge eWallet API
{
"error_code": "UNSUPPORTED_CURRENCY",
"message": "The payment currency request is not supported for this payment channel. Please refer to our API reference or docs to pick available currencies"
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat invalid input pada salah satu parameter |
UNSUPPORTED_CURRENCY400 |
Mata uang pembayaran pada request tidak mendukung untuk channel pembayaran ini. Silakan merujuk pada API reference atau docs untuk melihat mata uang yang tersedia |
INVALID_PAYMENT_METHOD_ID400 |
Terdapat ketidaksesuaian antara channel_code atau customer_id dalam request dengan data yang digunakan dalam pembuatan payment_method_id, atau payment_method_id tidak tersedia untuk akun terkait. Silakan mencoba kembali dengan payment_method_id yang valid |
INVALID_API_KEY401 |
Format API key tidak valid |
INVALID_MERCHANT_CREDENTIALS401 |
Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request |
CHANNEL_NOT_ACTIVATED403 |
Request pembayaran gagal dikarenakan channel pembayaran yang direquest belum diaktifkan di Xendit. Silakan melakukan aktivasi melalui dashboard atau menghubungi customer support Xendit |
CALLBACK_URL_NOT_FOUND404 |
Request pembayaran gagal dikarenakan tidak ditemukan callback url pada dashboard Xendit atau pada request header. Silakan masukkan callback url pada dashboard Xendit |
UNSUPPORTED_CONTENT_TYPE403 |
Tidak mendukung tipe konten yang di request |
CHARGE_LIMIT_EXCEEDED429 |
Telah terjadi 3 kali percobaan permintaan ke Jenius Pay per cashtag dalam kurun waktu 10 menit. Harap menunggu selama 10 menit sebelum mencoba memulai permintaan baru |
SERVER_ERROR500 |
Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu |
Notifikasi Pembayaran
Anda perlu menyediakan endpoint untuk sistem Anda agar dapat menerima seluruh notifikasi pembayaran dari sistem kami. Anda akan menerima callback ketika end user menyelesaikan pembayaran untuk eWallet yang tersedia. Silakan memasukkan endpoint pada Xendit dashboard pada bagian eWallets paid
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
Callback Payload
Contoh: Payload Callback 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_required": 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 | Deskripsi |
---|---|---|
x-callback-token |
string |
Callback token Xendit Anda untuk memverifikasi sumber callback |
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eventwajib |
string |
Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.capture terjadi ketika provider eWallet mengkonfirmasi status transaksi pembayaran |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataopsional |
object |
Objek charge eWallet akan dikumpulkan pada parameter ini. Silakan lihat bagian ini untuk informasi lengkapnya Data fields
|
Kode Kegagalan
Contoh: Respon Eror - Pembuatan Void eWallet
{
"event": "ewallet.capture",
"business_id": "5abe2389ewpejrt238",
"created": "2020-04-20T16:25:52Z",
"data": {
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "FAILED",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_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": "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();
}
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
$charge_id = 'ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2';
$getEWalletChargeStatus = \Xendit\EWallets::getEWalletChargeStatus($charge_id);
var_dump($getEWalletChargeStatus);
?>
from xendit import EWallet
ewallet_charge = EWallet.get_ewallet_charge_status(
charge_id="ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
)
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
data := ewallet.GetEWalletChargeStatusParams{
ChargeID: "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
}
charge, chargeErr := ewallet.GetEWalletChargeStatus(&data)
if chargeErr != nil {
log.Fatal(chargeErr)
}
fmt.Printf("retrieved 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.getEWalletChargeStatus({
chargeID: 'ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2',
});
console.log(resp);
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
XenditClient xendit = new XenditClient(apiKey);
EWalletChargeClient eWalletCharge = xendit.EWalletCharge;
EWalletChargeResponse eWalletChargeRepsonse = await eWalletCharge.Get("ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2");
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-idopsional |
string |
User-id sub-account yang Anda ingin gunakan untuk membuat transaksi. Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut. |
Parameter Query | Tipe | Deskripsi |
---|---|---|
charge_id wajib |
string |
Anda perlu memasukkan id pada response body ketika melakukan request Pembuatan request charge eWallet |
Contoh: Respon Sukses Check eWallet Charge Status
Respon Sukses Check eWallet Charge Status
{
"id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
"business_id": "5f218745736e619164dc8608",
"reference_id": "test-reference-id",
"status": "PENDING",
"currency": "IDR",
"charge_amount": 1000,
"capture_amount": 1000,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://dashboard.xendit.co/register/1"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
"qr_checkout_string": "ID123XenditQRTest321DI"
},
"is_redirect_required": true,
"callback_url": "https://calling-back.com/xendit/shopeepay",
"created": "2017-07-21T17:32:28Z",
"updated": "2017-07-21T17:32:28Z",
"void_status": null,
"voided_at": null,
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_code": "tree_branch"
}
}
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4 | ||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | ||||||||||||||||||||||||||||||||||||||||
reference_idwajib |
string |
Reference ID yang dibuat oleh merchant Catatan: Harus unik per request pembayaran. |
||||||||||||||||||||||||||||||||||||||||
statuswajib |
string |
Status request charge
|
||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
||||||||||||||||||||||||||||||||||||||||
charge_amountwajib |
number |
Nominal charge yang direquest dari merchant | ||||||||||||||||||||||||||||||||||||||||
capture_amountopsional |
number |
Nominal capture yang direquest oleh merchant. Saat ini, capture_amount akan selalu sama dengan charge_amount |
||||||||||||||||||||||||||||||||||||||||
refunded_amountopsional |
number |
Total nominal refund dari merchant kepada end user | ||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali pakai |
||||||||||||||||||||||||||||||||||||||||
channel_codewajib |
string |
Channel Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_ASTRAPAY , ID_JENIUSPAY , ID_SAKUKU , PH_PAYMAYA , PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
||||||||||||||||||||||||||||||||||||||||
channel_propertiesopsional |
object |
Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
Parameter wajib MAYA (PAYMAYA)
|
||||||||||||||||||||||||||||||||||||||||
actionsopsional |
string |
Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan dalam respon adalah true . Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
|
||||||||||||||||||||||||||||||||||||||||
is_redirect_requiredwajib |
boolean |
Menandakan apakah redirection/pengalihan wajib dilakukan untuk menyelesaikan pembayaran Ketika True, merchants mengalihkan end user ke url yang diberikan pada bagian “actions”. Ketika False, tidak diperlukan adanya redirection untuk melanjutkan pembayaran |
||||||||||||||||||||||||||||||||||||||||
callback_urlwajib |
string |
Callback URL dimana notifikasi pembayaran akan dikirimkan | ||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||
updatedwajib |
string |
ISO 8601 Timestamp untuk update object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||
void_statusopsional |
string |
Status request void. Nilai tersedia: PENDING , FAILED , SUCCEEDED |
||||||||||||||||||||||||||||||||||||||||
voided_atopsional |
string |
ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||
capture_nowwajib |
string |
Default: true . Parameter tidak digunakan saat ini |
||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi | ||||||||||||||||||||||||||||||||||||||||
payment_method_idopsional |
string |
ID dari metode pembayaran . Hanya dapat digunakan untuk channel yang mendukung tokenisasi pembayaran | ||||||||||||||||||||||||||||||||||||||||
failure_codeopsional |
string |
Alasan kegagalan pembayaran oleh end user maupun dari provider eWallet. Kode kegagalan akan diberitahukan kepada merchant pada callback pembayaran atau melalui GET payment status setelah transaksi dilakukan oleh end user | ||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail objek parameter
|
||||||||||||||||||||||||||||||||||||||||
metadataopsional |
object |
Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit |
Kode Eror
Contoh: Eror Respon Check eWallet Charge Request
{
"error_code": "INVALID_API_KEY",
"message": "API key format is invalid"
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat invalid input pada salah satu parameter |
INVALID_API_KEY401 |
Format API key tidak valid |
INVALID_MERCHANT_CREDENTIALS401 |
Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian |
DATA_NOT_FOUND404 |
Spesifik Charge ID tidak ditemukan. Silakan cek query Anda lagi |
SERVER_ERROR500 |
Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu |
Void eWallet Charge
Void API akan memungkinkan Anda untuk melakukan void pada pembayaran eWallet yang sukses dimana 100% nominal akan dikembalikan kepada end user
Melakukan void untuk charge eWallet didefinisikan sebagai pembatalan pembayaran eWallet yang dilakukan di hari yang sama sebelum batas akhir pukul 23:50:00. Jika charge eWallet dibuat pada pukul 19:00:00 waktu lokal pada tanggal 1 September 2021, maksimum pembatalan transaksi ini adalah pukul 23:50:00 di hari yang sama
Untuk melakukan pembatalan pembayaran eWallet setelah waktu cut off, silakan menggunakan Refund API
Void API hanya akan bekerja untuk charge yang dibuat melalui /ewallets/charges
API dengan status SUCCEEDED
Void API akan mengembalikan PENDING
void_status
sebagai response setelah request dibuat. Callbak/notifikasi akan dikirimkan ke webhook/callback URL Anda setelah void diproses dengan sukses
Indonesia
Nilai | OVO | DANA | SHOPEEPAY | LINKAJA | ASTRAPAY | JENIUS PAY | SAKUKU |
---|---|---|---|---|---|---|---|
Tersedia di Xendit? |
✓ | ✓ | ✓ | ✓ untuk One-Time Payment, ✕ untuk Tokenized Payment | ✕ | ✓ | ✕ |
Periode Valid |
Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat | N/A | Di hari yang sama sebelum 23:50:00 waktu setempat | N/A |
Fee Transaksi Dikembalikan? |
✓ | ✓ | ✓ | ✓ | N/A | ✓ | N/A |
Philippines
Nilai | GCASH | MAYA (PAYMAYA) | GRABPAY | SHOPEEPAY |
---|---|---|---|---|
Tersedia di Xendit? |
✓ | ✓ | ✓ | ✓ |
Periode Valid |
Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat | Di hari yang sama sebelum 23:50:00 waktu setempat |
Fee Transaksi Dikembalikan? |
✓ | ✓ | ✓ | ✓ |
Endpoint: Pembuatan Void eWallet
POST https://api.xendit.co/ewallets/charges/{id}/void
Parameter Request
Contoh: Request - Pembuatan Void eWallet
curl https://api.xendit.co/ewallets/charges/ewc_532as23lew2321id/void -X POST \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
-H 'Content-Type: application/json' \
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 |
Path Parameter | Tipe | Deskripsi |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik untuk transaksi charge request (dikembalikan sebagai id pada request charge eWallet) |
Parameter Respon
Contoh: Respon Pembuatan Void eWallet
{
"id" : "ewc_532as23lew2321id",
"business_id" : "5easfnn23aadlmnaa42",
"reference_id" : "test_reference_id",
"status" : "SUCCEEDED",
"currency" : "IDR",
"charge_amount" : 123456,
"capture_amount" : 123456,
"refunded_amount" : null,
"checkout_method" : "ONE_TIME_PAYMENT",
"channel_code" : "ID_DANA",
"channel_properties" :
{
"mobile_number" : "+6287777771111"
},
"actions" : null,
"is_redirect_required" : false,
"callback_url" : "https://webhook.me/gethooked",
"created" : "2020-04-20T16:23:52Z",
"updated" : "2020-04-20T16:23:52Z",
"void_status" : "PENDING",
"voided_at" : null,
"capture_now" : true,
"customer_id" : null,
"payment_method_id" : null,
"failure_code" : null,
"basket" : null,
"metadata" :
{
"branch_code" : "senayan_372"
}
}
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik untuk request charge transaksi. Akan selalu berawalan 'ewc_', diikuti dengan UUIDv4 | ||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID dari merchant | ||||||||||||||||||||||||||||||||||||||||
reference_idwajib |
string |
Reference ID yang disediakan oleh merchant Note: Harus unik per request pembayaran. |
||||||||||||||||||||||||||||||||||||||||
statuswajib |
string |
Status request charge
|
||||||||||||||||||||||||||||||||||||||||
currencywajib |
string |
string Mata uang yang digunakan pada transaksi dalam format ISO4217 Nilai yang didukung: IDR , PHP |
||||||||||||||||||||||||||||||||||||||||
charge_amountwajib |
number |
Nominal charge yang direquest | ||||||||||||||||||||||||||||||||||||||||
capture_amountopsional |
number |
Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount |
||||||||||||||||||||||||||||||||||||||||
refunded_amountopsional |
number |
Total nominal refund dari merchant kepada end user | ||||||||||||||||||||||||||||||||||||||||
checkout_methodwajib |
string |
Checkout method menentukan flow pembayaran yang digunakan untuk memproses transaksiONE_TIME_PAYMENT digunakan untuk checkout sekali waktuTOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang |
||||||||||||||||||||||||||||||||||||||||
channel_codewajib |
string |
Channel Code menunjukkan eWallet mana yang digunakan untuk memproses transaksi Channel tersedia: ID_OVO , ID_DANA , ID_LINKAJA , ID_SHOPEEPAY , ID_JENIUSPAY , PH_PAYMAYA ,PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
||||||||||||||||||||||||||||||||||||||||
channel_propertiesopsional |
object |
Informasi spesifik yang diwajibkan untuk tersedia dari spesifik channel yang digunakan. OVO - one time payment parameter wajib
JENIUS PAY parameter wajib
OVO - tokenized payment parameter wajib
DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
SHOPEEPAY - parameter wajib tokenized payment
GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
Parameter Wajib MAYA (PAYMAYA)
|
||||||||||||||||||||||||||||||||||||||||
actionsopsional |
string |
Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan pada response adalah true . Merchants harus memilih salah satu dari opsi tersedia berdasarkan pengalaman ideal untuk alur pembayaran Anda
|
||||||||||||||||||||||||||||||||||||||||
is_redirect_requiredwajib |
boolean |
Tanda yang mengindikasikan apakah pengalihan diwajibkan untuk end user dapat menyelesaiakan 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_urlwajib |
string |
Callback URL dimana notifikasi pembayaran akan dikirimkan | ||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||
updatedwajib |
string |
ISO 8601 Timestamp untuk update object charge. Timezone UTC+0 | ||||||||||||||||||||||||||||||||||||||||
void_statusopsional |
string |
Status dari void request. Nilai seharusnya PENDING |
||||||||||||||||||||||||||||||||||||||||
voided_atopsional |
string |
Timestamp dengan ISO 8601 ketika transaksi divoid | ||||||||||||||||||||||||||||||||||||||||
capture_nowwajib |
string |
Default: true . Parameter tidak digunakan saat ini |
||||||||||||||||||||||||||||||||||||||||
customer_idopsional |
string |
ID dari customer object yang dibuat dengan Xendit. ID akan dihubungkan dengan transaksi | ||||||||||||||||||||||||||||||||||||||||
payment_method_idopsional |
string |
ID dari payment method . Hanya digunakan untuk channel yang mendukung tokenisasi pembayaran | ||||||||||||||||||||||||||||||||||||||||
failure_codeopsional |
string |
Alasan kegagalan pembayaran oleh end user atau eWallet issuer. Failure_code is diinformasikan kepada merchant melalui callbak atau GET payment status setelah pembayaran dilakukan oleh end user | ||||||||||||||||||||||||||||||||||||||||
basketopsional |
array |
Himpunan objek yang mendeskripsikan item yang dibeli Detail objek parameter
|
||||||||||||||||||||||||||||||||||||||||
metadataopsional |
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 Eror
Contoh: Respon Eror - Pembuatan Void eWallet
{
"error_code": "DATA_NOT_FOUND",
"message": "Resource not found. Please check your query again."
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat invalid input pada salah satu parameter. |
VOID_NOT_SUPPORTED400 |
Fitur void tidak tersedia pada eWallet provider. |
VOID_TEMPORARILY_UNAVAILABLE400 |
Fitur void tidak dapat digunakan antara pukul 00:00:00 dan pukul 05:00:00 UTC+07:00/UTC+08:00 setiap harinya untuk transaksi ShopeePay. Silakan coba lagi setelah pukul 05:00:00 UTC+07:00/UTC+08:00. |
INVALID_API_KEY401 |
Format API key tidak valid. |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request. |
INELIGIBLE_TRANSACTION403 |
Pembayaran telah melewati periode valid void (setelah 23:50:00 UTC+07:00/UTC+08:00) untuk request atau status charge bukan SUCCEEDED . |
INELIGIBLE_MERCHANT403 |
Merchant memiliki pengaturan settlement yang tidak berhak untuk melakukan void transaksi. Silakan contact Xendit customer support untuk resolusinya. |
DATA_NOT_FOUND404 |
Sumber tidak ditemukan. Silakan check kembali query Anda. |
SERVER_ERROR500 |
Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu. |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu. |
Get Void
Untuk mendapatkan status request void, gunakan Get eWallet Charge Status API dimana response termasuk parameter void_status
and voided_at
Callback Void
Void callback akan dikirimkan sebagai POST request ke endpoint yang sama yang digunakan untuk melakukan charge eWallet. Catatan: Mohon untuk memberikan response callback dengan status 200
sehingga kami mengetahui callback telah diterima dan tidak diperlukan pengiriman ulang
Callback Payload
Contoh: Callback Payload Void eWallet Sukses
{
"event": "ewallet.void",
"business_id": "5abe2389ewpejrt238",
"created": "2020-04-20T16:25:52Z",
"data": {
"id": "ewc_532as23lew2321id",
"reference_id": "test_reference_id",
"status": "VOIDED",
"currency": "IDR",
"checkout_method": "ONE_TIME_PAYMENT",
"charge_amount": 123456,
"capture_amount": 123456,
"refunded_amount": null,
"channel_code": "ID_DANA",
"channel_properties": {
"mobile_number": "+6287777771111"
},
"actions": null,
"is_redirect_required": false,
"callback_url": "https://webhook.me/gethooked",
"created": "2020-04-20T16:23:52Z",
"updated": "2020-04-20T16:23:52Z",
"void_status": "SUCCEEDED",
"voided_at": "2020-04-20T23:24:30Z",
"capture_now": true,
"customer_id": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_code": "senayan_372"
}
}
}
Parameter Header | Tipe | Deskripsi |
---|---|---|
x-callback-token |
string |
Callback token Xendit Anda untuk memverifikasi sumber callback |
Parameter Body | Tipe | Deskripsi |
---|---|---|
eventwajib |
string |
Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.void terjadi ketika provider eWallet mengkonfirmasi status request void |
business_idwajib |
string |
Business ID dari merchant |
createdwajib |
string |
Timestamp dalam ISO 8601 untuk pembuatan notifikasi callback. Timezone UTC+0 |
dataopsional |
object |
object eWallet void, dengan tidak menampilkan business_id |
Refund eWallet Charge
Refund API memungkinkan Anda untuk melakukan refund secara penuh atau partial. Anda dapat melakukan beberapa kali refund request untuk satu transaksi selama total nominal refund tidak melebihi nominal asli transaksi
Selain Refund API, Void API dapat juga digunakan untuk membatalkan pembayaran eWallet di hari yang sama dengan pembuatan charge dan sebelum batas waktu 23:50:00 waktu setempat. Pada transaksi Void, fee dan VAT akan dikembalikan karena pembatalan terjadi sebelum ada perpindahan dana. Secara spesifik untuk pembayaran DANA, fee transaksi dan PPN akan dikembalikan pada request void sukses dan bukan request refund sukses
Refund API hanya bisa digunakan untuk charge yang dibuat melalui /ewallets/charges
API dengan status SUCCEEDED
or REFUNDED
Refund API akan mengembalikan status PENDING
pada respon. Callback/notifikasi akan dikirimkan ke sistem URL Anda setelah refund diproses dengan sukses
Indonesia
Nilai | OVO | DANA | SHOPEEPAY | LINKAJA | ASTRAPAY | JENIUS PAY | SAKUKU |
---|---|---|---|---|---|---|---|
Tersedia di Xendit? |
✕ untuk One-Time Payment, ✓ untuk Tokenized Payment | ✓ | ✓ | ✓ untuk One-Time Payment, ✕ untuk Tokenized Payment | ✕ | ✓ | ✕ |
Partial Refund Diperbolehkan? |
✓ | ✓ | ✓ | ✕ | N/A | ✓ | N/A |
Multiple Refunds Diperbolehkan? |
✓ | ✓ | ✓ | ✕ | N/A | ✕ (Hanya 1 pengembalian dana sebagian diperbolehkan untuk setiap pembayaran) | N/A |
Periode Valid |
14 Hari | 30 Hari | 365 Hari | 30 Hari | N/A | Selalu Valid/Tidak Kedaluwarsa | N/A |
Fee Transaksi Dikembalikan? |
✓ | ✕ | ✓ | ✓ | N/A | ✓ untuk Full Refund, ✕ untuk Partial Refund | N/A |
Filipina
Nilai | GCASH | MAYA (PAYMAYA) | GRABPAY | SHOPEEPAY |
---|---|---|---|---|
Tersedia di Xendit? |
✓ | ✓ | ✓ | ✓ |
Partial Refund Diperbolehkan? |
✓ | ✓ (Tidak di hari yang sama) |
✓ | ✓ |
Multiple Refund Diperbolehkan? |
✓ (Dibatasi maksimal 7 kali) |
✓ | ✓ | ✓ |
Periode Valid |
180 Hari | 365 Hari | 365 Hari | 365 Hari |
Fee Transaksi Dikembalikan? |
✓ | ✓ | ✓ | ✓ |
Endpoint: Pembuatan Refund eWallet
POST https://api.xendit.co/ewallets/charges/{id}/refunds
Parameter Request
Contoh: Request - Pembuatan Refund eWallet
curl hhttps://api.xendit.co/ewallets/charges/ewc_532as23lew2321id/refunds -X POST \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
-H 'Content-Type: application/json' \
--data-raw '{
"amount": "1000",
"reason": "REQUESTED_BY_CUSTOMER"
}'
Contoh: Sampel JSON request
{
"amount": 1000,
"reason": "REQUESTED_BY_CUSTOMER"
}
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 |
Path Parameter | Tipe | Deskripsi |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik untuk transaksi charge request (dikembalikan sebagai id pada request charge eWallet) |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount opsional |
number
|
Nominal untuk direfund kepada customer. Akumulasi nomial yang direfund tidak boleh melebihi nominal asli transaksi. Jika nominal tidak dicantumkan dalam body request, nominal tersisa yang belum direfund akan diproses |
reason opsional |
string
|
Alasan refund, salah satu nilai yang dapat digunakan. Nilai yang tersedia: DUPLICATE , FRAUDULENT , REQUESTED_BY_CUSTOMER , CANCELLATION , OTHERS
|
Parameter Respon
Contoh: Response - Pembuatan Refund eWallet
{
"id" : "ewr_532as23lew2321id",
"charge_id" : "5easfnn23aadlmnaa42",
"status" : "PENDING",
"currency" : "IDR",
"channel_code" : "ID_DANA",
"capture_amount" : 123456,
"refund_amount" : 123456,
"reason" : "REQUESTED_BY_CUSTOMER",
"failure_code" : null,
"created" : "2020-04-20T16:23:52Z",
"updated" : "2020-04-20T16:23:52Z"
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi refund |
charge_id | string |
Pengidentifikasi unik untuk transaksi charge |
status | string |
Status refund request Nilai tersedia: SUCCEEDED , FAILED , PENDING |
currency | string |
Mata uang yang digunakan pada transaksi menggunakan format ISO 4217 Mata uang yang didukung: IDR , PHP |
capture_amount | number |
Nominal capture yang direquest |
refund_amount | number |
Nominal untuk direfund |
channel_code | string |
Kode channel yang mengindikasikan provider eWallet Channel tersedia: ID_OVO , ID_DANA , ID_SHOPEEPAY , ID_LINKAJA , ID_JENIUSPAY , PH_PAYMAYA ,PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
reason | string |
Alasan Refund |
failure_code | string |
Alasan kegagalan transaksi refund |
created | string |
Timestamp dalam format ISO 8601 untuk request refund |
updated | number |
Timestamp dalam format ISO 8601 untuk update refund objek |
Kode Eror
Contoh: Respon Eror - Pembuatan Refund eWallet
{
"error_code": "DATA_NOT_FOUND",
"message": "Resource not found. Please check your query again."
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta. |
MAXIMUM_REFUND_AMOUNT_REACHED400 |
Request refund gagal karena refund dengan nominal penuh telah mencapai maksimum limit. |
MAXIMUM_REFUND_TRANSACTION_REACHED400 |
Anda telah mencapai transaksi pengembalian dana maksimum yang diizinkan untuk pembayaran ini. Silakan periksa batasan pengembalian dana untuk semua kanal eWallet di sini https://docs.xendit.co/id/ewallet/payment-flows/void-and-refund#charge-pengembalian-dana-ewallet. |
PARTIAL_REFUND_NOT_SUPPORTED400 |
Request refund sebagian gagal karena refund sebagian tidak tersedia pada penyedia eWallet. |
REFUND_TEMPORARILY_UNAVAILABLE400 |
Fitur refund tidak dapat digunakan antara pukul 00:00:00 dan pukul 05:00:00 UTC+07:00/UTC+08:00 setiap harinya untuk transaksi ShopeePay. Silakan coba lagi setelah pukul 05:00:00 UTC+07:00/UTC+08:00. |
REFUND_TEMPORARILY_UNAVAILABLE400 |
Refund sebagian tidak tersedia untuk Maya (PayMaya) pada hari transaksi. Silakan coba lagi setelah 23:59:59. |
REFUND_NOT_SUPPORTED400 |
Request refund gagal karena refund tidak tersedia pada penyedia eWallet. |
REFUND_IN_PROGRESS400 |
Refund request secara bersamaan untuk charge eWallet yang sama tidak diperbolehkan. Silakan melakukan refund request kembali setelah request sebelumnya selesai. |
INVALID_API_KEY401 |
Format API key tidak sah. |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request. |
INELIGIBLE_TRANSACTION403 |
Pembayaran telah melewati masa berlaku refund atau status transaksi “FAILED”, “PENDING”, atau “VOIDED”. |
INSUFFICIENT_BALANCE403 |
Saldo Xendit tidak cukup untuk melakukan refund. Silakan top up saldo Xendit Anda atau menunggu transaksi lainnya settled. |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi. |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera. |
CHANNEL_UNAVAILABLE503 |
Saluran pembayaran saat ini sedang mengalami kendala tak terduga. Penyedia paylater akan diifnormasikan untuk menyelesaikan isu. |
Callback Refund
Notifikasi callback refund akan dikirimkan sebagai POST request ke endpoint yang sama yang digunakan untuk membuat charge eWallet. Catatan: Mohon untuk memberikan response callback dengan status 200
sehingga kami mengetahui callback telah diterima.
Callback Payload
Contoh: Payload Callback Success Refund
{
"event": "ewallet.refund",
"business_id": "5abe2389ewpejrt238",
"created": "2020-04-20T16:25:52Z",
"data": {
"id": "ewr_532as23lew2321id",
"charge_id": "ewc_5easfnn23aadlmnaa42",
"status": "SUCCEEDED",
"currency": "IDR",
"channel_code": "ID_DANA",
"capture_amount": 123456,
"refund_amount": 123456,
"reason": "REQUESTED_BY_CUSTOMER",
"failure_code": null,
"created": "2020-04-20T16:23:52Z",
"updated": "2020-04-20T16:23:52Z"
}
}
Parameter Header | Tipe | Deskripsi |
---|---|---|
x-callback-token |
string |
Callback token Xendit Anda untuk memverifikasi sumber callback |
Parameter Body | Tipe | Deskripsi |
---|---|---|
eventwajib |
string |
Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.refund terjadi ketika provider eWallet mengkonfirmasi status request refund |
business_idwajib |
string |
Business ID dari merchant |
createdwajib |
string |
Timestamp dalam ISO 8601 untuk pembuatan notifikasi callback. Timezone UTC+0 |
dataopsional |
object |
object eWallet Refund, dengan tidak menampilkan business_id |
Kode Kegagalan
Kode Kegagalan | Deskripsi |
---|---|
INELIGIBLE_TRANSACTION |
Transaksi telah melewati periode valid untuk melakukan refund atau jumlah request refund telah melampaui jumlah yang diperbolehkan. |
INSUFFICIENT_BALANCE |
Akun Switcher tidak memiliki cukup saldo untuk melakukan refund. Silakan mencoba kembali setelah memastikan saldo akun switcher cukup. |
REFUND_TEMPORARILY_UNAVAILABLE |
Refund sementara tidak tesedia dikarenakan limitasi settlement dengan penyedia eWallet. Silakan coba kembali. |
MAXIMUM_USER_BALANCE_EXCEEDED |
Refund tidak dapat diproses karena penerimaan refund akan mengakibatkan saldo user melebihi maksimum limit. |
INELIGIBLE_PARTIAL_REFUND_TRANSACTION |
Transaksi tidak dapat dilakukan refund sebagian karena keterbatasan di sisi penyedia eWallet. Anda dapat emncoba kembali dengan melakukan refund penuh. Grabpay tidak memperbolehkan refund sebagian untuk transaksi promo dan transaksi menggunakan Grabpoint. |
Get Refund
Dapatkan detil status refund untuk eWallet dengan menggunakan Refund ID
Endpoint: Get Refund eWallet menggunakan Refund ID
GET https://api.xendit.co/ewallets/charges/{charge_id}/refunds/{refund_id}
Parameter Request
Contoh: Request - GET Refund eWallet menggunakan Refund ID
curl https://api.xendit.co/ewallets/charges/ewc_5easfnn23aadlmnaa42/refunds/ewr_532as23lew2321id -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Header | Tipe | Deskripsi |
---|---|---|
for-user-id opsional |
string |
Sub-account user-id 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. |
Path Parameter | Type | Description |
---|---|---|
charge_id wajib |
string
|
ID dari charge eWallet |
refund_id wajib |
string
|
ID dari refund eWallet |
Parameter Respon
Contoh: Respond - GET Refund eWallet menggunakan Refund ID
{
"id" : "ewr_532as23lew2321id",
"charge_id" : "5easfnn23aadlmnaa42",
"status" : "SUCCEEDED",
"currency" : "IDR",
"channel_code" : "ID_DANA",
"capture_amount" : 123456,
"refund_amount" : 100000,
"reason" : "REQUESTED_BY_CUSTOMER",
"failure_code" : null,
"created" : "2020-04-20T16:23:52Z",
"updated" : "2020-04-20T16:23:52Z"
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik dari refund transaksi |
charge_id | string |
Pengidentifikasi unik untuk transaksi charge |
status | string |
Status dari request refund Nilai tersedia: SUCCEEDED , FAILED , PENDING |
currency | string |
Mata uang yang digunakan pada transaksi menggunakan format ISO 4217 Mata uang yang didukung: IDR , PHP |
capture_amount | number |
Nominal capture yang direquest |
refund_amount | number |
Nominal untuk direfund |
channel_code | string |
Kode channel yang mengindikasikan provider eWallet Channel tersedia: ID_OVO , ID_DANA , ID_SHOPEEPAY , ID_LINKAJA , ID_JENIUSPAY , PH_PAYMAYA ,PH_GCASH , PH_GRABPAY , PH_SHOPEEPAY |
reason | string |
Alasan Refund |
failure_code | string |
Alasan kegagalan transaksi refund |
created | string |
Timestamp dalam format ISO 8601 untuk request refund |
updated | number |
Timestamp dalam format ISO 8601 untuk update refund objek |
Kode Eror
Contoh: Respon Eror - GET Refund eWallet menggunakanRefund ID
{
"error_code": "DATA_NOT_FOUND",
"message": "Resource not found. Please check your query again."
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta. |
INVALID_API_KEY401 |
Format API key tidak sah. |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request. |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi. |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera. |
Daftar Refund
Dapatkan detail seluruh refund eWallet yang berafiliasi dengan satu eWallet charge dengan menggunakan Charge ID
Endpoint: Daftar Refund eWallet Refunds menggunakan Charge ID
GET https://api.xendit.co/ewallets/charges/{id}/refunds
Parameter Request
Contoh: Request - Daftar Refund eWallet menggunakan Charge ID
curl https://api.xendit.co/ewallets/charges/ewc_532as23lew2321id/refunds -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Header | Tipe | Deskripsi |
---|---|---|
for-user-id opsional |
string |
Sub-account user-id 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. |
Path Parameter | Type | Description |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik untuk transaksi charge (dikembalikan sebagai pada request charge eWallet) |
Query Parameter | Type | Description |
---|---|---|
limit opsional |
number
|
Jumlah hasil maksimum yang dapat dikembalikan Default: 10 Minimum: 1 Maksimum: 50 |
status opsional |
string
|
Refund Status yang dikembalikan Nilai yang tersedia: SUCCEEDED , FAILED , PENDING
|
Parameter Respon
Contoh: Respon - Daftar Refund eWallet menggunakan - Response
{
"data": [
{
"id" : "ewr_532as23lew2321id",
"charge_id" : "ewc_5easfnn23aadlmnaa42",
"status" : "SUCCEEDED",
"currency" : "IDR",
"channel_code" : "ID_DANA",
"capture_amount" : 123456,
"refund_amount" : 100000,
"reason" : "REQUESTED_BY_CUSTOMER",
"failure_code" : null,
"created" : "2020-04-20T16:23:52Z",
"updated" : "2020-04-20T16:23:52Z"
},
{
"id" : "ewr_532as23lew2321id",
"charge_id" : "5easfnn23aadlmnaa42",
"status" : "SUCCEEDED",
"currency" : "IDR",
"channel_code" : "ID_DANA",
"capture_amount" : 123456,
"refund_amount" : 23456,
"reason" : "OTHER",
"failure_code" : null,
"created" : "2020-04-20T16:23:52Z",
"updated" : "2020-04-20T16:23:52Z"
}
],
"has_more": false
}
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data | array |
Himpunan data object refund eWallet yang berhubungan dengan charge ID tertentu Parameter Refund Objeck
|
||||||||||||||||||||||||
has_more | boolean |
Mengindikasikan apakah item lebih tersedia untuk ditampilkan. Jika hasil kosong has_more akan false |
Kode Eror
Contoh: Respon Eror - Daftar Refund eWallet menggunakan Charge ID
{
"error_code": "DATA_NOT_FOUND",
"message": "Resource not found. Please check your query again."
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta. |
INVALID_API_KEY401 |
Format API key tidak sah. |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request. |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi. |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera. |
Tokenisasi - Buat Customer Objek
Versi
Anda sedang melihat versi terbaru dari eWallet API kami. Dalam versi API ini, integrasikan satu kali untuk mendapatkan akses ke semua eWallet yang tersedia maupun yang akan ada di Xendit! API ini juga akan digunakan untuk mendukung alur pembayaran tokenisasi dan auth/capture dalam waktu dekat.
Versi | Log Perubahan |
---|---|
Account linking metode pembayaran Terbaru |
Penyederhanaan alur tokenisasi dan Account Linking menjadi 1 API. Tersedia untuk OVO , DANA , LINKAJA , dan SHOPEEPAY untuk kanal Indonesia dan PAYMAYA , GRABPAY dan SHOPEEPAY untuk kanal FilipinaAnda dapat mengakses API baru dengan mudah dengan memanggil POST .../v2/payment_methods |
LAT account linking flow versi dengan account linking akun sebelumnya |
Tokenisasi dan alur account linking menggunakan 2 API yg berbeda. |
Ada 2 langkah yang diperlukan untuk melakukan account linking menggunakan alur tokenisasi kami - dimulai dengan pembuatan Customer Objeck dan pembuatan metode pembayaran.
Langkah 1 - Pembuatan Customer Objek melalui /customers
API adalah langkah pertama yang diperlukan sebelum memulai account linking tokenisasi eWallet.
customer_id
yang dibuat akan digunakan dalam panggilan API berikutnya untuk mengidentifikasi pengguna yang melakukan account linking- Paramater yang hendak diisi bergantung pada persyaratan penyedia pembayaran (contoh: OVO mewajibkan untuk mengisi parameter nama dan nomor telepon)
- Dalam kasus seperti ini, Anda disarankan untuk membuat UI agar pengguna Anda dapat memasukkan informasi ini dengan mandiri
Silakan lihat persyaratan setiap saluran pembayaran di bawah ini dan bagian Customer untuk membuat customer objek.
Tokenisasi DANA / SHOPEEPAY (ID & PH) / MAYA (PAYMAYA) / GRABPAY - isian wajib di Customer Objek
Anda dapat mengisi parameter wajib yang tertera pada API /customers
. Tidak ada informasi wajib lainnya yang perlu diberikan untuk tokenisasi DANA, ShopeePay (ID & PH), Maya (PayMaya), GrabPay.
Tokenisasi OVO - Isian wajib di Customer Objek
Contoh Customer Object - Tokenisasi OVO
curl https://api.xendit.co/customers -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'content-type: application/json' \
--data '{
"reference_id": "demo_1475801962607",
"given_names": "John",
"mobile_number": "+6287774441111",
"email": "customer@website.com"
}' \
Request Body Parameter | Tipe | Deskripsi |
---|---|---|
reference_id wajib |
string
|
ID yang disediakan merchant untuk pelanggan (maks 255 karakter) |
mobile_number wajib |
string
|
Identitas yang digunakan oleh OVO untuk account linking. Nomor ponsel pelanggan menggunakan Standar internasional E.164 yang harus sesuai dengan database OVO. Format: +(kode negara)(nomor pelanggan)
|
given_names wajib |
string
|
Nama depan utama pelanggan (maks 255 karakter) |
Tokenisasi LINKAJA - Isian wajib di Customer Objek
Contoh Customer Object - Tokenisasi LINKAJA
curl https://api.xendit.co/customers -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'content-type: application/json' \
--data '{
"reference_id": "demo_1475801962607",
"mobile_number": "+6287774441111"
}' \
Request Body Parameter | Tipe | Deskripsi |
---|---|---|
reference_id wajib |
string
|
ID yang disediakan merchant untuk pelanggan (maks 255 karakter) |
mobile_number wajib |
string
|
Identitas yang digunakan oleh LinkAja untuk account linking. Nomor ponsel pelanggan menggunakan Standar internasional E.164 yang harus sesuai dengan database LinkAja. Format: +(kode negara)(nomor pelanggan)
|
Buat Customer - Eror
Lihat kesalahan umum lainnya di sini
Error Code | Keterangan |
---|---|
DUPLICATE_ERROR409 |
Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik |
IDEMPOTENCY_ERROR409 |
Idempotency-key telah digunakan sebelumnya. Gunakan idempotency-key yang unik dan coba kembali |
Tokenized - Account Linking
Langkah 2 - Account linking di tokenisasi eWallet ditandai dengan dilakukannya transaksi oleh merchant melalui token (linking) yang sudah diberikan otorisasi oleh eWallet (akun) pengguna akhir. Endpoint ini memulai proses otorisasi, dan sebagai hasilnya, payment method
akan diberikan.
Pengguna akhir akan diarahkan ke halaman host penyedia eWallet untuk mengotorisasi account linking. Setelah account linking diselesaikan, pemberitahuan account linking akan dikirim ke URL callback yang ditentukan di dasbor Xendit di bagian metode pembayaran
.
Tabel berikut menunjukkan aktivasi atau persetujuan yang diperlukan untuk menggunakan berbagai jenis alur pembayaran tokenisasi. Pada dasarnya, semua alur pembayaran tokenisasi membutuhkan persetujuan resmi dari mitra eWallet. Anda membutuhkan persetujuan khusus dari mitra eWallet untuk menggunakan fitur auto debit.
Indonesia
Nilai | OVO | DANA | LINKAJA | SHOPEEPAY |
---|---|---|---|---|
Pembayaran dengan pengalihan |
Persetujuan normal diperlukan | Persetujuan normal diperlukan | Persetujuan normal diperlukan | Persetujuan normal diperlukan |
Pembayaran auto debit |
Persetujuan khusus diperlukan | Persetujuan khusus diperlukan | ✕ | Persetujuan khusus diperlukan |
Filipina
Nilai | SHOPEEPAY | MAYA (PAYMAYA) | GRABPAY |
---|---|---|---|
Pembayaran auto debit |
Persetujuan normal diperlukan | Persetujuan normal diperlukan | Persetujuan normal diperlukan |
Endpoint: Account Linking - Create Payment Method
POST https://api.xendit.co/v2/payment_methods
Account Linking - Metode Pembayaran - Request
Contoh account linking - Metode Pembayaran - Request
curl https://api.xendit.co/v2/payment_methods -X POST \
--user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "EWALLET",
"reusability": "MULTIPLE_USE",
"ewallet": {
"channel_code": "OVO",
"channel_properties": {
"success_return_url": "https://your-redirect-website.com/success",
"failure_return_url": "https://your-redirect-website.com/failure"
}
},
"customer_id": "fc4c060b-3c41-4707-b7b2-df9c3376edde"
}' \
{
"type": "EWALLET",
"reusability": "MULTIPLE_USE",
"ewallet": {
"channel_code": "OVO",
"channel_properties": {
"success_return_url": "https://your-redirect-website.com/success",
"failure_return_url": "https://your-redirect-website.com/failure"
}
},
"customer_id": "fc4c060b-3c41-4707-b7b2-df9c3376edde"
}
Request Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type wajib |
string
|
Jenis metode pembayaran - gunakan EWALLET
|
||||||||||||||||||||
reusability wajib |
string
|
Menjelaskan apakah metode pembayaran dapat digunakan kembali untuk pembayaran berikutnya tanpa melalui proses penautan yang sama. gunakan MULTIPLE_USE sebagai nilai untuk eWallet |
||||||||||||||||||||
customer_id wajib |
string
|
ID customer objek yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk membuat ID customer | ||||||||||||||||||||
country wajib |
string
|
2-huruf ISO 3166-2 kode negara yang menunjukkan negara transaksi. Ini juga digunakan sebagai indikator untuk channel yang hadir di beberapa pasar (misalnya ShopeePay). Nilai yang tersedia - PH untuk Filipina, ID untuk Indonesia |
||||||||||||||||||||
reference_id opsional |
string
|
Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik | ||||||||||||||||||||
description opsional |
string
|
Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method | ||||||||||||||||||||
metadata opsional |
string
|
Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan dari pembuatan request. Objek dapat berisi hingga 50 keys, dengan panjang key name hingga 40 karakter dan nilai hingga 500 karakter |
||||||||||||||||||||
ewallet wajib |
object
|
Untuk type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
|
Account Linking - Metode Pembayaran - Respons
Contoh Account Linking - Metode Pembayaran - Respons Sukses
{
"id": "pm-123123123-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"country": "ID",
"business_id": "5f27a14a9bf05c73123123123",
"customer_id": "fc4123123-3c41-4707-b7b2-df9c3376edde",
"reference_id": "b63798d3-8240-48c3-af12-3b3c62c0981a",
"reusability": "MULTIPLE_USE",
"status": "REQUIRES_ACTION",
"actions": [
{
"action": "AUTH",
"url": "https://link-web.xendit.co/auth/lat-bcf19cc8-f097-44fb-839c-6e4aed807d00/confirm",
"url_type": "WEB",
"method": "GET"
}
],
"description": null,
"created": "2021-08-18T03:52:56.936277373Z",
"updated": "2021-08-18T03:52:56.936277373Z",
"metadata": {
"sku": "IPHONE20"
},
"ewallet": {
"channel_code": "OVO",
"channel_properties": {
"failure_return_url": "https://your-redirect-website.com/failure",
"success_return_url": "https://your-redirect-website.com/success"
},
"account": {
"name": null,
"account_details": null,
"balance": null,
"point_balance": null
}
},
"direct_bank_transfer": null,
"direct_debit": null,
"card": null,
"over_the_counter": null,
"qr_code": null,
"virtual_account": null
}
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengenal unik untuk metode pembayaran. Memiliki awalan pm-. Example: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39 | ||||||||||||||||||||||||||||||||
typewajib |
string |
Jenis metode pembayaran - gunakan EWALLET |
||||||||||||||||||||||||||||||||
reusabilitywajib |
string |
Menjelaskan apakah metode pembayaran dapat digunakan kembali untuk pembayaran berikutnya tanpa melalui proses penautan yang sama lagi. gunakan MULTIPLE_USE |
||||||||||||||||||||||||||||||||
customer_idwajib |
string |
ID dari customer object yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk mendapatkan Customer ID | ||||||||||||||||||||||||||||||||
business_idwajib |
string |
Pengenal yang diberikan Xendit untuk bisnis yang memiliki transaksi | ||||||||||||||||||||||||||||||||
reference_idopsional |
string |
Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik | ||||||||||||||||||||||||||||||||
statuswajib |
string |
Status metode pembayaran. Nilai yang diperbolehkan - PENDING , REQUIRES_ACTION , ACTIVE , INACTIVE , EXPIRED REQUIRES_ACTION - Permintaan lulus validasi tetapi memerlukan langkah tambahan untuk mengaktifkan metode pembayaran yang digunakan. Tindakan umum adalah bagi merchant untuk memicu validasi OTP atau mengarahkan pelanggan Anda ke halaman autentikasi.ACTIVE - Metode pembayaran dapat digunakan untuk permintaan pembayaran.INACTIVE - Merchant yang membatalkan tautan pada metode pembayaran akan memicu status ini. Status ini mencegah transaksi lebih lanjut dari metode pembayaran dan dapat dibatalkan.EXPIRED - Otorisasi yang mendasari telah kedaluwarsa, tidak valid, atau telah dibatalkan tautannya. Status ini tidak dapat dibalik |
||||||||||||||||||||||||||||||||
countrywajib |
string |
2-huruf ISO 3166-2 kode negara yang menunjukkan negara transaksi. Ini juga digunakan sebagai indikator untuk channel yang hadir di beberapa pasar (misalnya ShopeePay). Nilai yang tersedia - PH untuk Filipina, ID untuk Indonesia |
||||||||||||||||||||||||||||||||
actionswajib |
object |
Jika status=REQUIRES_ACTION , berisi objek yang merinci kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
|
||||||||||||||||||||||||||||||||
ewalletwajib |
object |
Untuk type='EWALLET', ini berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
|
||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
updatedwajib |
string |
Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
descriptionopsional |
object |
Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method | ||||||||||||||||||||||||||||||||
metadataopsional |
object
| Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan dari pembuatan request. Objek dapat berisi hingga 50 keys, dengan panjang key name hingga 40 karakter dan nilai hingga 500 karakter |
Account Linking - Buat Metode Pembayaran - Eror
Error Code | Keterangan |
---|---|
API_VALIDATION_ERROR400 |
Ada masukan yang tidak valid di salah satu bidang permintaan yang diperlukan |
INVALID_API_KEY401 |
Format API key tidak valid |
CHANNEL_NOT_ACTIVATED403 |
Permintaan pembayaran gagal karena saluran pembayaran khusus ini belum diaktifkan melalui Xendit. Silakan aktifkan melalui dasbor Xendit atau Customer Success kami |
REQUEST_FORBIDDEN_ERROR403 |
API key dilarang untuk melakukan permintaan ini |
DUPLICATE_ERROR409 |
Kode Xendit yang mengindikasikan eror berikut: Ada catatan yang sudah ada dengan rincian yang diberikan |
SERVER_ERROR500 |
Terjadi kesalahan tak terduga, tim kami telah diberi tahu dan akan memecahkan masalah tersebut |
CHANNEL_UNAVAILABLE503 |
Saluran pembayaran yang diminta saat ini mengalami masalah yang tidak terduga. Penyedia eWallet akan diberi tahu untuk mengatasi masalah ini |
Tokenisasi - Callback Status Account Linking
Merupakan pemberitahuan saat metode pembayaran berhasil diaktifkan. Callback dipicu ketika metode pembayaran tertentu telah berhasil dibuat dan dapat digunakan untuk pembayaran. Pastikan Anda memiliki URL callback yang terdaftar di bagian Metode Pembayaran di pengaturan Dasbor Anda. Setelah Anda menerima webhook aktivasi metode pembayaran, Anda siap untuk melakukan transaksi pembayaran melalui eWallets Charge endpint kami.
Muatan Callback
Contoh: Muatan Callback Aktivasi Metode Pembayaran
{
"event": "payment_method.activated",
"business_id": "5f27a14a9bf05c73dd040bc8",
"created": "2020-08-29T09:12:33.001Z",
"data": {
"id": "pm-123123123-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"country": "ID",
"business_id": "5f27a14a9bf05c73123123123",
"customer_id": "fc4123123-3c41-4707-b7b2-df9c3376edde",
"reference_id": "b63798d3-8240-48c3-af12-3b3c62c0981a",
"reusability": "MULTIPLE_USE",
"status": "ACTIVE",
"actions": [
{
"action": "AUTH",
"url": "https://link-web.xendit.co/auth/lat-bcf19cc8-f097-44fb-839c-6e4aed807d00/confirm",
"url_type": "WEB",
"method": "GET"
}
],
"description": null,
"created": "2021-08-18T03:52:56.936277373Z",
"updated": "2021-08-18T03:52:56.936277373Z",
"metadata": {
"sku": "IPHONE20"
},
"ewallet": {
"channel_code": "SHOPEEPAY",
"channel_properties": {
"failure_return_url": "https://your-redirect-website.com/failure",
"success_return_url": "https://your-redirect-website.com/success"
},
"account": {
"name": null,
"account_details": "+62*****3123",
"balance": 10000,
"point_balance": 10000
}
},
"direct_bank_transfer": null,
"direct_debit": null,
"card": null,
"over_the_counter": null,
"qr_code": null,
"virtual_account": null
}
}
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eventwajib |
string |
Mengidentifikasi peristiwa yang memicu pemberitahuan ke merchant - payment_method.activated |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Identifikasi bisnis merchant yang diberikan oleh Xendit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 pembuatan notifikasi callback. Zona waktu UTC+0. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataopsional |
object |
Objek metode pembayaran Bidang data
|
Tokenisasi - Dapatkan Saldo Akun / Rincian Metode Pembayaran
Endpoint: Dapatkan saldo akun / rincian metode pembayaran
GET https://api.xendit.co/v2/payment_methods/{id}
Dapatkan Saldo Akun / Rincian Metode Pembayaran - Request
Contoh Dapatkan Saldo Akun dengan Permintaan Token Linked Account
curl https://api.xendit.co/v2/payment_methods/pm-EM8sad8as56dasdabk -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Path Parameter | Tipe | Deskripsi |
---|---|---|
idwajib |
string |
id metode pembayaran diterima dari langkah account linking. Memiliki awalan pm- . |
Dapatkan Saldo Akun / Rincian Metode Pembayaran - Respons
Endpoint ini meresponse payment method object:
Contoh cara mendapatkan Respons Saldo Akun / Rincian Metode Pembayaran
{
"id": "pm-123123123-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"country": "ID",
"business_id": "5f27a14a9bf05c73123123123",
"customer_id": "fc4123123-3c41-4707-b7b2-df9c3376edde",
"reference_id": "b63798d3-8240-48c3-af12-3b3c62c0981a",
"reusability": "MULTIPLE_USE",
"status": "PENDING",
"actions": [
{
"action": "AUTH",
"url": "https://link-web.xendit.co/auth/lat-bcf19cc8-f097-44fb-839c-6e4aed807d00/confirm",
"url_type": "WEB",
"method": "GET"
}
],
"description": null,
"created": "2021-08-18T03:52:56.936277373Z",
"updated": "2021-08-18T03:52:56.936277373Z",
"metadata": {
"sku": "IPHONE20"
},
"ewallet": {
"channel_code": "SHOPEEPAY",
"channel_properties": {
"failure_return_url": "https://your-redirect-website.com/failure",
"success_return_url": "https://your-redirect-website.com/success"
},
"account": {
"name": null,
"account_details": "+62*****3123",
"balance": 10000,
"point_balance": 10000
}
},
"direct_bank_transfer": null,
"direct_debit": null,
"card": null,
"over_the_counter": null,
"qr_code": null,
"virtual_account": null
}
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik untuk metode pembayaran. Memiliki awalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39 | ||||||||||||||||||||||||||||||||
typewajib |
string |
Jenis metode pembayaran - untuk menggunakan EWALLET |
||||||||||||||||||||||||||||||||
reusabilitywajib |
string |
Menjelaskan apakah metode pembayaran dapat digunakan kembali atau tidak untuk pembayaran berikutnya tanpa melalui proses penautan yang sama lagi. gunakan MULTIPLE_USE |
||||||||||||||||||||||||||||||||
customer_idwajib |
string |
ID customer object yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk menghasilkan Customer ID | ||||||||||||||||||||||||||||||||
business_idwajib |
string |
Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi | ||||||||||||||||||||||||||||||||
reference_idopsional |
string |
Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik | ||||||||||||||||||||||||||||||||
statuswajib |
string |
Status metode pembayaran. Nilai yang diizinkan - PENDING , REQUIRES_ACTION , ACTIVE , INACTIVE , EXPIRED REQUIRES_ACTION - Permintaan berhasil memenuhi validasi tetapi memerlukan langkah tambahan untuk mengaktifkan metode pembayaran yang akan digunakan. Merchant perlu memicu validasi OTP atau mengarahkan pelanggan ke halaman otentikasi.ACTIVE - Metode pembayaran dapat digunakan untuk permintaan pembayaran.INACTIVE - Merchant yang membatalkan tautan pada metode pembayaran akan memicu status ini guna mencegah transaksi lebih lanjut. Status dapat dibatalkan.EXPIRED - Otorisasi yang mendasari telah kedaluwarsa, tidak valid, atau telah dibatalkan tautannya. Status tidak dapat dibatalkan. |
||||||||||||||||||||||||||||||||
countrywajib |
string |
2-huruf ISO 3166-2 kode negara yang menunjukkan negara transaksi. Juga digunakan sebagai indikator untuk saluran yang hadir di beberapa pasar (misalnya ShopeePay). Nilai yang tersedia - PH , ID |
||||||||||||||||||||||||||||||||
actionswajib |
object |
If status=REQUIRES_ACTION , berisi objek yang merinci langkah selanjutnya untuk mengaktifkan metode pembayaran.
|
||||||||||||||||||||||||||||||||
ewalletwajib |
object |
Untuk type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet.
|
||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
updatedwajib |
string |
Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
descriptionopsional |
object |
Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method | ||||||||||||||||||||||||||||||||
metadataopsional |
object |
objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan dari pembuatan request. object dapat berisi hingga 50 key, dengan key name hingga 40 karakter dan nilai hingga 500 karakter. |
Dapatkan Saldo Akun / Rincian Metode Pembayaran - Eror
Lihat kesalahan umum lainnya di sini
Error Code | Keterangan |
---|---|
INVALID_API_KEY401 |
Format API key tidak valid |
REQUEST_FORBIDDEN_ERROR403 |
API key dilarang untuk melakukan permintaan ini |
DATA_NOT_FOUND_ERROR 404 |
payment_method_id yang diberikan tidak didukung atau belum diaktifkan untuk akun ini |
SERVER_ERROR500 |
Terjadi kesalahan tak terduga, tim kami telah diberi tahu dan akan memecahkan masalah tersebut |
Tokenisasi - Membatalkan Linking
Membatalkan tokenisasi account linking yang berhasil.
Endpoint: Batalkan linking metode pembayaran
POST https://api.xendit.co/v2/payment_methods/{id}/expire
Batalkan Linking Metode Pembayaran - Request
Contoh Request Pemutusan Linking Metode Pembayaran
curl https://api.xendit.co/v2/payment_methods/pm-EM8sad8as56dasdabk/expire -X POST \
-u xnd_development_OSuxk743ma423balls+2fT/7GlCAN3jg==:
Path Parameter | Tipe | Deskripsi |
---|---|---|
idwajib |
string |
Payment method id yang diterima dari langkah account linking. Berawalan pm- |
Batalkan Linking Metode Pembayaran - Respons
Contoh Response Pemutusan Linking Metode Pembayaran
{
"id": "pm-123123123-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"country": "ID",
"business_id": "5f27a14a9bf05c73123123123",
"customer_id": "fc4123123-3c41-4707-b7b2-df9c3376edde",
"reference_id": "b63798d3-8240-48c3-af12-3b3c62c0981a",
"reusability": "MULTIPLE_USE",
"status": "PENDING",
"actions": [
{
"action": "AUTH",
"url": "https://link-web.xendit.co/auth/lat-bcf19cc8-f097-44fb-839c-6e4aed807d00/confirm",
"url_type": "WEB",
"method": "GET"
}
],
"description": null,
"created": "2021-08-18T03:52:56.936277373Z",
"updated": "2021-08-18T03:52:56.936277373Z",
"metadata": {
"sku": "IPHONE20"
},
"ewallet": {
"channel_code": "OVO",
"channel_properties": {
"failure_return_url": "https://your-redirect-website.com/failure",
"success_return_url": "https://your-redirect-website.com/success"
},
"account": {
"name": null,
"account_details": null,
"balance": null,
"point_balance": null
}
},
"direct_bank_transfer": null,
"direct_debit": null,
"card": null,
"over_the_counter": null,
"qr_code": null,
"virtual_account": null
}
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idwajib |
string |
Pengidentifikasi unik untuk metode pembayaran. Berawalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39 | ||||||||||||||||||||||||||||||||
typewajib |
string |
Jenis metode pembayaran - gunakan EWALLET |
||||||||||||||||||||||||||||||||
reusabilitywajib |
string |
Menjelaskan apakah metode pembayaran dapat digunakan kembali untuk pembayaran berikutnya tanpa melalui proses linking yang sama. gunakan MULTIPLE_USE untuk eWallet |
||||||||||||||||||||||||||||||||
customer_idwajib |
string |
ID customer objek yang akan di-linking dengan token akun. Panggil Tokenized - Create customer untuk menghasilkan customer ID | ||||||||||||||||||||||||||||||||
business_idwajib |
string |
Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi | ||||||||||||||||||||||||||||||||
reference_idopsional |
string |
Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik | ||||||||||||||||||||||||||||||||
statuswajib |
string |
Status metode pembayaran. Nilai yang diizinkan - PENDING , REQUIRES_ACTION , ACTIVE , INACTIVE , EXPIRED REQUIRES_ACTION - Permintaan lulus validasi tetapi memerlukan langkah tambahan untuk mengaktifkan metode pembayaran yang akan digunakan. Tindakan yang biasa dilakukan merchant adalah memicu validasi OTP atau mengarahkan pelanggan ke halaman otentikasi.ACTIVE - Metode pembayaran dapat digunakan untuk permintaan pembayaran.INACTIVE - Pedagang yang membatalkan linking pada metode pembayaran akan memicu status ini. Status ini mencegah transaksi lebih lanjut dari metode pembayaran dan dapat dibatalkan.EXPIRED - Otorisasi yang mendasari telah kedaluwarsa, tidak valid, atau telah dibatalkan linkingnya. Status ini tidak dapat dibatalkan |
||||||||||||||||||||||||||||||||
countrywajib |
string |
2 huruf ISO 3166-2 kode negara yang menunjukkan negara transaksi. Juga digunakan sebagai indikator untuk saluran yang hadir di beberapa pasar (misalnya ShopeePay). Nilai yang tersedia - PH , ID |
||||||||||||||||||||||||||||||||
actionswajib |
object |
Jika status=REQUIRES_ACTION , ada rincian kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
|
||||||||||||||||||||||||||||||||
ewalletwajib |
objek |
Untuk Type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
|
||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||
descriptionopsional |
object |
Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method | ||||||||||||||||||||||||||||||||
metadataopsional |
objek |
Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan pengisian daya. Objek dapat berisi hingga 50 key, dengan key name hingga 40 karakter dan nilai hingga 500 karakter |
Membatalkan Linking Metode Pembayaran - Eror
Lihat kesalahan umum lainnya di sini
Error Code | Keterangan |
---|---|
INVALID_PAYMENT_METHOD 400 |
Aksi tidak dapat dilakukan dikarenakan status payment method |
INVALID_API_KEY401 |
Format API key tidak valid |
REQUEST_FORBIDDEN_ERROR403 |
API key dilarang untuk melakukan permintaan ini |
DATA_NOT_FOUND_ERROR 404 |
payment_method_id tidak ditemukan atau tidak dapat diakses untuk akun ini |
SERVER_ERROR500 |
Terjadi kesalahan tak terduga, tim kami telah diberi tahu dan akan memecahkan masalah tersebut |
CHANNEL_UNAVAILABLE503 |
Saluran pembayaran yang diminta saat ini mengalami masalah yang tidak terduga. Penyedia eWallet akan diberi tahu untuk mengatasi masalah ini |
Tokenisasi - Callback Token Kedaluwarsa
Callback Metode Pembayaran Kedaluwarsa
Callback akan dikirim ketika metode pembayaran tertentu telah kedaluwarsa atau telah dibatalkan. Anda dapat menggunakan ini untuk memberi tahu pelanggan Anda untuk melakukan linking kembali. Pastikan Anda memiliki URL callback yang terdaftar di Metode Pembayaran di pengaturan Dasbor Anda.
Nilai | OVO | DANA | LINKAJA | SHOPEEPAY | MAYA (PAYMAYA) | GRABPAY |
---|---|---|---|---|---|---|
Validitas Token |
Tidak Pernah Kedaluwarsa (Xendit secara otomatis memperbaharui token saat kadaluwarsa) | 10 Tahun | Tidak Pernah Kedaluwarsa | 5 Tahun | Tidak Pernah Kedaluwarsa | 1 Tahun |
Contoh: Callback Metode Pembayaran Kedaluwarsa
{
"event": "payment_method.expiry.expired",
"business_id": "5f27a14a9bf05c73dd040bc8",
"created": "2020-08-29T09:12:33.001Z",
"data": {
"id": "pm-123123123-f4d9-421c-9f0b-ab3b2b6bbc39",
"type": "EWALLET",
"country": "ID",
"business_id": "5f27a14a9bf05c73123123123",
"customer_id": "fc4123123-3c41-4707-b7b2-df9c3376edde",
"reference_id": "b63798d3-8240-48c3-af12-3b3c62c0981a",
"reusability": "MULTIPLE_USE",
"status": "EXPIRED",
"actions": [
{
"action": "AUTH",
"url": "https://link-web.xendit.co/auth/lat-bcf19cc8-f097-44fb-839c-6e4aed807d00/confirm",
"url_type": "WEB",
"method": "GET"
}
],
"description": null,
"created": "2021-08-18T03:52:56.936277373Z",
"updated": "2021-08-18T03:52:56.936277373Z",
"metadata": {
"sku": "IPHONE20"
},
"ewallet": {
"channel_code": "SHOPEEPAY",
"channel_properties": {
"failure_return_url": "https://your-redirect-website.com/failure",
"success_return_url": "https://your-redirect-website.com/success"
},
"account": {
"name": null,
"account_details": "+62*****3123",
"balance": 10000,
"point_balance": 10000
}
},
"direct_bank_transfer": null,
"direct_debit": null,
"card": null,
"over_the_counter": null,
"qr_code": null,
"virtual_account": null
}
}
Body Parameter | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
event wajib |
string |
Mengidentifikasi peristiwa yang memicu pemberitahuan ke merchant - payment_method.expiry.expired |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
business_idwajib |
string |
Business ID merchant yang diberikan oleh Xendit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdwajib |
string |
Stempel Waktu ISO 8601 untuk pembuatan callback. Zona waktu UTC+0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataopsional |
object |
Objek metode pembayaran Bidang data
|
PayLater
Melalui PayLater, pelanggan Anda dapat membeli barang dan membayarnya melalui cicilan. Pelanggan yang memiliki akun kredit aktif dari salah satu mitra kami dapat membeli barang dari toko Anda melalui pinjaman dengan angsuran fleksibel.
Dapatkan akses ke seluruh kanal PayLater yang tersedia sekarang dan yang akan datang dengan integrasi sederhana menggunakan Paylater API.
Untuk mendapatkan detil lengkap setiap API beserta panduan integrasi yang komprehensif, silakan merujuk kepada dokumentasi kami.
Inisiasi PayLater Plans
Berikan informasi kepada customer Anda mengenai PayLater plan atau angsuran yang tersedia.
Endpoint: Inisiasi PayLater Plans
POST https://api.xendit.co/paylater/plans
Versi
Anda sedang melihat versi terbaru API PayLater kami. Pada versi ini, dengan sekali integrasi Anda akan mendapatkan akses ke seluruh penyedia PayLater yang tersedia sekarang beserta seluruh penyedia Paylater yang akan tersedia masa mendatang! Klik di sini untuk melihat versi-versi sebelumnya.
Versi | Changelog |
---|---|
2021-06-30 Terbaru |
API baru yang sederhana dan konsisten yang mendukung penyedia PayLater utama di Indonesia dan Filipina API Versioning tidak dibutuhkan. Anda dapat mengakses API baru dengan memanggil POST /paylater/plans dan POST /paylater/charges |
2019-02-04 akan berhenti beroperasi pada 1 Februari 2023 |
Cardless credit API yang mendukung Kredivo /cardless-credit |
Parameter Rekues
Contoh: Inisiasi PayLater Plans - Request
curl https://api.xendit.co/paylater/plans -X POST \
-u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
-H 'Content-Type: application/json' \
--data-raw '{
"customer_id": "49d056bd-21e5-4997-85f2-2127544c2196",
"channel_code": "PH_BILLEASE",
"currency": "IDR",
"amount": 30000000,
"order_items": [{
"type": "PHYSICAL_PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 10000000,
"quantity": 3,
"url": "https://www.zngmyhome.com/dyson_vacuum",
"category": "Electronics",
"subcategory": "Appliances"
}]
}'
<?php
$url = "https://api.xendit.co/paylater/plans";
$apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
$data = [
"customer_id" => "49d056bd-21e5-4997-85f2-2127544c2196",
"channel_code" => "PH_BILLEASE",
"currency" => "IDR",
"amount" => 30000000,
"order_items" => [
"type" => "PHYSICAL_PRODUCT",
"reference_id" => "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount" => 10000000,
"quantity" => 3,
"url" => "https://www.zngmyhome.com/dyson_vacuum",
"category" => "Electronics",
"subcategory" => "Appliances"
]
];
$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;
const x = new require("xendit-node")({
secretKey:
"xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
});
const { PayLater } = x;
const payLaterSpecificOptions = {};
const plp = new PayLater(payLaterSpecificOptions);
const resp = await plp.initiatePayLaterPlans({
customer_id: '9d056bd-21e5-4997-85f2-2127544c2196',
channel_code: 'PH_BILLEASE',
currency: 'IDR',
amount: 30000000,
order_items: {
type: 'PHYSICAL_PRODUCT',
reference_id: 'SKU_123-456-789',
name: 'Dyson Vacuum',
net_unit_amount: 10000000,
quantity: 3,
url: 'https://www.zngmyhome.com/dyson_vacuum',
category: 'Electronics',
subcategory: 'Appliances'
}
});
console.log(resp);
from xendit import PayLater
paylater_plans = PayLater.initiate_paylater_plans(
customer_id="9d056bd-21e5-4997-85f2-2127544c2196",
channel_code="PH_BILLEASE",
currency="IDR",
amount=30000000,
order_items={
type="PHYSICAL_PRODUCT",
reference_id="SKU_123-456-789",
name="Dyson Vacuum",
net_unit_amount=10000000,
quantity=3,
url="https://www.zngmyhome.com/dyson_vacuum",
category="Electronics",
subcategory="Appliances"
}
)
Header | Tipe | Deskripsi |
---|---|---|
for-user-id opsional |
string |
Sub-account user-id 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 |
Parameter Body | Tipe | Deskripsi | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
customer_id wajib |
string
|
Pengidentifikasi unik untuk customer dari Create Customer API POST /customers Parameter yang wajib diatur untuk objek customer
|
|||||||||||||||||||||||||||
channel_code wajib |
string
|
Kode channel code untuk penyedia PayLater Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_UANGME , ID_INDODANA , ID_ATOME , PH_ATOME , PH_BILLEASE , PH_CASHALO
|
|||||||||||||||||||||||||||
currency wajib |
string
|
Kode mata uang ISO 4217 transaksi PayLaterMata uang yang didukung: IDR , PHP
|
|||||||||||||||||||||||||||
amount wajib |
number
|
Jumlah transaksi total yang sama dengan jumlah net_unit_amount dikali dengan quantity pada array order_items Batas transaksi per channel
|
|||||||||||||||||||||||||||
order_items wajib |
array
|
Array objek yang mendeskripsikan item-item yang dibeli menggunakan PayLaterParameter objek
|
Parameter Respon
Contoh: Inisiasi PayLater Plans - Respon Sukses
{
"id" : "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"customer_id" : "49d056bd-21e5-4997-85f2-2127544c2196",
"channel_code" : "PH_BILLEASE",
"currency" : "IDR",
"amount" : 218456,
"order_items": [{
"type": "PHYSICAL_PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 123456,
"quantity": 1,
"url": "https://www.zngmyhome.com/dyson_vacuum",
"category": "Electronics",
"subcategory": "Appliances",
"description": "A very powerful vacuum",
"metadata": null
},
{
"type" : "PHYSICAL_SERVICE",
"reference_id" : "SKU_123-456-790",
"name" : "Home Cleaning Service",
"net_unit_amount" : 100000,
"quantity" : 1,
"url" : "https://www.zngmyhome.com/home_cleaning",
"category" : "Services",
"subcategory" : null,
"description" : "1 hour deep cleaning up to 2 rooms",
"metadata" : null
}],
"options": [{
"downpayment_amount" : 400,
"installment_amount" : 600,
"interest_rate" : 0,
"total_amount" : 1000,
"interval" : "MONTH",
"interval_count" : 1,
"total_recurrence" : 1,
"description" : "Buy Now, Pay Later"
},
{
"downpayment_amount" : 400,
"installment_amount" : 100,
"interest_rate" : 0.025,
"total_amount" : 1015,
"interval" : "MONTH",
"interval_count" : 1,
"total_recurrence" : 6,
"description" : "6 month installment plan"
}],
"created": "2020-11-11T16:23:52Z"
}
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string |
Pengidentifikasi unik untuk objek PayLater Plan Selalu akan diawali dengan plp_ , diikuti dengan UUIDv4 |
||||||||||||||||||
customer_id | string |
Pengidentifikasi unik untuk customer | ||||||||||||||||||
channel_code | string |
Kode channel untuk penyedia PayLater Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_UANGME , ID_INDODANA , ID_ATOME , PH_ATOME , PH_BILLEASE , PH_CASHALO |
||||||||||||||||||
currency | string |
Kode mata uang ISO 4217 untuk transaksi PayLaterMata uang yang didukung: IDR , PHP |
||||||||||||||||||
amount | number |
Jumlah transaksi total yang sama dengan jumlah net_unit_amount dikali dengan quantity pada array order_items |
||||||||||||||||||
order_items | array |
Array objek yang mendeskripsikan item-item yang dibeli menggunakan PayLater | ||||||||||||||||||
options | array |
Payment plan tersedia yang dapat dilihat oleh user untuk membeli produk/jasa Anda. Langsung disediakan oleh penyedia PayLater. Notes: PH_CASHALO tidak menyediakan plan, Xendit akan memberikan array kosong.Detil opsi PayLater
|
||||||||||||||||||
created | string |
Timestamp ISO 8601 untuk pembuatan objek planFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
Kode Error
Contoh: Inisiasi PayLater Charge Request API - Respon Error
{
"error_code": "INVALID_CUSTOMER_ID",
"message": "Missing or invalid parameter(s) in customer_id: given_names, postcode"
}
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta. |
API_VALIDATION_ERROR400 |
Jumlah Tidak Sesuai dengan Order Amount Does Not Tally with Order Items request.body.amount harus sama dengan jumlah net_unit_amount * jumlah request.body.order_items |
API_VALIDATION_ERROR400 |
Invalid URL url URL harus valid |
INVALID_CUSTOMER_ID400 |
Parameter yang hilang atau tidak valid pada customer_id |
UNSUPPORTED_CURRENCY400 |
Mata uang pembayaran pada request tidak didukung oleh PayLater partner. Silakan merujuk pada API reference atau docs kami untuk melihat mata uang yang tersedia |
INVALID_API_KEY401 |
Kunci API tidak memiliki izin untuk layanan API ini |
INVALID_MERCHANT_CREDENTIALS401 |
Terdapat error dengan kredensial merchant yang disediakan oleh PayLater partner. Silakan hubungi customer support Xendit untuk pemyelesaian |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request |
CHANNEL_NOT_ACTIVATED403 |
API key tidak diperbolehkan untuk melakukan request |
DATA_NOT_FOUND404 |
Customer ID tidak valid. Silakan periksa ulang ID atau membuat ID menggunakan Customer API. |
SERVER_ERROR500 |
Error tidak terduga telah terjadi. Team kami telah diberitahukan untuk melakukan penyelesaian isu |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang di-request mengalami kendala yang tidak terduga. PayLater partner akan diberitahukan untuk penyelesaian isu |
Membuat Charge Paylater
Membuat Transaksi Paylater / Membuat URL Checkout
Versi
Anda sedang melihat versi terbaru dari API PayLater / Cardless Credit kami. Klik di sini untuk melihat versi-versi sebelumnya.
Endpoint: Create PayLater Charges
POST https://api.xendit.co/paylater/charges
Parameter Request
Contoh: Membuat Payment Request
curl https://api.xendit.co/paylater/charges -X POST \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
-H 'Content-Type: application/json' \
--data-raw '{
"plan_id": "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"reference_id": "order_id_123",
"checkout_method": "ONE_TIME_PAYMENT",
"success_redirect_url": "https://merchant.com/order/confirm",
"failure_redirect_url": "https://merchant.com/order/fail"
}'
<?php
$url = "https://api.xendit.co/paylater/charges";
$apiKey = "xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:";
$data = [
"plan_id" => "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"reference_id" => "order_id_123",
"checkout_method" => "ONE_TIME_PAYMENT",
"success_redirect_url" => "https://merchant.com/order/confirm",
"failure_redirect_url" => "https://merchant.com/order/fail"
];
$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;
const x = new require("xendit-node")({
secretKey:
"xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman",
});
const { PayLater } = x;
const payLaterSpecificOptions = {};
const plc = new PayLater(payLaterSpecificOptions);
const resp = await plc.createPayLaterCharge({
planID: 'plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4',
referenceID: 'order_id_123',
checkoutMethod: 'ONE_TIME_PAYMENT',
successRedirectURL: 'https://merchant.com/order/confirm',
failureRedirectURL: 'https://merchant.com/order/fail'
});
console.log(resp);
from xendit import PayLater
paylater_charge = PayLater.create_paylater_charge(
plan_id="plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
reference_id="order_id_123",
checkout_method="ONE_TIME_PAYMENT",
success_redirect_url="https://merchant.com/order/confirm",
failure_redirect_url="https://merchant.com/order/fail"
)
Header | Tipe | Deskripsi |
---|---|---|
for-user-id opsional |
string |
Sub-account user-id 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. |
Parameter Body | Tipe | Deskripsi |
---|---|---|
plan_id wajib |
string
|
ID Installment Plan yang diambil dari API Initiate PayLater Plans |
reference_id wajib |
string
|
Reference ID yang disediakan oleh merchant untuk transaksiFormat Special dan alphanumericPanjang maksimal 255 characters |
checkout_method wajib |
string
|
Metode checkout yang didukung: ONE_TIME_PAYMENT
|
success_redirect_url wajib |
string
|
URL di mana end user akan diarahkan setelah proses otorisasi berhasil Wajib HTTPS atau HTTP |
failure_redirect_url wajib |
string
|
URL di mana end-customer akan diarahkan jika proses otorisasi gagal dilakukan Wajin HTTPS atau HTTP |
payment_method_id opsional |
string
|
Payment method ID dari sumber dana end-customer Wajib jika checkout_method = TOKENIZED_PAYMENT (belum didukung) |
metadata opsional |
object
|
Objek dari informasi tambahan yang dapat digunakan oleh user. User mendefinisikan properti dan value JSON. Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan value hingga 500 karakter. Value ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
Parameter Respon
Contoh Respon Sukses Membuat PayLater Charge
{
"id": "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"customer_id": "49d056bd-21e5-4997-85f2-2127544c2196",
"plan_id": "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"business_id": "5f27a14a9bf05c73dd040bc8",
"reference_id": "order_id_123",
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "PH_BILLEASE",
"currency": "PHP",
"amount": 1234.56,
"refunded_amount": null,
"order_items": [{
"type": "PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 1234.56,
"quantity": 1,
"url": "https://www.zngmyhome.com/dyson_vacuum",
"category": "Electronics",
"subcategory": "Appliances",
"description": "A very powerful vacuum",
"metadata": null
}],
"success_redirect_url": "https://merchant.com/order/confirm",
"failure_redirect_url": "https://merchant.com/order/fail",
"status": "PENDING",
"created": "2020-11-11T16:23:52Z",
"updated": "2020-11-11T16:23:52Z",
"actions": {
"desktop_web_checkout_url": "https://webcheckout.this/",
"mobile_web_checkout_url": "https://webcheckout.this/",
"mobile_deeplink_checkout_url": "app://deeplinkcheckout.this/"
},
"expires_at": "2020-11-12T16:23:52Z",
"callback_url": "https://webhook.me/gethooked",
"payment_method_id": null,
"voided_at": null,
"refunds": null,
"metadata": null
}
Parameter Body | Tipe | Deskripsi | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi charge request Selalu akan diawali dengan plc_ , diikuti dengan UUIDv4 |
||||||||
customer_id | string |
Pengidentifikasi unik untuk customer | ||||||||
plan_id | string |
Pengidentifikasi unik untuk PayLater plan yang dibuat | ||||||||
business_id | string |
Business ID merchant | ||||||||
reference_id | string |
Reference ID yang dibuat oleh merchant untuk transaksi | ||||||||
channel_code | string |
Channel code untuk penyedia PayLater Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_UANGME , ID_INDODANA , ID_ATOME , PH_ATOME , PH_BILLEASE , PH_CASHALO |
||||||||
checkout_method | string |
Metode checkout yang didukung: ONE_TIME_PAYMENT |
||||||||
currency | string |
ISO 4217 Kode mata uang dari transaksi Paylater Mata uang yang didukung: IDR , PHP |
||||||||
amount | number |
Jumlah transaksi total yang sama dengan jumlah net_unit_amount dikali dengan quantity pada array order_items |
||||||||
refunded_amount | number |
Total nominal yang telah berhasil di refund kepada end user | ||||||||
order_items | array |
Himpunan objek yang mendeskripsikan item-item yang dibeli menggunakan PayLater | ||||||||
status | string |
Status chargePENDING , SUCCEEDED , FAILED Status of charge request
|
||||||||
success_redirect_url | string |
URL di mana customer akan diarahkan jika transaksi berhasil Wajib HTTPS atau HTTP |
||||||||
failure_redirect_url | string |
URL di mana customer akan diarahkan jika pembayaran gagal Wajib HTTPS atau HTTP |
||||||||
created | string |
Timestamp ISO 8601 untuk pembuatan transaksiFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
||||||||
updated | string |
Timestamp ISO 8601 untuk pembaharuan objek terbaruFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
||||||||
actions | object |
Checkout URL milik Partner Paylater di mana end-user akan diarahkan untuk menyelesaikan pembayaranJenis-jenis URL redirections
|
||||||||
expires_at | string |
Timestamp ISO 8601 untuk pembaharuan objek terbaruFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
||||||||
callback_url | string |
URL callback default pada dashbor di mana status charge akan diberikan notifikasi | ||||||||
payment_method_id | string |
Payment method ID dari sumber dana end-customer Wajib jika checkout_method = TOKENIZED_PAYMENT (belum dapat dilakukan) |
||||||||
voided_at | string |
ISO 8601 Timestamp ketika transaksi dilakukan void Format: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
||||||||
metadata | object |
Objek dari informasi tambahan yang dapat digunakan oleh user. User mendefinisikan properti dan value JSON. Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan value hingga 500 karakter. Value hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
||||||||
refunds | array |
Himpunan refund objek ID (hanya akan menampillkan refund dengan status SUCCEEDED ) |
Kode Error
Contoh: Respon Error API Membuat PayLater Charge Request
{
"error_code": "API_VALIDATION_ERROR",
"message": "PayLater partner does not support requested checkout_method."
}
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta |
API_VALIDATION_ERROR400 |
Unsupported Checkout Type PayLater Partner tidak dapat menggunakan checkout_method yang diminta |
INVALID_API_KEY401 |
API key tidak memiliki izin untuk layanan API ini |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request ini |
PAYLATER_PLAN_DATA_NOT_FOUND404 |
PayLater Plan ID tidak valid. Mohon memeriksa ulang ID atau membuat ID menggunakan API Paylater Plans |
SERVER_ERROR500 |
Error tidak terduga telah terjadi. Tim kami telah diberitahu untuk melakukan penyelesaian isu |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang diminta mengalami kendala yang tidak terduga. Partner Paylater akan diberitahukan untuk penyelesaian isu |
Payment Status Callback
Anda harus mempersiapkan endpoint dari sistem Anda untuk menerima seluruh notifikasi callback pembayaran dari sistem kami. Anda akan menerima callback ketika end-customer mencoba melakukan pembayaran dengan PayLater. Silakan menentukan endpoint ini pada halaman URL callback dashboard Xendit callback di bawah PayLater paid
.
Notifikasi pembayaran callback akan dikirim sebagai POST request kepada callback_url
yang ditentukan di dashboard. Catatan: Mohon berikan respon balik dengan status 200
agar kami tahu bahwa notifikasi telah diterima dan tidak perlu mengulang notifikasi.
POST callback-url
Versi
Anda sedang melihat versi terbaru API PayLater / Cardless Credit kami. Klik di sini untuk melihat versi-versi sebelumnya.
Callback Payload
Callback ini dipicu ketika ada pembayaran PayLater yang SUCCEEDED
atau FAILED
.
Contoh: PayLater Callback Pembayaran Callback Payload
{
"event": "paylater.payment",
"business_id": "5f27a14a9bf05c73dd040bc8",
"created": "2020-11-11T16:28:52Z",
"data": {
"id": "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"customer_id": "49d056bd-21e5-4997-85f2-2127544c2196",
"plan_id": "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"business_id": "5f27a14a9bf05c73dd040bc8",
"reference_id": "order_id_123",
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "PH_BILLEASE",
"currency": "PHP",
"amount": 1234.56,
"refunded_amount": null,
"order_items": [{
"type": "PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 1234.56,
"quantity": 1,
"url": "https://www.zngmyhome.com/dyson_vacuum",
"category": "Electronics",
"subcategory": "Appliances",
"description": "A very powerful vacuum",
"metadata": null
}],
"success_redirect_url": "https://merchant.com/order/confirm",
"failure_redirect_url": "https://merchant.com/order/fail",
"status": "SUCCEEDED",
"created": "2020-11-11T16:23:52Z",
"updated": "2020-11-11T16:23:52Z",
"actions": {
"desktop_web_checkout_url": "https://webcheckout.this/",
"mobile_web_checkout_url": "https://webcheckout.this/",
"mobile_deeplink_checkout_url": "app://deeplinkcheckout.this/"
},
"expires_at": "2020-11-12T16:23:52Z",
"callback_url": "https://webhook.me/gethooked",
"payment_method_id": null,
"voided_at": null,
"refunds": null,
"metadata": null
}
}
Parameter Header | Deskripsi/th> |
---|---|
x-callback-token |
string Token callback unik akun Xendit Anda untuk verifikasi asal callback |
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
event | string |
Mengidentidikasi event yang memicu notifikasi ke merchant.paylater.payment terjadi ketika PayLater partner mengonfirmasi status pembayaran transaksi |
||||||||||||||||||||||||||||||||||||||||||||||||
business_id | string |
Business ID merchant | ||||||||||||||||||||||||||||||||||||||||||||||||
created | string |
Timestamp ISO 8601 pembuatan event. Menggunakan timezone UTC+0 |
||||||||||||||||||||||||||||||||||||||||||||||||
data | object |
Objek PayLater charge akan nested pada parameter ini Field data
|
Cek PayLater Charge melalui ID
Cek detil pembayaran Paylater melalui Charge ID
Endpoint: Cek PayLater Charge melalui ID
GET https://api.xendit.co/paylater/charges/{id}
Paramter Request
Contoh: Cek PayLater Charge Status melalui ID - Request
curl https://api.xendit.co/paylater/charges/plc_8cb12305-9bcf-4441-a087-ee0d446e297b/ -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
<?php
use Xendit\Xendit;
require 'vendor/autoload.php';
Xendit::setApiKey('xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman');
$charge_id = 'plc_8cb12305-9bcf-4441-a087-ee0d446e297b';
$getPayLaterChargeStatus = \Xendit\PayLater::getPayLaterChargeStatus($charge_id);
var_dump($getPayLaterChargeStatus);
?>
const x = new require("xendit-node")({
secretKey:
"xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman",
});
const { PayLater } = x;
const paylaterSpecificOptions = {};
const pl = new PayLater(paylaterSpecificOptions);
const resp = await pl.getPayLaterChargeStatus({
chargeID: 'plc_8cb12305-9bcf-4441-a087-ee0d446e297b',
});
console.log(resp);
from xendit import PayLater
paylater_charge = PayLater.get_paylater_charge_status(
charge_id="plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
)
Header | Tipe | Deskripsi |
---|---|---|
for-user-id opsional |
string |
Sub-account user-id 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. |
Parameter Path | Tipe | Deskripsi |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik untuk charge request transaksi (dikembalikan sebagai id pada PayLater Charge request) |
Parameter Respon
Contoh: Cek Status PayLater Charge melalui ID - Respon
{
"id": "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"customer_id": "49d056bd-21e5-4997-85f2-2127544c2196",
"plan_id": "plp_3d88d952-9505-4ed7-84d3-e8639e99e9c4",
"business_id": "5f27a14a9bf05c73dd040bc8",
"reference_id": "order_id_123",
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "PH_BILLEASE",
"currency": "PHP",
"amount": 1234.56,
"refunded_amount": null,
"order_items": [{
"type": "PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 1234.56,
"quantity": 1,
"url": "https://www.zngmyhome.com/dyson_vacuum",
"category": "Electronics",
"subcategory": "Appliances",
"description": "A very powerful vacuum",
"metadata": null
}],
"success_redirect_url": "https://merchant.com/order/confirm",
"failure_redirect_url": "https://merchant.com/order/fail",
"status": "SUCCEEDED",
"created": "2020-11-11T16:23:52Z",
"updated": "2020-11-11T16:23:52Z",
"actions": {
"desktop_web_checkout_url": "https://webcheckout.this/",
"mobile_web_checkout_url": "https://webcheckout.this/",
"mobile_deeplink_checkout_url": "app://deeplinkcheckout.this/"
},
"expires_at": "2020-11-12T16:23:52Z",
"callback_url": "https://webhook.me/gethooked",
"payment_method_id": null,
"voided_at": null,
"refunds": null,
"metadata": null
}
Paramater Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi charge request Selalu akan diawali dengan plc_ , diikuti dengan UUIDv4 |
customer_id | string |
Pengidentifikasi unik untuk customer |
plan_id | string |
Pengidentifikasi unik untuk PayLater plan yand dibuat |
business_id | string |
Business ID merchant |
reference_id | string |
Reference ID yang dibuat oleh merchant untuk transaksi |
checkout_method | string |
Metode checkout method yang didukung: ONE_TIME_PAYMENT |
channel_code | string |
Kode channel code untuk penyedia PayLater Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_UANGME , ID_INDODANA , ID_ATOME , PH_ATOME , PH_BILLEASE , PH_CASHALO |
currency | string |
ISO 4217 Kode mata uang transaksi PayLaterMata uang yang didukung: IDR , PHP |
amount | number |
Jumlah transaksi total yang sama dengan jumlah net_unit_amount dikali dengan quantity pada array order_items |
refunded_amount | number |
Total nominal yang sukses direfund kepada pengguna akhir |
order_items | array |
Array objek yang mendeskripsikan item-item yang dibeli menggunakan PayLater |
success_redirect_url | string |
URL dimana customer akan diarahkan jika transaksi berhasil |
failure_redirect_url | string |
URL dimana customer akan diarahkan jika pembayaran gagal |
status | string |
Status chargePENDING , SUCCEEDED , FAILED |
created | string |
Timestamp ISO 8601 untuk pembuatan transaksiFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
updated | string |
Timestamp ISO 8601 untuk pembaharuan objek terbaruFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
actions | object |
Checkout URL milik Paylater Partner di mana end-user akan diarahkan untuk menyelesaikan pembayaran |
expires_at | string |
Timestamp ISO 8601 untuk pembaharuan objek terbaruFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
callback_url | string |
URL callback default pada dashboard di mana status charge akan diberitahu Wajib HTTPS |
payment_method_id | string |
Payment method ID dari sumber dana end-customer Wajib jika checkout_method = TOKENIZED_PAYMENT (belum didukung) |
voided_at | string |
Timestamp ISO 8601 untuk pembatalan transaksiFormat: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 |
metadata | object |
Objek dari informasi tambahan yang dapat digunakan oleh user. User mendefinisikan properti dan value JSON. Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan value hingga 500 karakter. Value hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
refunds | array |
Himpunan refund objek ID (Hanya akan menampilkan daftar refund dengan status SUCCEEDED ) |
Kode Error
Contoh: Cek PayLater Charge Status melalui ID - Respon Error
{
"error_code": "API_VALIDATION_ERROR",
"message": "Charge ID does not match plc_UUID format"
}
Kode Error | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Charge ID tidak sesuai dengan format plc_UUID |
INVALID_API_KEY401 |
API key tidak memiliki izin untuk layanan API ini |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperbolehkan untuk melakukan request ini |
DATA_NOT_FOUND404 |
Sumber charge tidak ditemukan. Mohon memeriksa ulang query Anda |
SERVER_ERROR500 |
Error tidak terduga telah terjadi. Tim kami telah diberitahu untuk melakukan penyelesaian isu |
Pembatalan Charge PayLater
Lakukan pembatalan transaksi Paylater dengan Charge ID. Endpoint ini hanya akan berfungsi untuk charge yang dibuat melalui /paylater/charge
. Pembatalan transaksi Paylater akan memblokir URL pembayaran dari customer secara langsung. Xendit tidak mengirimkan callback untuk pembatalan charge.
Endpoint: Cancel Charge Paylater
POST https://api.xendit.co/paylater/charges/:id/cancel
Parameter Request
Contoh: Pembatalan Charge PayLater - Request
curl https://api.xendit.co/paylater/charges/plc_8cb12305-9bcf-4441-a087-ee0d446e297b/cancel -X POST \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Parameter Header | Tipe | Deskripsi |
---|---|---|
for-user-id optional |
string |
User-id yang anda inginkan untuk membuat transaksi. Header ini hanya bisa digunakan jika memiliki akses ke xenPlatform. Silakan buka xenPlatform informasi lebih lanjut. |
Parameter Path | Tipe | Deskripsi |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik dari sebuah transaksi ( id dari charge request PayLater ). |
Parameter Response
Contoh: Pembatalan Charge PayLater - Response
{
"id": "plc_5test57-8888-45o8-abb1-123456789abcdefg",
"business_id": "8764829fhgnb74gf63hg74dhg73",
"reference_id": "paylater-mock-ref-12345678",
"customer_id": "cust-9fb4af4e-d98c-40bf-bd87-abcde678901112",
"plan_id": "plp_3d4c8823-0d2a-4c2e-892b-12345abcde1112",
"currency": "IDR",
"amount": 1000,
"channel_code": "ID_KREDIVO",
"checkout_method": "ONE_TIME_PAYMENT",
"status": "CANCELLED",
"actions": {
"mobile_web_checkout_url": "https://pay.kredivo.com/signIn?tk=1234-1234-1234-1234-12345678",
"desktop_web_checkout_url": "https://pay.kredivo.com/signIn?tk=1234-1234-1234-1234-12345678"
},
"expires_at": "2022-11-25T00:00:57.745Z",
"success_redirect_url": "https://www.xendit.co/en/",
"failure_redirect_url": "https://www.google.com/",
"callback_url": "https://webhook.site/12345678",
"created": "2022-11-24T00:00:57.747Z",
"updated": "2022-11-24T00:00:26.441Z",
"order_items": [
{
"type": "DIGITAL_PRODUCT",
"reference_id": "SKU_123-456-789",
"name": "Dyson Vacuum",
"net_unit_amount": 50,
"quantity": 2,
"url": "https://www.xendit.co/en/",
"category": "Electronics",
"subcategory": null,
"description": null,
"metadata": null
},
{
"type": "FEE",
"reference_id": "PLS_FEE_aabcdef0-e4af-4b86-bf12-a31abcdef282",
"name": "Fee",
"net_unit_amount": 900,
"quantity": 1,
"subcategory": null,
"description": null,
"metadata": {
"message": "Xendit generated FEE for amount differences between sum of net unit amount and the amount"
}
}
],
"voided_at": null,
"payment_method_id": null,
"metadata": {
"campaign": "0%_installment"
}
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi refund akan selalu diawali dengan plc_ , diikuti dengan UUIDv4. |
business_id | string |
Business ID merchant. |
reference_id | string |
Reference ID dari merchant untuk transaksi. |
customer_id | string |
Identifikasi unik untuk customer. |
plan_id | string |
Indentifikasi unik untuk plan PayLater. |
created | string |
Cap waktu ISO 8601 untuk pembuatan transaksi Format: YYYY-MM-DDTHH:mm:ssZ . |
updated | string |
Cap waktu ISO 8601 untuk pembaruan transaksi Format: YYYY-MM-DDTHH:mm:ssZ . |
amount | number |
Nominal transaksi yang dibatalkan. |
order_items | array |
Rincian barang atau jasa yang ditransaksikan. |
channel_code | string |
Kode channel untuk partner PayLater Channels: ID_KREDIVO , ID_AKULAKU , ID_INDODANA , ID_ATOME , PH_ATOME ,PH_BILLEASE ,PH_CASHALO . |
currency | string |
ISO 4217 Kode mata uang Mata Uang: IDR , PHP . |
status | enum |
Status permintaan. Status Tersedia - SUCCEEDED , FAILED , PENDING , CANCELLED . Status akan menjadi CANCELLED jika pembatalan sukses. |
success_redirect_url | string |
URL pengalihan jika transaksi berhasil. |
failure_redirect_url | string |
URL pengalihan jika pembayaran gagal. |
actions | object |
URL transaksi milik partner Paylater untuk end-user menyelesaikan pembayaran. |
expires_at | string |
Cap waktu ISO 8601 untuk pembaharuan terbaru Format: YYYY-MM-DDTHH:mm:ssZ Timezone: UTC+0 . |
callback_url | string |
URL callback default di mana status charge akan diberitahu Wajib HTTPS. |
metadata | object |
Informasi tambahan yang dapat digunakan dalam format JSON. Objek dapat terdiri hingga 50 karakter, dengan masing-masing key hingga 40 karakter dan value hingga 500 karakter. Value hanya akan digunakan oleh user dan tidak digunakan oleh Xendit. |
Kode Eror
Contoh: Pembatalan Charge PayLater - Response Error
{
"error_code": "DATA_NOT_FOUND",
"message": "Cancel resource was not found. Please check your query again"
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada data yang diminta. |
INVALID_API_KEY401 |
Format API key tidak sah. |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan permintaan. |
INELIGIBLE_TRANSACTION403 |
Permintaan pembatalan tidak bisa diproses karena status transaksi bukan PENDING . |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek kembali permintaan Anda. |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera. |
CHANNEL_UNAVAILABLE503 |
Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu. |
Refund Paylater Charge
Lakukan refund untuk pembayaran paylater menggunakan Charge ID. Endpoint ini hanya dapat bekerja untuk charge yang dibuat melalu endpoint /paylater/charges
.
Refund akan mengembalikan kredit limit end-customer pada akun PayLater mereka secara real-time. Xendit akan mengirimkan callback ke Callback URL yang Anda konfigurasi di Xendit Dashboard ketika refund telah berhasil.
Detail Refund
Provider PayLater | Ketersediaan Refund | Batas Waktu Refund |
---|---|---|
Kredivo | Refund penuh dan sebagian | 14 hari |
Indodana | Refund penuh dan sebagian | 30 hari |
Atome | Refund penuh dan sebagian | N/A Atome akan meneruskan refund selama Merchant menyetujui permintaan end-customer |
Akulaku | Refund penuh dan sebagian | N/A Akulaku akan meneruskan refund selama Merchant menyetujui permintaan end-customer |
Endpoint: Membuat Refund Paylater
POST https://api.xendit.co/paylater/charges/{id}/refunds
Parameter Request
Contoh: Request - Membuat Refund Paylater
curl https://api.xendit.co/paylater/charges/plc_8cb12305-9bcf-4441-a087-ee0d446e297b/refunds -X POST \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
-H 'Content-Type: application/json' \
--data-raw '{
"amount": "1000",
"reason": "DEFECTIVE_ITEM"
}'
Contoh: Sampel JSON request
{
"amount": 1000,
"reason": "DEFECTIVE_ITEM"
}
Header | Tipe | Deskripsi |
---|---|---|
for-user-id optional |
string |
Sub-account user-id 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. |
Path Parameter | Tipe | Deskripsi |
---|---|---|
id Wajib |
string
|
Pengidentifikasi unik untuk transaksi charge request (dikembalikan sebagai id pada request charge paylater) |
Parameter Body | Tipe | Deskripsi |
---|---|---|
amount opsional |
number
|
Nominal yang akan di refund kepada customer. Total nominal refund tidak boleh melebihi nominal transaksi asli. Refund hanya akan bisa dilakukan untuk nominal charge yang belum di refund. Jika parameter amount tidak ada, sisa nominal yang belum di refund akan diproses. |
reason opsional |
enum
|
Salah satu nilai berikut dapat digunakan sebagai alasan refund - DUPLICATE , FRAUDULENT , CHANGE_OF_MIND , CHANGE_PAYMENT_METHOD , UNFULFILLED_ITEM , DEFECTIVE_ITEM , OTHERS
|
Parameter Respon
Contoh: Respon - Membuat Refund Paylater
{
"id" : "plr_2f2aa47f-2764-4b42-8712-c3fb1270b09e",
"charge_id" : "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"channel_code" : "PH_BILLEASE",
"currency" : "PHP",
"amount" : 1234.56,
"reason" : "UNFULFILLED_ITEM",
"status" : "PENDING",
"created" : "2021-04-20T16:23:52Z",
"updated" : null
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi refund Akan selalu diawali dengan plr_ , diikuti dengan UUIDv4 |
charge_id | string |
Pengidentifikasi unik untuk transaksi charge request Akan selalu diawali dengan plc_ , diikuti dengan UUIDv4 |
channel_code | string |
Channel code untuk penyedia PayLater Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_INDODANA , ID_ATOME , PH_ATOME |
currency | string |
ISO 4217 kode mata uang untuk transaksi PayLaterMata uang yang didukung: IDR , PHP |
amount | number |
Nominal untuk di refund |
reason | string |
Alasan refund |
status | enum |
Status refund request, nilai yang tersedia - SUCCEEDED , FAILED , PENDING |
created | string |
Timestamp dalam ISO 8601 untuk request refund |
updated | number |
Timestamp dalam ISO 8601 untuk refund objek terbaru |
Kode Error
Contoh: Respon Error - Membuat Refund Paylater
{
"error_code": "DATA_NOT_FOUND",
"message": "Refund resource was not found. Please check your query again"
}
Kode Eror | Deskripsi |
---|---|
API_VALIDATION_ERROR400 |
Terdapat input yang tidak valid pada salah satu field yang diminta. |
REFUND_NOT_SUPPORTED400 |
Request refund gagal karena refund tidak tersedia pada penyedia Paylater. |
PARTIAL_REFUND_NOT_SUPPORTED400 |
Request refund gagal karena refudn sebagian tidak tersedia pada penyedia Paylater. |
INSUFFICIENT_BALANCE400 |
Saldo Xendit tidak cukup untuk melakukan refund. Silakan top up saldo Xendit Anda atau menunggu transaksi lainnya settled. |
MAXIMUM_REFUND_AMOUNT_REACHED400 |
Refund request gagal karena refund dengan nominal penuh telah dilakukan sebelumnya. |
INVALID_API_KEY401 |
Format API key tidak sah |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi. |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera. |
CHANNEL_UNAVAILABLE503 |
Saluran pembayaran saat ini sedang mengalami kendala tak terduga. Penyedia paylater akan diifnormasikan untuk menyelesaikan isu. |
Get Refund dengan Refund ID
Dapatkan status refund melalui endpoint /paylater/charges
.
Endpoint: Get PayLater Refund dengan ID
GET https://api.xendit.co/paylater/charges/{charge_id}/refunds/{refund_id}
Parameter Request
Contoh: Request - GET PayLater Refund dengan ID
curl https://api.xendit.co/paylater/charges/plc_8cb12305-9bcf-4441-a087-ee0d446e297b/refunds/plr_2f2aa47f-2764-4b42-8712-c3fb1270b09e -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Header | Tipe | Deskripsi |
---|---|---|
for-user-id optional |
string |
Sub-account user-id 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. |
Path Parameter | Tipe | Deskripsi |
---|---|---|
charge_id wajib |
string
|
ID dari Paylater charge |
refund_id wajib |
string
|
ID dari Paylater Refund |
Parameter Respon
Contoh: Respon - GET PayLater Refund by ID
{
"id" : "plr_2f2aa47f-2764-4b42-8712-c3fb1270b09e",
"charge_id" : "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"channel_code" : "PH_BILLEASE",
"currency" : "PHP",
"amount" : 1234.56,
"reason" : "UNFULFILLED_ITEM",
"status" : "PENDING",
"created" : "2021-04-20T16:23:52Z",
"updated" : null
}
Parameter Body | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik untuk transaksi Akan selalu diawali oleh plr_ , diikuti dengan UUIDv4 |
charge_id | string |
Pengidentifikasi unik untuk transaksi charge paylater Akan selalu diawali oleh plc_ , diikuti dengan UUIDv4 |
channel_code | string |
Channel code untuk penyedia PayLater. Channel yang didukung: ID_KREDIVO , ID_AKULAKU , ID_INDODANA , ID_ATOME , PH_ATOME |
currency | string |
ISO 4217 kode mata uang untuk transaksi PayLater.Mata uang yang didukung: IDR , PHP |
amount | number |
Nominal untuk di refund |
reason | string |
Alasan refund |
status | enum |
Status refund request, nilai yang tersedia - SUCCEEDED , FAILED , PENDING |
created | string |
Timestamp dalam ISO 8601 untuk request refund |
updated | number |
Timestamp dalam ISO 8601 untuk refund objek terbaru |
Kode Eror
Contoh: Respon Error - GET PayLater Refund dengan ID
{
"error_code": "DATA_NOT_FOUND",
"message": "Refund resource was not found. Please check your query again"
}
Kode Eror | Deskeripsi |
---|---|
INVALID_API_KEY401 |
Format API key tidak sah |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera |
Daftar Refund Paylater
Dapatkan seluruh status refund yang telah dibuat. Endpoint ini hanya berlaku untuk Paylater charge yang dibuat dari endpoint /paylater/charges
.
Endpoint: Daftar Paylater Refunds
GET https://api.xendit.co/paylater/charges/{id}/refunds/
Parameter Request
Contoh: Request - Daftar Refund Paylater
curl https://api.xendit.co/paylater/charges/plc_8cb12305-9bcf-4441-a087-ee0d446e297b/refunds?limit=10&status=SUCCEEDED -X GET \
-u xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman:
Header | Tipe | Deskripsi |
---|---|---|
for-user-id optional |
string |
Sub-account user-id 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. |
Path Parameter | Tipe | Deskripsi |
---|---|---|
id wajib |
string
|
Pengidentifikasi unik untuk transaksi charge request (dikembalikan sebagai id pada Paylater charge request) |
Parameter Query | Tipe | Deskripsi |
---|---|---|
limit opsional |
number
|
Jumlah hasil maksimum dari sekali request Default: 10 Minimum: 1 Maksimum: 50 |
status opsional |
enum
|
Status refund yang disediakan. Nilai tersedia - SUCCEEDED , FAILED , PENDING
|
Parameter Respon
Example: Respon - Daftar Refund Paylater
{
"data": [
{
"id": "plr_2f2aa47f-2764-4b42-8712-c3fb1270b09e",
"charge_id": "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"channel_code": "PH_BILLEASE",
"currency": "PHP",
"amount": 1234.56,
"reason": "UNFULFILLED_ITEM",
"status": "SUCCEEDED",
"created": "2021-04-20T16:23:52Z",
"updated": "2021-04-20T16:23:52Z"
},
{
"id": "plr_a351fd9a-90da-459a-b479-9b34e8be6009",
"charge_id": "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
"channel_code": "PH_BILLEASE",
"currency": "PHP",
"amount": 1000,
"reason": "UNFULFILLED_ITEM",
"status": "SUCCEEDED",
"created": "2021-04-20T16:23:52Z",
"updated": "2021-04-20T16:23:52Z"
}
],
"has_more": false
}
Parameter Body | Tipe | Deskripsi | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data | array |
Himpunan data dari objek refund paylater yang terikat pada charge id tertentu Parameter objek refund
|
||||||||||||||||||||
has_more | boolean |
Mengindikasikan apakah terdapat item lebih untuk di-query berdasarkan filter query dari hasil saat ini. Jika hasil kosong, has_more akan mengembalikan false. |
Kode Eror
Contoh: Respon Error - Daftar Refund Paylater
{
"error_code": "DATA_NOT_FOUND",
"message": "Refund resource was not found. Please check your query again"
}
Kode Eror | Deskripsi |
---|---|
INVALID_API_KEY401 |
Format API key tidak sah |
REQUEST_FORBIDDEN_ERROR403 |
API key tidak diperkenankan untuk melakukan request |
DATA_NOT_FOUND404 |
Sumber data tidak ditemukan. Silakan cek query Anda lagi |
SERVER_ERROR500 |
Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera |
Kode QR
Kode QR akan memungkinkan anda untuk menerima pembayaran dari saldo aplikasi mobile banking atau saldo eWallet end user dengan langsung. Di Indonesia, merchant kami dapat menerima pembayaran dari semua provider yang terhubung di jaringan QRIS (misalnya OVO, GoPay, DANA, LinkAja, BCA, dan ShopeePay). Lihat daftar lengkapnya di sini.
Untuk detail lengkap tentang fitur yang disediakan oleh masing-masing mitra QRIS bisa dibaca di Xendit Doc.
Versi API
Anda sedang melihat versi terbaru dari QR Codes API kami. Dalam versi API ini, waktu kedaluwarsa untuk QR dinamis dapat disesuaikan melalui parameter expires_at
.
Version | Changelog |
---|---|
2022-07-31 Versi Terbaru |
API Kode QR v2 mempunyai opsi untuk memilih waktu kedaluwarsa untuk QR dinamis. |
2020-07-01 Versi lama |
API Kode QR v1 tidak mempunyai opsi untuk memilih waktu kedaluwarsa untuk QR dinamis. |
Objek Kode QR
Objek kode QR akan dikembalikan sebagai respons dari Buat Kode QR dan Dapatkan Kode QR dengan ID QR.
Contoh : Objek Kode QR
{
"id": "qr_61cb3576-3a25-4d35-8d15-0e8e3bdba4f2",
"reference_id": "order-id-1666420204",
"business_id": "58cd618ba0464eb64acdb246",
"type": "DYNAMIC",
"currency": "IDR",
"amount": 10000,
"channel_code": "ID_DANA",
"status": "ACTIVE",
"qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
"expires_at": "2022-10-23T09:56:43.60445Z",
"created": "2022-10-22T06:30:05.86474Z",
"updated": "2022-10-22T06:30:05.86474Z",
"basket": null,
"metadata": null
}
Parameter Badan | Tipe | Deskripsi |
---|---|---|
id | string |
Pengidentifikasi unik dari sebuah transaksi. Prefix qr_ |
reference_id | string |
ID referensi yang diberikan oleh merchant (255 Karakter) |
business_id | string |
Business ID merchant |
type | string |
DYNAMIC or STATIC Catatan: QR Code DYNAMIC mengandung nilai pembayaran ketika dilakukan pemindaian dan dapat dibayarkan satu-kali, transaksi selanjutnya akan dikembalikan Catatan: QR code STATIC membutuhkan customer untuk memasukkan nilai pembayaran dan dapat dibayarkan berkali-kali |
currency | string |
Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR , PHP |
amount | number |
Jumlah yang ditentukan dalam reques Kode QR statis mengharuskan end user untuk selalu memasukkan jumlah yang harus dibayar pada saat di scan Catatan: Jumlah Minimal 1 IDR Jumlah Maximal 10,000,000 IDR |
channel_code | string |
Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi Channel Tersedia: ID_DANA , ID_LINKAJA |
status | string |
ACTIVE atau INACTIVE Contoh: Kode QR yang tidak aktif atau kedaluwarsa tidak dapat lagi menerima pembayaran |
qr_string | string |
QR string yang akan ditampilkan kepada customer. Untuk dapat menampilkan QR string dalam bentuk image dapat dilakukan melalui software libraries yang tersedia (e.g Nodejs, PHP, Java) |
expires_at | string |
Timestamp ISO 8601 untuk kedaluwarsa kode QR. Timezone UTC+0 Format: YYYY-MM-DDTHH:mm:ssZ Contoh: Untuk kode QR dinamis ID_DANA , Jika waktu expires_at tidak di spesifikasi, akan default 48 Jam dari waktu buat QR. Untuk kode QR statis ID_DANA , kode tidak akan kedaluwarsa dan expires_at akan selalu null . |
created | string |