NAV undefined
bash php javascript java go python csharp

Pengantar

Selamat Datang! Di Xendit, misi utama kami adalah untuk menyediakan infrastruktur pembayaran untuk membantu Anda mencapai kesuksesan. Kami akan membantu Anda dalam mengurus uang masuk (menerima pembayaran) dan uang keluar (melakukan pembayaran). Pengguna kami mencakup dari platform bisnis ke perusahaan penyedia pinjaman, dan segala hal diantaranya.

API Xendit dikembangkan berdasarkan konsep REST. API kami dibuat untuk mudah dipahami, berorientasi sumber daya, dan menggunakan kode respons HTTP untuk mendeteksi jika terjadi kesalahan. Kami menggunakan fitur dan fungsi bawaan HTTP sehingga dapat dimengerti oleh klien HTTP umum. Respons API kami memiliki format JSON, termasuk juga pesan kesalahannya.

Untuk mempermudah proses eksplorasi dan pembelajaran API Xendit, kami merangkum seluruh API Xendit dalam bentuk Postman collection yang dapat Anda eksplorasi secara detil di bawah

Run in Postman

Silakan kunjungi Panduan Postman untuk pelajari lebih lanjut!

Otentikasi

Untuk dapat sukses melakukan otentikasi dengan API Xendit, Anda harus melakukan otentikasi API key menggunakan Basic Auth. Anda dapat mendapatkan API key melalui Dasbor. Sebagai contoh jika API key Anda adalah

xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==

Pilih otentikasi Basic Auth. Masukkan nilai API key pada username dan kosongkan password

Format Basic Auth
{{username}}:{{password}}

Ikuti format diatas (dengan titik dua)
xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==:

Lalu, enkripsikan ke frasa sandi Base64

eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==

Tambahkan enkripsi tersebut ke dalam HTTP(s) header

Authorization: Basic eG5kX2RldmVsb3BtZW50X1A0cURmT3NzME9DcGw4UnRLclJPSGphUVlOQ2s5ZE41bFNmaytSMWw5V2JlK3JTaUN3WjNqdz09Og==

API Xendit dikembangkan berdasarkan konsep REST sehingga rapi dan mudah untuk dimengerti. Sebelum mulai menggunakan API, pastikan Anda sudah melakukan registrasi dan akun Anda sudah terotentikasi karena request API akan gagal apabila akun belum terotentikasi. Anda dapat melakukan otentikasi dengan menambahkan API key Anda ke dalam request.

Anda dapat membuat dan mendapatkan API key Anda melalui Dasbor > Pengaturan > Developers > API Keys. Untuk mempermudah Anda menggunakan API kami, kami menyediakan masing-masing API key untuk test dan live environment. Selalu jaga kerahasiaan dan keamanan API key Anda. Jangan bagikan API key Anda bila tidak diperlukan. Pelajari lebih lanjut mengenai API key disini

Berikut cara membuat API key dan melakukan otentikasi akun Anda untuk mengakses API Xendit:

  1. Buat API key melalui Dasbor
  2. Salin API key
  3. Gunakan Basic Access Authentication atau BASIC AUTH sebagai metode otentikasi di server Anda
  4. Format BASIC AUTH adalah {{username}}:{{password}}
  5. Masukkan API key ke dalam username dan kosongkan password. Pastikan Anda menyertakan : di belakang
  6. Enkripsi nilai tersebut dengan Base64
  7. Sertakan frasa sandi Base64 tersebut ke dalam header Authorization

Semua request API yang dibuat harus dikirim melalui HTTPS dan bukan HTTP (request melalui HTTP akan otomatis gagal). Semua request yang dibuat dalam mode test tidak akan diteruskan ke jaringan bank sehingga tidak ada uang asli yang terlibat. Semua respon API yang dikembalikan mengikuti format bentuk JSON.

Kami menyediakan PHP client libraries untuk menghemat waktu Anda. Kami juga sedang mengembangkan libraries dan plugins untuk mempermudah penggunaan API Xendit. Bila Anda tertarik untuk berkontribusi, silahkan hubungi kami dan kami akan senang untuk mendengar dari Anda. Sekali lagi, pastikan untuk melakukan otentikasi sebelum Anda menggunakan API kami.

Libraries / SDKs

Xendit memiliki libraries untuk bahasa yang berbeda-beda. Setiap harinya, kami selalu berusaha untuk menambah jumlah libraries yang ada. Jika anda telah membuat library untuk bahasa lain dan ingin menambahkannya ke dalam daftar disini, kirimkan kepada kami link dari kode library tersebut dan kami akan menambahkannya ke daftar library yang telah ada!

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

  1. Credit/debit cards
  2. eWallets
  3. Cardless Credit
  4. QR Codes
  5. Customers
  6. Direct Debit
  7. Transfer Bank via Virtual Accounts
  8. Retail Outlets
  9. Invoices
  10. Recurring Payments
  11. Payouts
  12. Disbursements
  13. 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

  1. Credit/debit cards
  2. eWallets
  3. Cardless Credit
  4. Transfer bank via Virtual Accounts
  5. Retail Outlets
  6. Invoices
  7. Recurring Payments
  8. Payouts
  9. Disbursements
  10. Batch Disbursements
  11. Customers
  12. 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.

  1. Tambahkan dependensi Xendit ke dalam kode Java anda
  2. Import library Xendit
  3. 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:

Produk yang didukung - Xendit PHP v2

  1. Credit/debit cards
  2. eWallets
  3. Cardless Credit
  4. Transfer bank via Virtual Accounts
  5. Retail Outlets
  6. Invoices
  7. Recurring Payments
  8. Payouts
  9. Disbursements
  10. Batch Disbursements
  11. Customers
  12. Direct Debit

Produk yang didukung - Xendit PHP v1

  1. Credit/debit cards
  2. Transfer bank via Virtual Accounts
  3. Invoices
  4. 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

  1. Credit/debit cards
  2. eWallets
  3. Cardless Credit
  4. Transfer Bank via Virtual Accounts
  5. Retail Outlets
  6. Invoices
  7. Recurring Payments
  8. Payouts
  9. Disbursements
  10. Batch Disbursements
  11. Customers
  12. 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

  1. Credit/debit cards
  2. eWallets
  3. Cardless Credit
  4. QR Codes
  5. Direct Debit
  6. Transfer bank via Virtual Accounts
  7. Retail Outlets
  8. Invoices
  9. Recurring Payments
  10. Payouts
  11. Disbursements
  12. 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

  1. Customers
  2. Direct Debit
  3. Bank Transfer via Virtual Accounts
  4. Retail Outlets (PH)
  5. Invoices
  6. Disbursements
  7. 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:

  1. Tokenisasi kartu kredit/debit dengan single-use token
  2. Tokenisasi kartu kredit/debit dengan multiple-use token
  3. Otentikasi transaksi kartu kredit/debit

iOS

Unduh Xendit iOS SDK

https://github.com/xendit/xendit-sdk-ios-src

iOS SDK membantu Anda memproses pembayaran digital menggunakan Xendit dengan fitur sebagai berikut:

  1. Tokenisasi kartu kredit/debit dengan single-use token
  2. Tokenisasi kartu kredit/debit dengan multiple-use token
  3. Otentikasi transaksi kartu kredit/debit

Request ID

Setiap permintaan API memiliki identifikasi yang terhubung dengan permintaan tersebut. Anda dapat mendapatkan informasi identifikasi permintaan API Request-ID pada header respon. Anda dapat menggunakan Request-ID untuk mencari log pada Log API di Dasbor. Pelajari lebih lanjut cara mencari Log API menggunakan Request-ID pada dokumentasi API Log.

Apabila Anda perlu menghubungi kami untuk pengecekan permintaan API yang spesifik, Anda dapat memberikan informasi Request-ID kepada kami untuk pengecekan yang lebih cepat dan akurat.

Versioning

Contoh Versioning

curl https://api.xendit.co/ewallets -X POST \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   -H X-API-VERSION='2020-02-01' \
   -d external_id='ovo-ewallet' \
   -d amount=1000 \
   -d phone='08123123123'\
   -d ewallet_type='OVO'

Xendit selalu melakukan perkembangan terhadap API kami sebagai bentuk pertumbuhan kami bersama bisnis Anda. Kami selalu berusaha untuk membuat perubahan yang selalu kompatibel dengan versi sebelumnya. Ketika kami melakukan launching API yang tidak kompatibel dengan versi sebelumnya, kami menggunakan versioning untuk menghindari hal-hal yang tidak diharapkan seperti hal-hal yang dapat menyebabkan sistem Anda berhenti bekerja. Anda dapat melakukan upgrade ke versi terbaru kapanpun Anda siap untuk melakukannya.

Anda dapat mengunjungi Dasbor Anda untuk melihat versi API apa yang sedang berjalan. Untuk melakukan pengetesan versi API yang spesifik, Anda dapat mencantumkan versi API yang ingin anda gunakan melalui API-version header pada request API

Header Deskripsi
API-Version
optional
string Cantumkan parameter ini dalam request API untuk memilih versi API yang diinginkan.

Format: YYYY-MM-DD. Contoh: 2020-02-01

Bila tidak dicantumkan, Xendit akan menggunakan versi API yang sesuai dengan settingan Anda

Kompatibilitas Dengan Versi Sebelumnya

Perubahan-perubahan berikut merupakan perubahan API kami yang kompatibel dengan versi sebelumnya:

Panduan Migrasi

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

  1. Tes API baru dengan menggunakan header API-Version di mode Test. Pastikan Anda telah menangani request, respon, error, dan callback data yang terbaru dengan benar. Skenario testing dapat dilihat di bagian Skenario Testing
  2. Ketika semua skenario testing telah berjalan sesuai yang diharapkan, Anda dapat mengganti versi API Anda untuk mode Test di Dasbor. Ketika Anda mengganti versi API Anda melalui Dasbor, maka versi yang akan dipakai untuk pemanggilan API yang tidak mencantumkan API-version pada header akan sesuai dengan nilai yang ada di setingan Dasbor
  3. Ulangi langkah nomor 1 dan 2 pada mode Live
  4. Ketika Anda menemukan kendala pada proses migrasi ini, Anda tetap dapat mengganti ulang ke versi API sebelumnya yang masih beroperasi

Catatan Perubahan

Versi API Resources Path Catatan Perubahan
2020-02-21 eWallets /ewallets Pembayaran OVO diproses secara asinkron dan callback akan dikirimkan setelah pembayaran telah selesai diproses
2019-05-01 Credit Cards /credit_card_charges/refunds Pembuatan Refund Kartu Kredit diproses secara sinkron

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

Instalasi

Anda perlu menyediakan endpoint sistem Anda untuk menerima 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-id
optional
string User-id yang Anda inginkan untuk membuat transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.

Parameter Query Tipe Deskripsi
account_type
optional
default: CASH
string Jenis akun yang dipilih (CASH atau HOLDING).

Parameter Respon

Contoh Respon Permintaan Pengecekan Saldo

{
  "balance": 1241231
}
Parameter Deskripsi
balance Sisa saldo di tipe akun yang ditentukan dalam permintaan API anda

Customers

API yang berguna untuk melakukan request yang terkait dengan customer. Dengan API ini anda bisa membuatkan profil customer anda, bisnis atau individual, beserta status KYC pendaftarannya, dan informasi lainnya. API ini berguna untuk anda yang menggunakan berbagai macam API pembayaran Xendit, termasuk penggunaan channel pembayaran Direct Debit, atau untuk memenuhi informasi KYC untuk registrasi transfer.

Customer Object

Customer Object adalah struktur data standar yang memuat informasi salah satu customer anda. Komponen-koponen utama yang dimiliki adalah:

Ketika satu (atau lebih) customer dikembalikan oleh endpoint yang ada di bagian ini, body response akan memuat Customer Object (atau array dari beberapa Customer Object). Setiap object memiliki struktur berikut:

Contoh Customer Object - Individual

{
    "id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
    "reference_id": "demo_1475801962607",
    "type": "INDIVIDUAL",
    "individual_detail": {
        "given_names": "John",
        "surname": "Doe",
        "nationality": "ID",
        "place_of_birth": "Jakarta",
        "date_of_birth": "1980-01-01",
        "gender": "MALE",
        "employment": {
            "employer_name": "Xendit",
            "nature_of_business": "Payment Gateway",
            "role_description": "Test dummy"
        }
    },
    "business_detail": null,
    "email": "customer@website.com",
    "mobile_number": "+628121234567890",
    "phone_number": "+628121234567890",
    "addresses": [{
        "street_line1": "Panglima Polim IV",
        "street_line2": "Ruko Grand Panglima Polim, Blok E",
        "city": "Jakarta Selatan",
        "province_state": "DKI Jakarta",
        "postal_code": "993448",
        "country": "ID",
        "category": "HOME",
        "is_primary": true
    }],
    "identity_accounts": [{
        "type": "CREDIT_CARD",
        "company": "OCBC",
        "description": "My account",
        "country": "ID",
        "properties":{
            "token_id": "586f0ba2ab70de5d2b409e0d"
        }
    }],
    "kyc_documents": [{
        "type": "IDENTITY_CARD",
        "sub_type": "NATIONAL_ID",
        "country": "ID",
        "document_name": "KTP",
        "document_number": "12356789012456",
        "expires_at": null,
        "holder_name": "John Doe",
        "document_images": [
            "file-ec700c1c-db17-4496-b1fb-04ebe551b412"
        ]
    }],
    "description": "My first customer",
    "metadata": {
        "foo": "bar"
    },
    "created": "2020-03-30T06:12:47.212Z",
    "updated": "2020-03-30T06:12:47.212Z"
}

Example Customer Object - Business

{
    "id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
    "reference_id": "demo_1475801962607",
    "type": "BUSINESS",
    "individual_detail": null,
    "business_detail": {
        "business_name": "ACME Corp",
        "business_type": "CORPORATION",
        "nature_of_business": null,
        "business_domicile": null,
        "date_of_registration": null
    },
    "email": "customer@website.com",
    "mobile_number": null,
    "phone_number": null,
    "addresses": [],
    "identity_accounts": [],
    "kyc_documents": [],
    "description": null,
    "metadata": null,
    "created": "2020-03-30T06:12:47.212Z",
    "updated": "2020-03-30T06:12:47.212Z"
}

Versi

Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-10-31 (terbaru) Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum
2020-05-19 Versi asli
Body Parameter Tipe Deskripsi
id string Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-...
reference_id
required
string Identifikasi customer dari merchant
type
required
string Tipe customer.
Nilai-nilai yang didukung: INDIVIDUAL, BUSINESS
individual_detail
optional
object Objek JSON yang memuat informasi individual. Akan kosong apabila type bukan INDIVIDUAL
Parameter detail individu
given_names
required
string Nama depan customer
surname
optional
string Nama belakang atau nama keluarga customer
nationality
optional
string Kode negara kebangsaan customer

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

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

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

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

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

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

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

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

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

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

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

Maximum length 255 characters
postal_code
optional
string ZIP/Kodepos customer

Maximum length 255 characters
category
optional
string Tipe alamat. Nilai-nilai yang didukung: HOME,
WORK,
PROVINCIAL
is_primary
optional
boolean Default ke false. Mengindikasi bahwa informasi yang diberikan mengacu ke alamat utama customer
identity_accounts
required
array Array dari objek JSON dengan informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkait dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan dapat menyimpan informasi akun untuk eksekusi pembayaran dalam ekosistem API Xendit.
Parameter akun identitas
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang terkahir dengan akun (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung oleh Xendit, kami menganjurkan anda untuk menggunakan channel_code untuk field ini

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

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

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

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

Format ISO 4217 Currency Code

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

Format ISO 4217 Currency Code

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

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

Format YYYY-MM-DD string

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

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

Format ISO 4217 Currency Code

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

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

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

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

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

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

Maximum length 500 characters
metadata
optional
object Objeck dari informasi tambahan yang diberikan pada saat pembuatan customer
created
required
string Timestamp pembuatan customer dalam format ISO
updated
required
string Timestamp perubahan status customer terakhir dalam format ISO

Create Customer

Lakukan request POST ke endpoint ini untuk membuat customer untuk penggunaan nanti dengan endpoint-endpoint pembayaran.

Endpoint: Create Customer

POST https://api.xendit.co/customers

Versi

Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-10-31 (terbaru) Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum
2020-05-19 Versi asli

Parameter Request

Contoh Request Create Customer

curl https://api.xendit.co/customers -X POST \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   -H 'Content-Type: application/json'
   --data-raw '{
     "reference_id": "demo_1475801962607"
     "type": "INDIVIDUAL",
     "individual_detail": {
       "given_names": "John",
       "surname": "Doe"
     },
     "email": "customer@website.com",
     "mobile_number": "+628121234567890"
     }'
<?php
  $url = "https://api.xendit.co/customers";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];
  $headers[] = "Content-Type: application/json";
  $data = [
    "reference_id" => "demo_1475801962607"
    "type" => "INDIVIDUAL",
    "individual_detail" => [
       "given_names" => "John",
       "surname" => "Doe"
    ],
    "email" => "customer@website.com",
    "mobile_number" => "+628121234567890"
  ];

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");

var reqBody = JSON.stringify({
  "reference_id": "demo_1475801962607"
  "type": "INDIVIDUAL",
  "individual_detail": {
    "given_names": "John",
    "surname": "Doe"
  },
  "email": "customer@website.com",
  "mobile_number": "+628121234567890"});

var requestOptions = {
  method: 'POST',
  headers: headers,
  body: reqBody,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')

payload = {
  "reference_id": "demo_1475801962607",
  "type": "INDIVIDUAL",
  "individual_detail": {
    "given_names": "John",
    "surname": "Doe"
  },
  "email": "customer@website.com",
  "mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";

XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;

CustomerParameter individualParameter = new CustomerParameter
{
  ReferenceId = "demo_11212163",
  Type = CustomerType.Individual,
  IndividualDetail = new IndividualDetail
  {
    GivenNames = "John",
    Gender = CustomerGender.Male,
  },
  IdentityAccount = new IdentityAccount[]
  {
    new IdentityAccount
    {
      Country = Country.Indonesia,
      Type = CustomerIdentityAccountType.BankAccount,
      Properties = new IdentityAccountProperties { AccountNumber = "account_number" }
    }
  },
  KycDocuments = new KycDocument[]
  {
    new KycDocument
    {
      Country = Country.Indonesia,
      Type = CustomerKycDocumentType.IdentityCard,
      SubType = CustomerKycDocumentSubType.NationalId,
    }
  },
};

CustomerResponse individualCustomerVersion20201031 = await customer.Create(individualParameter);
Header Parameter Tipe Deskripsi
IDEMPOTENCY-KEY
optional
string Kode unik untuk mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh environment development & production.

Karakter Spesial dan alfanumerik
Panjang maksimum 100 karakter
Panjang minimum 1 karakter
API-VERSION
optional
string Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API tertentu. Daftar versi API dapat ditemukan di sini.
for-user-id
optional
string User-id yang Anda inginkan untuk membuat transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.
Body Parameter Tipe Deskripsi
reference_id
required
string Pengidentifikasi customer yang diberikan oleh merchant.
Request dengan reference_id duplikat akan mengembalikan error. Anda harus melakukan PATCH request pada resource customer object.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Maximum length 255 characters
email
optional
string Alamat email customer

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

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

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

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

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

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

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

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
is_primary
optional
boolean Default ke false. Mengindikasi bahwa informasi yang diberikan mengacu pada alamat utama customer
identity_accounts
optional
array Array objek JSON yang memuat informasi yang berhubungan dengan finansial, media sosial, atau akun lain yang terkair dengan customer. Array ini menyimpan informasi untuk tujuan KYC dan informasi akun untuk eksekusi pembayaran dalam ekosistem pembayaran dengan API Xendit.
Parameter akun identitas
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang berhubungan dengan akun (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung Xendit, kami menganjurkan anda untuk menggunakan channel_code untuk field ini

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

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

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

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

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

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

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

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

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

Format ISO 4217 Currency Code

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

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

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

Format ISO 4217 Currency Code

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

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

Format YYYY-MM-DD string

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

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

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

Format ISO 4217 Currency Code

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

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

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

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

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

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

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

Maximum length 500 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
metadata
optional
object Objek dari informasi tambahan yang berhubungan dengan customer. Definisikan sifat dan nilai JSON sesuai yang dibutuhkan untuk meneruskan informasi melalui API.
Anda bisa melakukan spesifikasi sampai 50 kunci, dengan nama kunci sampai 40 karakter dan nilai sampai 500 karakter.
Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit.

Parameter Respon

Respon sukses akan berisi satu Customer Object

Kode Error

Lihat lainnya error pada umumnya di sini.

Kode Error Deskripsi
DUPLICATE_ERROR
409
Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik.
IDEMPOTENCY_ERROR
409
Idempotency-key telah digunakan sebelumnya. Gunakan idempotency-key yang unik dan coba kembali.

Get Customer

Untuk mendapatkan satu objek customer

Endpoint: Get Customer

GET https://api.xendit.co/customers/:id

Versi

Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-10-31 (terbaru) Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum
2020-05-19 Versi asli

Parameter Request

Contoh Request Get Customer

curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   --header 'API-VERSION: 2020-10-31'
<?php
  $url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];
  $headers[] = "Content-Type: application/json";
  $headers[] = "API-VERSION: 2020-10-31";

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");
headers.append("API-VERSION", "2020-10-31");

var requestOptions = {
  method: 'GET',
  headers: headers,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="

data := customer.getCustomer{
  id: 'cust-239c16f4-866d-43e8-9341-7badafbc019f'
}

resp, err := customer.getCustomer(&getCustomerByReferenceIDData)
if err != nil {
  log.Fatal(err)
}

fmt.Printf("retrieved customer: %+v\n", resp)
try {
    Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";

    Customer[] customers = Customer.getCustomer("cust-239c16f4-866d-43e8-9341-7badafbc019f");
} catch (XenditException e) {
    e.printStackTrace();
}
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')

auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("GET", url, headers=headers)

print(response.text)
Header Parameter Tipe Deskripsi
API-VERSION
optional
string Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini.
for-user-id
optional
string User-id yang Anda inginkan untuk membuat transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.
Parameter Tipe Deskripsi
id string Customer ID yang dihasilkan oleh Xendit. Dimulai dengan cust-...

Parameter Respon

Respon sukses akan berisi satu Customer Object

Kode Error

Lihat lainnya error pada umumnya di sini.

Kode Error Deskripsi
DATA_NOT_FOUND
404
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali

Get Customer by Reference ID

Untuk mendapatkan array customer objek sesuai dengan reference_id - pengidentifikasi yang anda berikan

Endpoint: Get Customer menggunakan Reference ID

GET https://api.xendit.co/customers?reference_id={reference_id}

Versi

Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-10-31 (terbaru) Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum
2020-05-19 Versi asli

Parameter Request

Contoh Request Get Customer menggunakan Reference ID

curl https://api.xendit.co/customers?reference_id=demo_1475801962607 -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: 
<?php
  $url = "https://api.xendit.co/customers";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];
  $headers[] = "Content-Type: application/json";

  $queryString = "?reference_id=demo_1475801962607";

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url.$queryString);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");

let queryString = "?reference_id=demo_1475801962607";

var requestOptions = {
  method: 'GET',
  headers: headers,
  redirect: 'follow'
};

fetch(url + queryString, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers?reference_id=demo_1475801962607"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')

auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("GET", url, headers=headers)

print(response.text)
Query Parameter Tipe Deskripsi
reference_id
required
string Pengidentifikasi anda untuk customer

Parameter Respon

Contoh respon sukses Get Customer menggunakan Reference ID

{
    "data": [{
        "id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
        "reference_id": "demo_1475801962607",
        "type": "INDIVIDUAL",
        "individual_detail": {
            "given_names": "John",
            "surname": "Doe",
            "nationality": null,
            "place_of_birth": null,
            "date_of_birth": null,
            "gender": null,
            "employment": null
        },
        "business_detail": null,
        "email": "customer@website.com",
        "mobile_number": null,
        "phone_number": null,
        "hashed_phone_number": null,
        "addresses": [],
        "identity_accounts": [],
        "kyc_documents": [],
        "description": null,
        "metadata": null,
        "created": "2020-03-30T06:12:47.212Z",
        "updated": "2020-03-30T06:12:47.212Z"
    }],
    "has_more": false
}
Header Parameter Tipe Deskripsi
API-VERSION
optional
string Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini.
for-user-id
optional
string User-id yang Anda inginkan untuk membuat transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.
Body Parameter Tipe Deskripsi
data array Array dari Customer Objects yang dikembalikan oleh query. Array bisa kosong
has_more boolean Mengidentifikasi apakah ada item lainnya yang dapat di-query dengan after_id dari item terakhir pada hasil sekarang

Kode Error

Lihat lainnya error pada umumnya di sini.

Update Customer

Lakukan request PATCH ke endpoint ini untuk melakukan update pada data customer Anda. Anda hanya dapat mengubah data-data sesuai dengan parameter yang tersedia pada request. Perubahan apapun pada field-field di objek customer akan menggantikan data tersebut secara keseluruhan.

Apabila anda ingin menambahkan data pada suatu array, request PATCH Anda harus memiliki kondisi akhir array yang diinginkan (contoh, konten yang ada sekarang dan elemen array baru yang ingin anda tambahkan). Berikan nilai NULL untuk menghapus konten yang ada sekarang.

Perhatikan bahwa reference_id dan type pada suatu customer tidak dapat di-update.

Endpoint: Update Customer

PATCH https://api.xendit.co/customers/:id

Versi

Anda sedang melihat API versi 2020-10-31. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-10-31 (terbaru) Pembaruan untuk mendukung jenis BUSINESS dan akun identitas umum
2020-05-19 Versi asli

Parameter Request

Contoh Request Update Customer

curl https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f -X PATCH \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   -H 'Content-Type: application/json'
   --data-raw '{
     "individual_detail": {
       "given_names": "Jane",
       "surname": "Doe"
     }
     }'
<?php
  $url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];
  $headers[] = "Content-Type: application/json";
  $data = [
    "individual_detail" => [
       "given_names" => "Jane",
       "surname" => "Doe"
    ]
  ];

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
  curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
let url = "https://api.xendit.co/customers/cust-239c16f4-866d-43e8-9341-7badafbc019f";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
headers.append("Content-Type", "application/json");

var reqBody = JSON.stringify({
  "type": "INDIVIDUAL",
  "individual_detail": {
    "given_names": "John",
    "surname": "Doe"
  },
  "email": "customer@website.com",
  "mobile_number": "+628121234567890"});

var requestOptions = {
  method: 'PATCH',
  headers: headers,
  body: reqBody,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/customers"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')

payload = {
  "type": "INDIVIDUAL",
  "individual_detail": {
    "given_names": "John",
    "surname": "Doe"
  },
  "email": "customer@website.com",
  "mobile_number": "+628121234567890"
}
auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("PATCH", url, headers=headers, data=payload)

print(response.text)
string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";

XenditClient xendit = new XenditClient(apiKey);
CustomerClient customer = xendit.Customer;

CustomerParameter individualParameter = new CustomerParameter
{
  Type = CustomerType.Individual,
  IndividualDetail = new IndividualDetail
  {
    GivenNames = "John",
    Gender = CustomerGender.Male,
  }
};

CustomerResponse individualCustomerVersion20201031 = await customer.Update(individualParameter);
Header Parameter Tipe Deskripsi
API-VERSION
optional
string Versi API dalam format tanggal (contoh: 2020-10-31). Gunakan header ini untuk menggunakan versi API yang anda inginkan. Daftar versi API dapat ditemukan di sini.
for-user-id
optional
string User-id yang Anda inginkan untuk membuat transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.
Body Parameter Tipe Deskripsi
individual_detail
optional
object Objek JSON object yang memuat detil individu. Akan gagal validasi API apabila type bukan INDIVIDUAL
Parameter detail individu
given_names
required
string Nama awal atau nama utama dari suatu customer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
is_primary
optional
boolean Nilai default adalah false. Menandakan bahwa informasi yang diberikan mengacu pada alamat utama customer
identity_accounts
optional
array Array dari objek JSON dengan informasi yang terkait dengan finansial, media sosial, atau akun lain yang berhubungan dengan customer. Array ini dapat menyimpan informasi untuk tujuan KYC dan mendukung penyimpanan informasi akun untuk melakukan pembayaran dalam ekosistem API Xendit.
Parameter akun identitas
Field Description
type
required
string Tipe akun. Nilai-nilai yang didukung: BANK_ACCOUNT,
EWALLET,
CREDIT_CARD,
PAY_LATER,
OTC,
QR_CODE,
SOCIAL_MEDIA
company
optional
string Institusi penerbit yang terasosiasi dengan akun tersebut (contoh, OCBC, GOPAY, 7-11). Apabila menambahkan akun finansial yang didukung oleh Xendit, kami menganjurkan anda untuk menggunakan channel_code for this field

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

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

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

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

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

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

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

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

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

Format ISO 4217 Currency Code

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

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

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

Format ISO 4217 Currency Code

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

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

Format YYYY-MM-DD string

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

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

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

Format ISO 4217 Currency Code

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

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

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

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

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

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

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

Maximum length 500 characters
Karakter Alfanumerik. Tidak ada karakter spesial yang diperbolehkan.
metadata
optional
object Informasi tambahan objek yang berhubungan dengan customer. Definisikan sifat JSON dan nilai-nilai sesuai yang dibutuhkan untuk meneruskan informasi via API.
Anda bisa menetapkan sampai 50 kunci, dengan kata kunci sampai 40 karakter dan nilai-nilai sampai 500 karakter.
Ini hanya untuk penggunaan anda dan tidak akan digunakan oleh Xendit.

Parameter Respon

Respon sukses akan berisi satu Customer Object dengan konten yang diperbarui

Kode Error

Lihat lainnya error pada umumnya di sini.

Kode Error Deskripsi
DATA_NOT_FOUND
404
id yang diberikan tidak ada. Mohon cek id tersebut dan coba kembali

Files

API untuk anda melakukan operasi terkait file kustomer anda. Dapat digunakan untuk file customer bersifat bisnis dan individu untuk kebutuhan KYC dan bukti untuk chargeback

Upload File

Lakukan request POST ke endpoint ini untuk mengupload file untuk KYC atau Chargeback Evidence. Saat ini kami mendukung penguploadan file PNG, JPG/JPEG, PDF yang kurang dari 10 MB.

Endpoint: Upload File

POST https://api.xendit.co/files

Parameter Request

Contoh Request Upload File

curl https://api.xendit.co/files -X POST \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   --form 'file=@/Users/utkarshagarwal/Desktop/Screenshot 2020-10-13 at 5.28.45 PM.png' \
   --form 'purpose=CHARGEBACK_EVIDENCE'
<?php
  $url = "https://api.xendit.co/files";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
  $headers = [];
  $headers[] = "Content-Type: application/json";
  $payload = array('file'=> new CURLFILE('~/yourpath/file.png'),'purpose' => 'CHARGEBACK_EVIDENCE');

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let url = "https://api.xendit.co/files";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));
var formdata = new FormData();
formdata.append("file", fileInput.files[0], "file.png");
formdata.append("purpose", "CHARGEBACK_EVIDENCE");

var requestOptions = {
  method: 'POST',
  headers: headers,
  body: formdata,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')

payload={'purpose': 'CHARGEBACK_EVIDENCE'}
files=[
  ('file', open('/yourpath/file.png','rb'))
]
auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
Body Parameter Tipe Deskripsi
purpose
required
string Tujuan dari file yang terupload
Nilai-nilai yang didukung: KYC_DOCUMENT, CHARGEBACK_EVIDENCE
file
required
file File itu. Nilai-nilai yang didukung: application/pdf, image/png, image/jpg, image/jpeg

Parameter Respon

Contoh Respon Sukses Upload File

{
  "id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
  "business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
  "purpose": "CHARGEBACK_EVIDENCE",
  "created": "2020-10-08T06:38:33.479Z",
  "updated": "2020-10-08T06:38:33.479Z",
  "type": "image/png",
  "size": 10000,
  "url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter Tipe Deskripsi
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
purpose
required
string Tujuan dari file yang terupload
created
required
string UTC Timestamp pembuatan file dalam format ISO
updated
required
string UTC Timestamp perubahan file terakhir dalam format ISO
type
required
string Tipe file
size
required
integer Ukuran file dalam satuan bytes
url
required
string URL untuk mengunduh file

Kode Error

Lihat contoh error lainya di sini.

Kode Error Deskripsi
API_VALIDATION_ERROR
400
Validasi input gagal. Field errors dalam response akan merincikan fields yang melanggar validasi.
FILE_TOO_LARGE
413
Ukuran file lebih besar dari 2.000.000 byte dan melebihi batas ukuran. Kecilkan payload sebelum mencoba kembali.
UNSUPPORTED_CONTENT_TYPE_ERROR
415
Format file tidak didukung. Lihat kembali tipe file sebelum mencoba lagi.
REQUEST_FORBIDDEN_ERROR
403
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
RATE_LIMIT_EXCEEDED
429
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama.

Get File by Id

Melakukan request GET ke endpoint ini untuk mendapatkan informasi detail dari file

Endpoint: Get File

GET https://api.xendit.co/files/{file-id}

Contoh Request Get File

curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php

  $fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
  $url = "https://api.xendit.co/files/" . $fileId;
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));


var requestOptions = {
  method: 'GET',
  headers: headers,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}

auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Parameter Respon

Contoh Respon Sukses Get File

{
  "id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
  "business_id": "ec700c1c-db17-4496-b1fb-04ebe551b412",
  "purpose": "CHARGEBACK_EVIDENCE",
  "created": "2020-10-08T06:38:33.479Z",
  "updated": "2020-10-08T06:38:33.479Z",
  "type": "image/png",
  "size": 10000,
  "url": "https://files.xendit.co/file-ec700c1c-db17-4496-b1fb-04ebe551b412"
}
Body Parameter Tipe Deskripsi
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
purpose
required
string Tujuan dari file yang terupload
created
required
string UTC Timestamp pembuatan file dalam format ISO
updated
required
string UTC Timestamp perubahan file terakhir dalam format ISO
type
required
string Tipe file
size
required
integer Ukuran file dalam satuan bytes
url
required
string URL untuk mengunduh file

Kode Error

Lihat contoh error lainya di sini.

Kode Error Deskripsi
DATA_NOT_FOUND
404
File tidak ditemukan

Download File by Id

Melakukan request GET ke endpoint ini untuk mengunduh file

Endpoint: Download File

GET https://api.xendit.co/files/{file-id}/download

Example Download File Request

curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download --request GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php

  $fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
  $url = "https://api.xendit.co/files/" . $fileId . "/download";
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId+"/download";

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));


var requestOptions = {
  method: 'GET',
  headers: headers,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412/download"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}

auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response)

Kode Error

Lihat contoh error lainya di sini.

Kode Error Deskripsi
DATA_NOT_FOUND
404
File tidak ditemukan
RATE_LIMIT_EXCEEDED
429
Anda telah melampaui batas maksimal request. Mohon dicoba lagi dengan rentang waktu yang lebih lama.

Delete File by Id

Melakukan request DELETE ke endpoint ini untuk menghapus file

Endpoint: Delete File

DELETE https://api.xendit.co/files/{file-id}

Contoh request menghapus file

curl https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412 --request DELETE \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
<?php

  $fileId = "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
  $url = "https://api.xendit.co/files/" . $fileId;
  $apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:";
  $headers = [];

  $curl = curl_init();

  $payload = json_encode($data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  $result = curl_exec($curl);
  echo $result;
let apiKey = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==";
let fileId= "file-ec700c1c-db17-4496-b1fb-04ebe551b412";
let url = "https://api.xendit.co/files/"+fileId;

var headers = new Headers();
headers.append("Authorization", "Basic " + btoa(apiKey + ":"));


var requestOptions = {
  method: 'DELETE',
  headers: headers,
  redirect: 'follow'
};

fetch(url, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
import requests
import base64

api_key = "xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:"
url = "https://api.xendit.co/files/file-ec700c1c-db17-4496-b1fb-04ebe551b412"

api_key_bytes = api_key.encode('ascii')
base64_bytes = base64.b64encode(api_key_bytes)
base64_token = base64_bytes.decode('ascii')
payload={}

auth_token = 'Basic ' + base64_token
headers = {
  'Authorization': auth_token
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)

Parameter Respon

Contoh respon sukses menghapus file

{
  "is_deleted": true,
  "id": "file-ec700c1c-db17-4496-b1fb-04ebe551b412",
  "business_id": "b647524d-9c5d-414c-843a-3c819853d6b0"
}
Body Parameter Tipe Deskripsi
id
required
string ID unik yang di generate oleh Xendit untuk setiap file
business_id
required
string ID bisnis yang terdaftar di Xendit
is_deleted
required
boolean Status penghapusan

Kode Error

Lihat contoh error lainya di sini.

Kode Error Deskripsi
DATA_NOT_FOUND
404
File tidak ditemukan

Laporan

Sebuah API unutk menghasilkan dan mendapatkan laporan. Laporan yang tersedia adalah Laporan Saldo dan Transaksi. Anda dapat menggunakan endpoint ini untuk menghasilkan laporan secara otomatis. Anda dapat menggunakan isi dari laporan untuk melakukan rekonsiliasi. Isi dari laporan pada API ini sama persis dengan yang dapat anda peroleh dari mengunduh di dashboard.

Objek Laporan

Contoh Objek Laporan

{
    "id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
    "type": "BALANCE_HISTORY",
    "status": "COMPLETED",
    "filter": {
        "from": "2021-06-23T04:01:55.574Z",
        "to": "2021-06-24T04:01:55.574Z"
    },
    "format": "CSV",
    "url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
    "currency": "IDR",
    "business_id": "5f34f60535ba7c1c0eed846a",
    "created": "2021-06-24T04:01:55.570Z",
    "updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body Tipe Deskripsi
id
required
string Id unik dari laporan. Id ini akan memiliki prefiks report_.
type
required
string Tipe dari laporan.

Tipe yang tersdia:
Tipe Deskripsi
BALANCE_HISTORY Laporan yang menunjukkan daftar riwayat dari saldo Anda. Laporan ini sama dengan laporan saldo di dashboard. Lihat Laporan Riwayat Saldo untuk informasi lebih lanjut.
TRANSACTIONS Laporan yang menunjukkan daftar transaksi. Laporan ini sama dengan laporan transaksi di dashboard. Lihat Laporan Transaksi untuk informasi lebih lanjut.
UPCOMING_TRANSACTIONS Laporan yang menunjukkan daftar transaksi mendatang yang akan masuk/keluar dari saldo Anda. Laporan ini sama dengan Laporan Saldo Tertunda/Mendatang di dashboard.
filter
required
object Filter yang diterapkan pada laporan.
Parameter Filter
Kunci Nilai
from
required
string (ISO 8601) Waktu awal transaksi yang ada di laporan pada UTC+0.
to
required
string (ISO 8601) Waktu akhir transaksi yang ada di laporan pada UTC+0.
format
required
string Format dari laporan.
Format yang tersedia adalah CSV.
status
required
string Status dari laporan. Status awal akan PENDING ketika Anda menghasilkan laporan melalui API.
Tipe Deskripsi
PENDING Permintaan pembuatan laporan diterima dan sedang diproses.
COMPLETED Laporan berhasil dibuat dan dapat diunduh
FAILED Laporan gagal untuk dibuat. Anda dapat mencoba ulang pembuatan laporan
url
optional
string URL untuk mengunduh laporan setelah berhasil.

Laporan hanya dapat diundah dalam waktu 24 jam. Ketika url kedaluwarsa, Anda harus mengirim permintaan ulang untuk menghasilkan laporan.
currency
required
string Mata uang di dalam laporan
Lihat daftar mata uang yang didukung.
business_id
required
string Id dari bisnis Xendit tempat transaksi dilakukan.
created
required
string (ISO 8601 Waktu ketika laporan pertama kali diminta pada UTC+0.
updated
required
string (ISO 8601 Waktu ketika laporan diperbarui pada UTC+0.

Menghasilkan Laporan

Endpoint: Menghasilkan Laporan

POST https://api.xendit.co/reports

Gunakan endpoint ini untuk menghasilkan laporan. Anda dapat menentukan tipe dan filter dari konten yang ada pada laporan. Alur dari endpoint ini bersifat asynchronous. Ini berarti Xendit akan mengirimkan callback kepada Anda ketika laporan selesai dibuat. Lihat notifikasi laporan untuk informasi lebih lanjut. Cara lainnya, Anda dapat menggunakan endpoint mendaptakan laporan untuk melihat detail dan status dari laporan.

Parameter Request

Header Parameter Tipe Deskripsi
for-user-id
optional
string User-id sub-akun yang akan digunakan untuk mendapatkan transaksi.

.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.

Contoh Permintaan Menghasilkan Laporan

curl https://api.xendit.co/reports -X POST \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   -d type=BALANCE_HISTORY \
   -d currency=IDR

Contoh Respon Menghasilkan Laporan

{
    "id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
    "type": "BALANCE_HISTORY",
    "status": "PENDING",
    "filter": {
        "from": "2021-06-23T04:01:55.574Z",
        "to": "2021-06-24T04:01:55.574Z"
    },
    "format": "CSV",
    "currency": "IDR",
    "business_id": "5f34f60535ba7c1c0eed846a",
    "created": "2021-06-24T04:01:55.570Z",
    "updated": "2021-06-24T04:01:55.570Z"
}
Parameter Body Tipe Deskripsi
type
required
string Tipe dari laporan yang akan dihasilkan.

Tipe yang tersdia:
Tipe Deskripsi
BALANCE_HISTORY Laporan yang menunjukkan daftar riwayat dari saldo Anda. Laporan ini sama dengan laporan saldo di dashboard. Lihat Laporan Riwayat Saldo untuk informasi lebih lanjut.
TRANSACTIONS Laporan yang menunjukkan daftar transaksi. Laporan ini sama dengan laporan transaksi di dashboard. Lihat Laporan Transaksi untuk informasi lebih lanjut.
UPCOMING_TRANSACTIONS Laporan yang menunjukkan daftar transaksi mendatang yang akan masuk/keluar dari saldo Anda. Laporan ini sama dengan Laporan Saldo Tertunda/Mendatang di dashboard.
filter
required
object Filter yang diterapkan pada laporan.
Parameter Filter
Kunci Nilai
from
string (ISO 8601)
required
Waktu awal dari transaksi yang akan difilter.

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

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

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

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

default: IDR
string Mata uang untuk difilter
Lihat daftar mata uang yang didukung.

Parameter Respon

Mengembalikan Objek Laporan dengan kode status 201

Kode Error

Lihat daftar kode error umum lainnya disini.

Kode Error Deskripsi
FEATURE_NOT_AVAILABLE
400
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini.
INVALID_DATE_RANGE
400
Rentang dari filter from dan to terlalu besar. Harap kurangi rentang sesuai batasan yang ada pada parameter.

Mendapatkan Laporan

Endpoint: Mendapatkan Laporan

GET https://api.xendit.co/reports/{report_id}

Gunakan endpoint ini untuk mengapatkan detail laporan secara spesifik berdasarkan id. Anda dapat menggunakan endpoint ini sebagai alternatif dibandingkan menggukanakan callback laporan.

Parameter Request

Parameter Header Tipe Deskripsi
for-user-id
optional
string The sub-account user-id that you want to get this transaction for.

This header is only used if you have access to xenPlatform. See xenPlatform for more information

Contoh Mendapatkan Laporan

curl https://api.xendit.co/transactions/report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28 -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:

Contoh Respon Mendapatkan Laporan

{
    "id": "report_5c1b34a2-6ceb-4c24-aba9-c836bac82b28",
    "type": "BALANCE_HISTORY",
    "status": "COMPLETED",
    "filter": {
        "from": "2021-06-23T04:01:55.574Z",
        "to": "2021-06-24T04:01:55.574Z"
    },
    "format": "CSV",
    "url": "https://transaction-report-files.s3-us-west-2.amazonaws.com/{report_name}",
    "currency": "IDR",
    "business_id": "5f34f60535ba7c1c0eed846a",
    "created": "2021-06-24T04:01:55.570Z",
    "updated": "2021-06-24T04:01:55.570Z"
}
Parameter Path Tipe Deskripsi
report_id
required
string The id of report.

Parameter Respon

Mengembalikan Objek Laporan dengan kode status 200

Kode Error

Lihat daftar kode error umum lainnya disini.

Kode Error Deskripsi
FEATURE_NOT_AVAILABLE
400
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini.

Notifikasi Laporan

Endpoint: Notifikasi Laporan

POST https://yourcompany.com/report_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:
Tipe Deskripsi
reports.completed Laporan berhasil. Anda dapata mengunduh laporan dari parameter url.
reports.failed Laporan gagal untuk dihasilkan. Anda dapat mencoba ulang untuk menghasilkan laporan.
Report Object Parameter lainnya sama dengan objek laporan.

Laporan Riwayat Saldo

Laporan riwayat saldo adalah laporan yang menunjukkan daftar riwayat dari pergerakan saldo pada akun anda. Laporan ini sama dengan laporan pada Menu Saldo di dashboard. Anda dapat menggukan laporan ini untuk memeriksa saldo harian atau melakukan rekonsiliasi antara data transaksi Anda dengan saldo yang berubah pada akun. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe BALANCE_HISTORY.

Kolom Laporan

Kolom Deskripsi
Product Id ID yang dihasilkan oleh Xendit untuk tiap produk
Transaction Id Id unik Xendit yang dihasilkan pada setiap transaksi. Anda dapat menggunakan id ini untuk mencocokkan transaksi dan biayanya, atau mencocokkan antara transaksi pada laporan transaksi dan riwayat saldo.
Transaction Type Daftar tipe transaksi:
VA_PAYMENT Pembayaran menggunakan Virtual Account
RO_PAYMENT Pembayaran menggunakan Retail Outlet
EWALLET_PAYMENT Pembayaran menggunakan Ewallet
CARDLESS_CREDIT_PAYMENT Pembayaran menggunakan Cardless Credit
DIRECT_DEBIT_PAYMENT Pembayaran menggunakan Direct Debit
CREDIT_CARD_PAYMENT Pembayaran menggunakan Kartu Kredit
QR_CODE_PAYMENT Pembayaran menggunakan QR Code
DISBURSEMENT Disbursement
BATCH_DISBURSEMENT Batch Disbursement
REMITTANCE_PAYOUT Remittance Payout
DEPOSIT Topup saldo ke akun Anda
WITHDRAWAL Penarikan dari saldo Anda
Line Type Tipe baris yang tersedia:
TRANSACTION Baris transaksi, penambahan atau pengurangan salso karena transaksi
FEE Baris biaya, pengurangan saldo karena biaya
VAT Baris PPN, pengurangan saldo karena pajak
TRANSACTION_REVERSAL, FEE_REVERSAL, VAT_REVERSAL Pembatalan atau reversal dari TRANSACTION, FEE, or VAT
Payment Channel Kanal untuk mengidentifikasi sumber dari transaki.
Lihat kode kanal untuk informasi lebih lanjut.
Reference Id yang dihasilkan oleh Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan ‘external_id’
Currency Mata uang transaksi.
Lihat daftar mata uang yang didukung.
Amount Nominal dari transaksi.
Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217.
Balance Saldo Anda pada transaksi ini.
Debit or Credit
DEBIT Pengurangan saldo
CREDIT Penambahan saldo
Created Date ISO Waktu ketika transaksi dibuat berdasarkan format ISO 8601.
Timezone Zona waktu dengan format “+XXXX UTC”.
Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna.
Created Date Waktu ketika transaksi dibuat.
Payment Date Waktu ketika pembayaran diterima tetapi belum masuk ke saldo Anda. Hanya tersedia untuk transaksi pembayaran.
Settlement Date Waktu ketika pembayaran diterima dan ditambahkan pada saldo Anda. Hanya tersedia untuk transaksi pembayaran.
Completed Date Waktu ketika dana telah dikirimkan ke penerima. Hanya tersedia untuk transaksi disbursement.
Bank Code Kode bank yang digunakan sebagai sumber atau tujuan transaksi. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT.
Name Nama dari VA atau penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT..
Account Number Nomor rekening VA atay penerima. Hanya tersedia untuk VA_PAYMENT and DISBURSEMENT.
Description Deskripsi dari transaksi.
Invoice ID Id invoice. Hanya tersedia untuk pembayaran melalui invoice..
Bank Reference Referensi bank yang digunakan unuk transaksi DISBUSEMENT

Laporan Transaksi

Laporan transaksi adalah laporan yang menunjukkan semua transaksi yang ada entah transaksi itu telah masuk ke saldo atau tidak. Laporan ini tidak akan menunjukkan topup dan withdrawal yang bukan merupakan transaksi. Laporan ini sama dengan laporan pada Menu Transaksi di dashboard. Pada API laporan, Anda dapat menghasilkan laporan ini menggunakan tipe TRANSACTIONS.

Kolom Laporan

Kolom Deskripsi
Status Status dari transaksi
PENDING Transaksi masih diproses. Ini merupakan status ketika transaksi uang keluar ketika dana masih ditahan
SUCCESS Transaksi telah berhasil dikirim untuk uang keluar atau telah diterima untuk uang masuk
FAILED Transaksi yang gagal untuk dikirim atau diterima
VOIDED Transaksi uang masuk yang dibatalkan oleh Anda
REVERSED Transaksi yang kembalikan oleh Xendit
Type Tipe dari transaksi
DISBURSEMENT Transaki disbursement
PAYMENT Transaksi pembayaran untuk semua jenis uang masuk
REMITTANCE_PAYOUT Transaksi remittance
TRANSFER Transfer antar akun Xendit. Ini dapat berupa transfer keluar atau masuk
REFUND Dana yang dikembalikan kepada Anda
TOP UP Penambahan dana yang ditambahkan ke saldo Anda
WITHDRAWAL Penarikkan dana dari saldo ke akun rekening Anda
Channel Kanal untuk mengidentifikasi sumber dari transaksi.
Kanal yang tersedia untuk tiap tipe adalah:
Tipe Kanal
DISBURSEMENT and REMITTANCE_PAYOUT BANK and CASH
PAYMENT CARDS, CARDLESS_CREDIT, DIRECT_DEBIT, EWALLET, PAYLATER, QR_CODE, RETAIL_OUTLET, VIRTUAL_ACCOUNT
TRANSFER XENPLATFORM
Channel Name Nama kanal yang tersedia akan berbeda untuk tiap kanal.
Lihat kode kanal untuk informasi lebih lanjut
Account Number Nomor akun yang digunakan pada transaksi. Hal ini akan berbeda untuk tiap kanal. Sebagai contoh, pada kanal CARD ini akan berupa sebagian nomor kartu kredit dan pada kanal BANK akan berupa nomor rekening.
Currency Mata uang transaki.
See our supported currencies.
Amount Nominal dari transaksi.

Angka desimal di belakang koma akan berbeda untuk tiap uang berdasarkan ISO 4217.
Fee Amount Nominal dari biaya.
VAT Amount Nominal PPN dari transaski
Net Amount Nominal bersih transaksi setelah dikurangi biaya dan pajak.
Reference Refernsi dari transksi. Ini dihasilkan dari sisi Anda dan dikirimkan ke sistem Xendit. Pada beberapa produk ini disebut dengan External Id
Transaction Id Id dari transaksi
Invoice Id Id dari invoice. Jika ini transaksi pembayaran menggunakan invoice.
Batch Id Id batch settlement untuk transaksi kartu kredit
Payment Id Id pembayaran yang dihasilkan oleh Xendit dan sama dengan id pada produk
Payment Date Waktu ketika pembayaran tercatat di Xendit
Timestamp - Created Waktu ketika transaksi dibuat pertama kali
Timestamp - Updated Waktu ketika transaksi diperbarui
Timestamp - Settled Waktu ketika transaksi telah masuk ke saldo Anda
Timezone Zona waktu dengan format “+XXXX UTC”.
Zona waktu akan selalu +0000 UTC ketika laporan dihasilkan melalui API. Ini berbeda dengan dashboard yang berdasrkan zona waktu pengguna.
Description Deskripsi transaksi
Channel Reference Referensi yang dihasilkan oleh mitra kanal kami. Ini dapat digunakan untuk rekonsiliasi antara sisi Anda, Xendit, dan mitra kami.

Transaksi

Sebuah API untuk mencari dan melihat transaksi. Transaksi yang ada meliputi uang masuk, uang keluar, dan transfer yg terjadi dalam akun. Anda dapat menggunakan endpoint tunggal ini untuk mendapatkan status transaksi dan melakukan rekonsiliasi. API ini sama persis dengan menu transaksi yang ada di dashboard. Lihat dokumentasi kami tentang petunjuk penggunan menu transaksi untuk rekonsiliasi.

Objek Transaksi

Contoh Objek Transaksi

{
    "id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
    "product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
    "type": "PAYMENT",
    "channel_category": "RETAIL_OUTLET",
    "channel_code": "ALFAMART",
    "reference_id": "ref23232",
    "account_identifier": null,
    "currency": "IDR",
    "amount": 1,
    "cashflow": "MONEY_IN",
    "status": "SUCCESS",
    "business_id": "5fc9f5b246f820517e38c84d",
    "created": "2021-06-23T02:42:15.601Z",
    "updated": "2021-06-23T02:42:15.601Z",
    "fee": {
        "xendit_fee": 1500,
        "value_added_tax": 500,
        "xendit_withholding_tax": 0,
        "third_party_withholding_tax": 0,
        "status": "COMPLETED"
    }
}

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

Body Parameter Type Description
id
required
string Id unik dari transaksi. Id akan memiliki prefiks txn_.
product_id
required
string Id produk dari sebuah transaksi. Id ini akan memiliki prefiks yang berbeda untuk tiap produk. Anda dapat menggukana id ini untuk mencocokkan antara transaksi dari API ini ke tiap API produk.
type
required
string Tipe dari transaksi.

Tipe yang tersedia::
Type Description
DISBURSEMENT Disbursement dari transaksi uang keluar.
PAYMENT Pembayaran yang meliputi semua jenis uang masuk.
REMITTANCE_PAYOUT Transaksi remittance untuk payout.
TRANSFER Transaksi transfer antar akun Xendit. Transfer bisa keluar atau masuk.
REFUND Sebuah transaksi pengembalian dana telah dibuat untuk melakukan pengembalian dana dari transaksi masuk.
channel_code
optional
string Kanal dari transaksi yang digunakan.
Lihat kode kanal untuk daftar kanal yang ada tiap kategori.
reference_id
required
string Referensi dari sebuat transaksi
Untuk beberapa produk, referensi lebih dikenal dengan external_id. Ini adalah id yang dibuat oleh Anda dan dapat digunakan untuk rekonsiliasi..
account_identifier
optional
string Account identifer atau pengenal dari akun yang digunakan untuk setiap transaksi.
Formatnya akan berbeda untuk setiap jeniis kanal transaksi. Sebagai contoh, pada kanal BANK akan berisi nomer rekining dan pada CARD akan berisi sebagian nomor kartu kredit.
currency
optional
string (ISO 4217) ata uang transaksi.
Lihat daftar mata uang yang didukung oleh Xendit.
amount
required
number Nominal dari transaksi.
Jumlah angka desimal akan berbeda untuk tiap mata uang sesuai ISO 4217.
net_amount
required
number Nominal bersih dari transaksi yang telah dipotong biaya dan pajak..
cashflow
required
string Menunjukkan apakah transaksi uang masuk atau uang keluar. Untuk transfer, transfer keluar akan tercatat sebagai uang keluar dan transfer masuk sebagai uang masuk.
Nilai yang tersedia adalah MONEY_IN untuk uang masuk and MONEY_OUT untuk uang keluar.
status
required
string string | Status transaksi.

Status yg tersedia:
Status Description
PENDING Transaksi masih menunggu diproses. Ini merujuk pada transaksi uang keluar ketika saldo uang Anda masih ditahan.
SUCCESS Transaksi uang keluar telah berashil dikirim atau uang masuk telah diterima.
FAILED Transaksi gagal untuk dikirim/diterima.
VOIDED Transaksi uang masuk dibatalkan oleh kustomer.
REVERSED Transaksi dibatalkan oleh Xendit.
channel_category
required
string Kategori kanal dari transaksi untuk mengidentifikasi sumber dari transaksi
kanal yang tersedia untuk tiap tipe adalah:
Type Channels
DISBURSEMENT and REMITTANCE_PAYOUT BANK and CASH
PAYMENT CARDS, CARDLESS_CREDIT, DIRECT_DEBIT, EWALLET, PAYLATER, QR_CODE, RETAIL_OUTLET, VIRTUAL_ACCOUNT
TRANSFER XENPLATFORM
business_id
required
string Id dari bisnis yang melakukan transaksi ini.
created
required
string (ISO 8601) Waktu ketika transaksi ini dibuat saat UTC+0.
updated
required
string (ISO 8601) Waktu terakhir ketika transaksi ini diperbarui saat UTC+0.
fee
required
object
Body Parameter Type Description
xendit_fee number Nominal dari biaya.
value_added_tax number Nominal PPN dari transaski.
xendit_withholding_tax number Jumlah dari Xendit Pajak Potong untuk transaksi ini, jika berlaku.
Buka dokumentasi pajak untuk informasi lebih lanjut.
third_party_withholding_tax number Nominal Pajak Potong pihak Ketiga untuk transaksi ini, jika berlaku.
Contoh pihak ketiga : Bank
status string Status biaya
Status Description
PENDING Biaya sedang dalam proses untuk ditagihkan.
COMPLETED Biaya telah berhasil ditagihkan.
CANCELED Transaksi gagal dan biaya dibatalkan.
REVERSED Transaksi telah di reverse dan biaya dikembalikan.
                    </td>
                </tr>
            </tbody>
        </table>

    </td>
</tr>

settlement_status
optional
string Status settlement akan muncul untuk transaksi uang masuk.
Untuk transaksi uang keluar, nilainya adalah NULL
Settlement Status Description
PENDING Nominal transaksi belum ter-settle ke saldo merchant
SETTLED Nominal transaksi telah ter-settle ke saldo merchant
estimated_settlement_time
optional
string (ISO 8601) Estimated settlement time akan muncul untuk transaksi uang masuk.
Untuk transaksi uang keluar, nilainya adalah NULL
Estimasi tanggal dan jam di mana nominal transaksi akan ter-settle ke saldo merchant.
Contoh: "2022-04-26T08:44:39.566Z"
Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id sub-akun yang akan digunakan untuk mendapatkan transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.

Contoh Permintaan Mendapatkan Transaksi

curl https://api.xendit.co/transactions/txn_13dd178d-41fa-40b7-8fd3-f83675d6f413 -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:

Contoh Respon Mendapatkan Transaksi

{
    "id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
    "product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
    "type": "PAYMENT",
    "status": "SUCCESS",
    "channel_category": "RETAIL_OUTLET",
    "channel_code": "ALFAMART",
    "reference_id": "ref23232",
    "account_identifier": null,
    "currency": "IDR",
    "amount": 1,
    "cashflow": "MONEY_IN",
    "business_id": "5fc9f5b246f820517e38c84d",
    "created": "2021-06-23T02:42:15.601Z",
    "updated": "2021-06-23T02:42:15.601Z"
}
Parameter Path Tipe Deskripsi
transaction_id
required
string Id dari transaksi.

Parameter Respon

Mengembalikan Objek Transaksi dengan kode HTTP status 200

Kode Error

Lihat contoh umum error lainya di sini.

Kode Error Deskripsi
TRANSACTION_NOT_FOUND
404
Transaksi dengan id ini tidak ditemukan.
FEATURE_NOT_AVAILABLE
400
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini.

Mendapatkan Daftar Transaksi

Endpoint: Mendapatkan Daftar Transaksi

GET https://api.xendit.co/transactions

Gunakan endpoint ini untuk mendapatkan seluruh transaksi atau memilih filter dan kata kunci tertentu. Anda dapat melakukan filter menggunakan waktu, tipe, atau status. Anda juga dapat melakukan pencarian berdasarkan referensi atau id produk. Hasil daftar transaksi yang dikembalikan akan menggunakan paginasi dan terurut berdasakan waktu pembuatan.

Parameter Request

Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id sub-akun yang akan digunakan untuk mendapatkan transaksi.

Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.

Contoh Permintaan Mendapatkan Daftar Transaksi

curl https://api.xendit.co/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2 -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
Parameter Query Tipe Deskripsi
types
optional
array of strings Tipe transaksi yang akan difilter. Jika tidak ditentukan, semua tipe transaksi akan dikembalikan.

Tipe yang tersedia:
DISBURSEMENT: Disbursement dari transaksi uang keluar.
PAYMENT: Pembayaran yang meliputi semua jenis uang masuk.
REMITTANCE_PAYOUT: Transaksi remittance untuk payout.
TRANSFER: Transaski transfer antar akun Xendit. Transfer bisa keluar atau masuk.
REFUND: Sebuah transaksi pengembalian dana telah dibuat untuk melakukan pengembalian dana dari transaksi masuk.
statuses
optional
array of strings Status transaksi yang akan difilter. Jika tidak ditentukan, semua status transaksi akan dikembalikan.

Status yg tersedia:
PENDING: Transaksi masih menunggu diproses. Ini merujuk pada transaksi uang keluar ketika saldo uang Anda masih ditahan.
SUCCESS: Transaksi uang keluar telah berashil dikirim atau uang masuk telah diterima.
FAILED: Transaksi gagal untuk dikirim/diterima.
VOIDED: Transaksi uang masuk dibatalkan oleh kustomer.
REVERSED: Transaksi dibatalkan oleh Xendit.
channel_categories
optional
array of strings Kanal transaksi yang akan difilter. Jika tidak ditentukan, semua kanal transaksi akan dikembalikan.

Untuk tipe DISBURSEMENT dan REMITTANCE_PAYOUT, kategori kanal yang tersedia adalah BANK and CASH.
Untuk tipe PAYMENT, kategori kanal yang tersedia adalah CARDS, CARDLESS_CREDIT, DIRECT_DEBIT, EWALLET, PAYLATER, QR_CODE, RETAIL_OUTLET, VIRTUAL_ACCOUNT.
Sedangkan untuk tipe TRANSFER, kategori kanal yang tersedia adalah XENPLATFORM.
reference_id
optional
string Referensi yang akan dicari. Pencarian menggunakan referensi adalah case sensitive dan dapat parsial.
product_id
optional
string Id produk yang akan dicari. Pencarian menggunakan id produk adalah case sensitive dan sama persis.
account_identifier
optional
string Account identifier yang akan dicari. Pencarian menggunakan ccount identifier adalah case sensitive dan sama persis.
currency
optional

default: IDR
string (ISO 4217) Mata uang yang akan difilter. Lihat datafat mata uang yang didukung.
amount
optional
number Nominal transaksi yang akan dicari. Pencarian ini akan mencari dengan nilai yang sama persis.
created[gte]
optional
string (ISO 8601) Batas awal waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan.
created[lte]
optional
string (ISO 8601) Batas akhi waktu transaksi berdasakan kapan transaksi itu dibuat. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan.
updated[lte]
optional
string (ISO 8601) Batas awal waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan.
updated[gte]
optional
string (ISO 8601) Batas akhir waktu transaksi berdasakan kapan transaksi itu diperbarui. Jika tidak ditentukan, transaksi dari semua rentang waktu akan dikembalikan.
limit
optional

default: 10
number Batas dari jumlah transaksi yang dikembalikan untuk tiap request.
Batas berada dalam rentang 1 and 50.
after_id
optional
string Batas id dari transaksi sebelumnya. Gunakan ini bersama links pada respon untuk keperluan paginasi.
before_id
optional
string Batas id dari transaksi setelahnya.

Parameter Respon

Contoh Respon Mendapatkan Daftar Transaksi

{
    "has_more": true,
    "data": [
        {
            "id": "txn_13dd178d-41fa-40b7-8fd3-f83675d6f413",
            "product_id": "d290f1ee-6c54-4b01-90e6-d701748f0701",
            "type": "PAYMENT",
            "status": "SUCCESS",
            "channel_category": "RETAIL_OUTLET",
            "channel_code": "ALFAMART",
            "reference_id": "ref23244",
            "account_identifier": null,
            "currency": "IDR",
            "amount": 1,
            "cashflow": "MONEY_IN",
            "business_id": "5fc9f5b246f820517e38c84d",
            "created": "2021-06-23T02:42:15.601Z",
            "updated": "2021-06-23T02:42:15.601Z"
        },
        {
            "id": "txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
            "product_id": "d290f1ee-6c54-4b01-90e6-d701748f0700",
            "type": "PAYMENT",
            "status": "SUCCESS",
            "channel_category": "RETAIL_OUTLET",
            "channel_code": "ALFAMART",
            "reference_id": "ref242424",
            "account_identifier": null,
            "currency": "IDR",
            "amount": 1,
            "cashflow": "MONEY_IN",
            "business_id": "5fc9f5b246f820517e38c84d",
            "created": "2021-06-23T02:39:23.176Z",
            "updated": "2021-06-23T02:39:23.176Z"
        }
    ],
    "links": [
        {
            "href": "/transactions?types=PAYMENT&statuses=SUCCESS&channel_categories=EWALLET&channel_categories=RETAIL_OUTLET&limit=2&after_id=txn_a765a3f0-34c0-41ee-8686-bca11835ebdc",
            "method": "GET",
            "rel": "next"
        }
    ]
}
Parameter Body Tipe Deskripsi
data
required
array of objects Mengembalikan array Objek Transaksi. Mengembalikan array kosong bila hasil tidak ditemukan.
has_more
required
bolean Mengindikasikan apakah masih ada transaksi lainnya pada halaman selanjutnya menggukan parameter after_id.
Gunakan links untuk mendapatkan hasil selanjutnya.
links
optional
object Tautan ke hasil selanjutnya berdasakan HATEOAS jika ada.
Format HATEOAS adalah:
href: URI dari target, ini akan berisi tautan ke halaman selanjutnya.
rel: Hubungan antara sumber dan target, nilainya akan berisi next.
method: Metode HTTP, ini akan berisi GET.

Kode Error

Lihat contoh umum error lainya di sini.

Kode Error Deskripsi
FEATURE_NOT_AVAILABLE
400
Selama masa beta, beberapa kustomer dapat menjumpai error ini. Silahkan hubungi customer support kami untuk mengaktifkan fitur ini.

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-id
optional
string User-id dari sub-akun yang ingin Anda buatlan tokennya.
Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

Parameter Bodi Tipe Deskripsi
amount
optional
string Jumlah biaya yang ingin dikenakan. Wajib diisi untuk Token Sekali Pakai karena digunakan untuk proses otentikasi.
card_data
required
object Detail informasi kartu pelanggan
paramater objek data kartu
Key Value
account_number
required
string Nomor kartu yang akan dikonversi menjadi token
exp_month
required
string Bulan kedaluwarsa kartu yang akan dikonversi menjadi token
exp_year
required
string Tahun kedaluwarsa kartu yang akan dikonversi menjadi token
card_cvn
optional
string Kode CVN/CVC kartu. Opsional namun sangat direkomendasikan. Dibutuhkan untuk kartu yang diterbitkan di Eropa.
is_multiple_use
optional default: false
boolean Penentuan apakah token akan digunakan berulang kali atau tidak
currency
optional
string Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda
should_authenticate
default: true
boolean Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak.
billing_details
optional
object Rincian tagihan pemilik kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem 3DS EMV dan verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan dari negara Amerika / Kanada / Inggris Raya
parameter pada detil data tagihan
Kunci Nilai
given_names
optional
string Nama pertama pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
surname
optional
string Nama belakang pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
email
optional
string Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu
mobile_number
optional
string Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164
phone_number
optional
string Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor)
address
optional
object Alamat tagihan pemilik kartu
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
parameter objek alamat
Kunci Nilai
country
required
string 2-huruf ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu
street_line1
optional
string Nama bangunan dan nomor unit apartemen / rumah
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
street_line2
optional
string Alamat lengkap bangunan
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan:
Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
city
optional
string Kabupaten/Kota pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
province_state
optional
string Provinsi, state, atau region pemilik kartu. Jika pemilik kartu merupakan penduduk Amerika, pastikan nilai yang dimasukkan adalah kode negara bagian (contoh gunakan CA untuk California)
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
postal_code
optional
string Kode ZIP atau Kode Pos bila tersedia
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
category
optional
string Kategori alamat yang dimasukkan sebagai nilai. Nilai hanya dapat berisikan HOME, WORK, dan PROVINCIAL
customer
optional
object Informasi yang berkaitan dengan pelanggan (pemilik kartu), contohnya rincian kontak. Parameter ini direkomendasikan untuk menjalankan protokol otentikasi yang lebih baik, meningkatkan tingkat kesuksesan transaksi, dan mencegah tindakan-tindakan penipuan (fraud). Cantumkan parameter ini untuk mencatat alamat pengiriman pelanggan, bila tersedia.
Parameter Objek Pelanggan
Kunci Nilai
reference_id
optional
string Nilai parameter ini adalah ID yang merepresentasi pelanggan Anda di sistem Anda. Nilai dapat disamakan dengan reference_id pada API pembuatan Customer.
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
mobile_number
optional
string Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
phone_number
optional
string Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor)
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
email
optional
string Alamat email pelanggan atau pemilik kartu
Catatan: Required for AVS and 3DS 2.0
given_names
optional
string Nama pertama pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
surname
optional
string Nama belakang pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
nationality
optional
string 2-huruf ISO 3166-2 kode negara kewarnegaraan pemilik kartu
date_of_birth
optional
string Tanggal, bulan, dan tahun lahir pelanggan atau pemilik kartu dengan format YYYY-MM-DD
description
optional
string Deskripsi yang diberikan oleh merchant terkait dengan data pelanggan yang dimasukkan sebagai input
jumlah karakter minimum: 1 karakter
jumlah karakter maksimum: 500 karakter
metadata
optional
object Data bebas dengan format json yang dapat digunakan pelanggan sebagai data pelengkap.
addresses
optional
Array of JSON Informasi alamat pelanggan. Gunakan parameter ini untuk mengirimkan alamat pengiriman milik pelanggan kepada Xendit jika tersedia. Untuk alamat penagihan, mohon disertakan pada parameter billing_details di atas
object Parameter Objek Alamat
Kunci Nilai
country
required
string 2-huruf ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu
street_line1
optional
string Nama bangunan dan nomor unit apartemen / rumah
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
street_line2
optional
string Alamat bangunan
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
city
optional
string Kabupaten/Kota pemilik kartu
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
province_state
optional
string Provinsi, state, atau region pemilik kartu. Jika pemilik kartu merupakan penduduk Amerika, pastikan nilai yang dimasukkan adalah kode negara bagian (contoh gunakan CA untuk California)
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)
postal_code
optional
string Kode ZIP atau kode POS bila tersedia
Jumlah karakter minimum: 1 karakter
Jumlah karakter maksimum: 255 karakter
Catatan: Dibutuhkan untuk mendukung 3DS 2.0 dan AVS (Verifikasi Alamat)

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.
status
required
string Status proses tokenisasi. Lihat Status Tokenisasi
payer_authentication_url
optional
string Dikembalikan pada respon hanya jika permintaan pembuatan token dilakukan bersamaan dengan permintaan otentikasi dan status yang dikembalikan bernilai IN_REVIEW. Parameter ini berisikan dengan URL yang nantinya akan diakses oleh pemilik kartu untuk melakukan otentikasi 3DS (memasukkan OTP.
failure_reason
optional
string Jika tokenization yang digabung dengan otentikasi mengalami kegalan dengan status FAILED, parameter ini menjelaskan alasan dari kegagalan tersebut. Lihat Alasan Kegagalan pada Proses Tokenisasi
card_info
optional
object Informasi kartu yang sudah dilakukan proses tokenisasi.
parameter info kartu
Kunci Nilai
bank
optional
string Nama bank penerbit kartu
country
optional
string 2-huruf ISO 3166-2 kode negara Kode negara penerbit kartu
type
optional
string Tipe kartu kredit/debit yang sudah dilakukan tokenisasi. Dapat bernilai CREDIT, DEBIT, PREPAID, dan UNKNOWN
brand
optional
string Merek atau skema dari kartu yang sudah dilakukan tokenisasi. Dapat bernilai VISA, MASTERCARD, JCB, dan AMEX

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

Kode Error

Kode Error Deskripsi
API_VALIDATION_ERROR
400
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
INVALID_JSON_FORMAT
400
Isi dari request bukan format JSON yang benar.
ACCOUNT_NUMBER_INVALID_ERROR
400
Nomor kartu kredit tidak valid atau salah.
VALIDATION_ERROR
400
Data dikirimkan dengan format yang salah
BRAND_NOT_SUPPORTED_ERROR
400
Merek kartu tidak didukung. Sarankan pengguna untuk menggunakan Visa/Mastercard.
AUTHENTICATION_REQUIRED_ERROR
400
Anda tidak menyertakan authentication_id yang valid dalam request dan akun anda tidak dikonfigurasi untuk otentikasi pilihan. Sertakan authentication_id yang valid atau hubungi kami bila Anda ingin mematikan setingan wajib otentikasi.
REQUEST_FORBIDDEN_ERROR
403
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
VERIFICATION_TIMEOUT_ERROR
408
Jaringan kartu kredit mengalami timed out ketika berusaha melakukan tokenisasi.
TEMPORARY_SERVICE_ERROR
503
Terjadi masalah ketika melakukan tokenisasi pada jaringan kartu kredit.
CONNECTION_ERROR
Terjadi kesalahan pada saat melakukan hubungan dengan server kami. Silahkan mencoba lagi dan bila kegagalan terus terjadi, silahkan mencoba menggunakan perangkat atau jaringan lain
TOKENIZATION_ERROR
Kesalahan umum. Coba lagi atau coba dengan menggunakan kartu yang lain.

Mendapatkan Token

Definisi: Mendapatkan Token

GET https://api.xendit.co/credit_card_tokens/:credit_card_token_id?

Contoh Melakukan Permintaan Mendapatkan Token Request Menggunakan Token ID

curl https://api.xendit.co/credit_card_tokens/605c05d3f81fa60011b2fa4e \
    -X GET \
    -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:

Contoh Respon Token Response

{
  "business_id": "602103396f17450020ca2246",
  "created": "2021-03-25T03:38:59.318Z",
  "id": "605c05d3f81fa60011b2fa4e",
  "status": "VALID",
  "card_expiration_month": "12",
  "card_expiration_year": "2025",
  "metadata": {
      "bank": "PT. Bank Rakyat Indonesia (Persero)",
      "country_code": "US",
      "type": "CREDIT",
      "brand": "VISA",
  },
  "card_info": {
      "bank": "PT. Bank Rakyat Indonesia (Persero)",
      "country": "ID",
      "type": "CREDIT",
      "brand": "VISA",
      "card_art_url": "",
      "fingerprint": "6021f7d3717e0500115fbb0d",
  },
}

Ini adalah endpoint untuk mengambil suatu objek token. Anda perlu menentukan nilai dari token_id.

Parameter Request

Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id dari sub-akun yang ingin Anda dapatkan tokennya.

Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

Parameter Query Tipe Deskripsi
credit_card_token_id
required
string Dapat diinput dengan nilai diantara id token dari kartu kredit yang sudah di tokenisasi.

Kode Error

Kode Error Deskripsi
API_VALIDATION_ERROR
400
Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
CREDIT_CARD_TOKEN_NOT_FOUND_ERROR
404
credit_card_token_id tidak ditemukan

Pembuatan Otentikasi

Javascript Function: createAuthentication

Xendit.card.createAuthentication(authenticationData, function (err, data) {
    if (err) {
        //Definisikan penanganan kesalahan
    }

    if (data.status === 'VERIFIED') {
        // Penanganan keberhasilan
    } else if (data.status === 'IN_REVIEW') {
        // Penanganan otentikasi (3DS)
    } else if (data.status === 'FAILED') {
        // Penanganan kegagalan
    }
});

Untuk melakukan otentikasi pada token, silahkan menggunakan fungsi Xendit.card.createAuthentication di Xendit.js. Fungsi ini menerima objek authenticationData dan mengembalikan authentication_id yang dapat digunakan untuk melakukan otentikasi. Silahkan melihat Pembuatan Charge untuk detil lebih lanjut mengenai Charge.

Lihat Sample Otentikasi untuk contoh implementasi.

Contoh Objek authenticationData

{        
    "amount": "10000",        
    "token_id": "58e2096018b815f555c8a524"
}

Contoh Respon Otentikasi

{
    "id": "58e2097218b815f555c8a526",
    "status": "VERIFIED"
}

Parameter Request (Money-in write permission)

Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id dari sub-akun yang ingin Anda buatlan tokennya.

Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

Parameter 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",
      "card_cvn":"123",
      "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
  "123", // Card CVN
  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,
    card_cvn="123",
)
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",
      "card_cvn":"123"
    }'
<?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
  "123", // Card CVN
  false // capture
  );
} catch (XenditException e) {
  e.printStackTrace();
}

Example Zero Amount Authorization Response

{
    "created": "2020-01-11T07:33:14.442Z",
    "status": "AUTHORIZED",
    "business_id": "5850e55d8d9791bd40096364",
    "authorized_amount": 0,
    "external_id": "postman-charge-1502436793",
    "merchant_id": "xendit",
    "merchant_reference_code": "598d5d0d51e0870d44c61533",
    "card_type": "CREDIT",
    "masked_card_number": "400000XXXXXX0002",
    "charge_type": "SINGLE_USE_TOKEN",
    "card_brand": "VISA",
    "bank_reconciliation_id": "5132390610356134503009",
    "eci": "05",
    "id": "598d5dba51e0870d44c61539"
}

Pengembalian Otorisasi (Reverse Auhorization)

Definisi: Pembuatan Reverse Authorization

POST https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal

Contoh Permintaan Pembuatan Reverse Authorization

curl -X POST \
  https://api.xendit.co/credit_card_charges/:charge_id/auth_reversal \
  -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
  -d '{
    "external_id": "reverse-authorization-1502436817",
    }'
<?php

  use Xendit\Xendit;
  require 'vendor/autoload.php';

  Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');

  $id = '5ecc82736275b80019591c91';
  $params = ['external_id' => 'reverse-authorization-1502436817'];

  $reverseAuth = \Xendit\Cards::reverseAuthorization(
      $id,
      $params
  );
  var_dump($reverseAuth);

?>
const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { Card } = x;
const cardSpecificOptions = {};
const card = new Card(cardSpecificOptions);

const resp = await card.reverseAuthorization({
  externalID: 'reverse-authorization-1502436817',
});
console.log(resp);
Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
try {
  CreditCardReverseAuth creditCardReverseAuth = CreditCard.reverseAuthorization(
    "1234567", //chargeId
    "reverse-authorization-1502436817" //externalId
  );
} catch (XenditException e) {
  e.printStackTrace();
}
xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="

reverseAuthorizationData := card.ReverseAuthorizationParams{
  ChargeID:   "123",
  ExternalID: "reverse-authorization-1502436817",
}

reverseAuthorizationResp, err := card.ReverseAuthorization(&reverseAuthorizationData)
if err != nil {
  log.Fatal(err)
}

fmt.Printf("reversed authorization: %+v\n", reverseAuthorizationResp)
from xendit import Xendit

api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
xendit_instance = Xendit(api_key=api_key)
CreditCard = xendit_instance.CreditCard

reverse_authorization = CreditCard.reverse_authorizatiton(
    credit_card_charge_id="5f0421fa8cc1e8001973a1d6",
    external_id="reverse-authorization-1594106387",
)
print(reverse_authorization)

Contoh dari bentuk permintaan

{        
    "external_id": "reverse-authorization-1502436817",
}

Contoh dari respon pengembalian otorisasi

{
    "status": "SUCCEEDED",
    "currency": "IDR",
    "credit_card_charge_id": "5ecc82640d679500199621ad",
    "business_id": "5dd7928f4e6d9a2ec299ea43",
    "external_id": "reverse-authorization-1502436817",
    "amount": 5000,
    "created": "2020-05-26T02:44:03.458Z",
    "id": "5ecc82736275b80019591c91"
}

API ini dapat melakukan pengembalian transaksi yang sudah memiliki status AUTHORIZED dan belum dilakukan capture (pemindahan uang ke acquiring bank).

Parameter Request

Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id dari sub-akun yang ingin Anda buatlan tokennya.

Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

Parameter Body Tipe Deskripsi
external_id
required
string Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan.

Parameter Respon

Parameter Tipe Deskripsi
status
required
string Reverse Authorization status. Lihat Status Pengembalian Otorisasi.
currency
required
string Mata uang dari otorisasi yang ingin dikembalikan.
credit_card_charge_id
required
string ID dari otorisasi / charge yang ingin dikembalikan.
business_id
required
string ID akun bisnis Xendit Anda.
external_id
required
string Referensi untuk mengidentifikasi permintaan pengembalian otorisasi dari pelanggan.
amount
required
number Nominal uang yang dikembalikan untuk permintaan pengembalian otorisasi ini.
created
required
string Cap waktu ISO yang mencatat kapan permintaan pengembalian otorisasi tersebut dibuat reverse authorization
Timezone: GMT+0
.
id
required
string ID dari pengembalian otorisasi.
failure_reason
optional
string Jika status FAILED, parameter ini menjelaskan alasan dari kegagalan permintaan tersebut. Lihat Alasan Kegagalan Pengembalian Otorisasi.

Status Pengembalian Otorisasi

Status Deskripsi
SUCCEEDED Pengembalian Otorisasi telah berhasil dilakukan.
FAILED Pengembalian Otorisasi gagal

Alasan Kegagalan Pengembalian Otorisasi

Failure Reason Description
REVERSE_AUTHORIZATION_REJECTED_BY_BANK Permintaan pengembalian otorisasi ditolak oleh bank. Hal ini mungkin terjadi apabila otorisasi sudah lewat dari masa tenggang, ataupun kredit (uang) sudah dikembalikan ke akun pemegang kartu.
PROCESSOR_ERROR Permintaan pengembalian otorisasi gagal karena terdapat isu integrasi antara pemroses dengan bank penerbit kartu. Hubungi Kami apabila anda mengalami permasalahan ini

Error Pada Permintaan Pengembalian Otorisasi

Kode Error Deskripsi
API_VALIDATION_ERROR
400
Nilai yang dimasukkan pada parameter mengalami kesalaham. Pada objek error dijelaskan paramater mana yang mengalami kesalahan. Mohon dapat mencoba mengulangi request dengan memperbaiki input parameter.
CHARGE_ALREADY_REVERSED_ERROR
400
Charge telah dilakukan pengembalian, maka dari itu pengembalian otorisasi tidak dapat dilakukan
CHARGE_ALREADY_CAPTURED_ERROR
400
Charge telah dilaukan capture, maka dari itu pengembalian otorisasi tidak dapat dilakukan
CHARGE_FAILED_ERROR
400
Charge gagal, maka dari itu pengembalian otorisasi tidak dapat dilakukan
REQUEST_FORBIDDEN_ERROR
403
API key yang dipakai tidak memiliki izin untuk melakukan permintaan pengembalian otorisasi. Mohon gunakan API key yang mempunyai izin yang sesuai. Pelajari lebih lanjut here
CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
404
credit_card_charge_id tidak ditemukan untuk permintaan ini. Mohon gunakan credit_card_charge_id lain yang valid
INVALID_AMOUNT_FOR_REVERSE_AUTHORIZATION_ERROR
400
Nominal yang ingin dikembalikan tidak sesuai. Mohon dipastikan bahwa nominal charge tidak sama dengan 0.

Pembuatan Charge

Definisi: Pembuatan Charge

POST https://api.xendit.co/credit_card_charges

Contoh Permintaan Pembuatan Charge

curl -X POST \
  https://api.xendit.co/credit_card_charges \
  -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
  -H 'content-type: application/json' \
  -d '{
      "token_id" : "598d5d0e51e0870d44c61534",
      "external_id": "postman-charge-1502436817",
      "amount": 900000,
      "authentication_id": "598d5d0f51e0870d44c61535",
      "card_cvn": "123",
      "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,
      'card_cvn' => '123',
      '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',
  cardCvn: "123",
  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
    "123", //Card CVN
    "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,
    card_cvn="123",
)
print(charge)

Ketika Anda memiliki token, token tersebut dapat digunakan untuk melakukan Charge pada kartu

Parameter Request (Money-in write permission)

Parameter Header Tipe Deskripsi
for-user-id
optional
string User-id dari sub-akun yang ingin Anda buatlan tokennya.

Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

with-fee-rule
optional
string ID Fee Rule yang ingin Anda aplikasikan ke transaksi yang dilakukan

Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan fee_rule_id dan fee_id pada header response API

This header is only used if you have access to xenPlatform. See xenPlatform for more information

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.
card_cvn
optional
string 3 atau 4 angka kode CVN (CVC). Tidak wajib diisi namun kami sangat merekomendasikan untuk mengisi nilai tersebut. Wajib diisi untuk kartu kredit yang diterbitkan dari Eropa.
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.
card_cvn
optional
string 3 atau 4 angka kode CVN (CVC). Tidak wajib diisi namun kami sangat merekomendasikan untuk mengisi nilai tersebut. Wajib diisi untuk kartu kredit yang diterbitkan dari Eropa.
capture
optional

default: true
boolean Kondisi dimana Anda akan menentukan apakah akan melakukan Capture langsung atau tidak langsung. Ubah nilai menjadi false bila Anda menginginkan otentikasi saja (penahanan uang), untuk kemudian di-capture dengan capture endpoint.
Catatan: Otorisasi akan kedaluwarsa dalam 7 hari.
descriptor
optional
string Deskriptor khusus untuk mengidentifikasi merchant pada laporan penggunaan kartu kredit pemilik kartu.
Note:
Untuk pelanggan dengan mode aggregator, nilai yang akan dikembalikan adalah XDT*[MERCHANT_NAME]-DESCRIPTOR
Untuk pelanggan dengan mode switcher, nilai yang akan dikembalikan adalah [MERCHANT_NAME]-DESCRIPTOR
currency
optional

string Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Xendit secara default mendukung mata uang IDR untuk Indonesia dan PHP untuk Filipina. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan mata uang sesuai dengan negara dari bisnis Anda
mid_label
optional
string Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda.
Note:
Hanya dapat digunakan untuk pelanggan dengan mode switcher
billing_details
optional
object Rincian tagihan dari pemegang kartu. Jika dimasukkan pada input, data data ini harus sesuai dengan data yang dimiliki oleh penerbit kartu kredit. Parameter ini dibutuhkan untuk menunjang sistem verifikasi alamat (AVS) - hanya untuk kartu yang diterbitkan di negara USA / Canada / Ingrris Raya.
parameter pada detil data tagihan
Kunci Nilai
given_names string Nama pertama
surname
optional
string Nama belakang
email
optional
string Alamat email
mobile_number
optional
string Nomor handphone
phone_number
optional
string Nomor telepon lain (telpon rumah atau kantor)
address
required
object Objek Alamat
parameter objek alamat
street_line1
optional
string Nama bangunan dan nomor unit apartemen / rumah
street_line2
optional
string Alamat bangunan
city
optional
string Kota
province_state
optional
string Gunakan parameter ini untuk memasukkan provinsi, state, atau region dari pemilik kartu. Jika pemilik kartu merupakan penduduk USA, pastikan nilai yang input adalah kode negara bagian (contoh gunakan CA untuk California)
postal_code
required
string Kode POS atau kode ZIP
country
optional
string 2-hufur ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu
metadata
optional
object Data bebas dengan format json yang dapat digunakan pelanggan sebagai data pelengkap.
promotion
optional
object Jika Anda ingin menggunakan promosi, Anda harus memasukkan parameter ini pada permintaan transaksi Anda
reference_id
optional
string Kode unik yang digunakan untuk ID referensi pada API Pembuatan Promo.
original_amount
optional
number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
installment
optional
object Parameter ini diperlukan sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk mengecek apakah BIN atau token id yang digunakan mempunyai opsi cicilan, mohon mengacu pada Opsi Charge.
count
required
numberBersamaan dengan parameter interval, parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah 3.
interval
required
string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan periode bulanan, maka nilai yang dimasukkan adalah month. Untuk saat ini Xendit hanya menyediakan cicilan dengan periode interval bulanan.

Contoh Respon Pembuatan Charge

{
    "created": "2020-01-11T07:33:14.442Z",
    "status": "CAPTURED",
    "business_id": "5850e55d8d9791bd40096364",
    "authorized_amount": 900000,
    "external_id": "postman-charge-1502436793",
    "merchant_id": "xendit",
    "merchant_reference_code": "598d5d0d51e0870d44c61533",
    "card_type": "CREDIT",
    "masked_card_number": "400000XXXXXX0002",
    "charge_type": "SINGLE_USE_TOKEN",
    "card_brand": "VISA",
    "bank_reconciliation_id": "5132390610356134503009",
    "eci": "05",
    "capture_amount": 900000,
    "descriptor": "XDT*MYBUSINESS-MY NEW STORE",
    "id": "598d5dba51e0870d44c61539",
    "mid_label": "IDR_MID",
    "promotion": {
        "reference_id": "BCA_10",
        "original_amount": "1000000"
    },
    "installment": {
        "month": 3,
        "interval": "month"
    }
}

Contoh Respon Otorisasi

{
    "created": "2020-01-11T07:43:39.563Z",
    "status": "AUTHORIZED",
    "business_id": "5850e55d8d9791bd40096364",
    "authorized_amount": 90000,
    "external_id": "postman-authorize-1502437417",
    "merchant_id": "xendit",
    "merchant_reference_code": "598d5ffb51e0870d44c6153a",
    "card_type": "CREDIT",
    "masked_card_number": "400000XXXXXX0002",
    "charge_type": "SINGLE_USE_TOKEN",
    "card_brand": "VISA",
    "bank_reconciliation_id": "5132390610356134503009",
    "eci": "05",
    "descriptor": "XDT*MYBUSINESS-MY NEW STORE",
    "id": "598d602b51e0870d44c6153d",
    "mid_label": "IDR_MID",
    "promotion": {
        "reference_id": "BCA_10",
        "original_amount": "100000"
    },
    "installment": {
        "month": 3,
        "interval": "month"
    }
}

Respon Pembuatan Charge



Parameter Tipe Deskripsi
created
required
string Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge.
business_id
required
string ID akun bisnis Xendit Anda.
authorized_amount
required
number Nominal uang yang diotorisasi untuk Charge ini.
external_id
required
string Pengindentifikasi unik sesuai dengan pilihan Anda.
card_type
required
string Tipe Kartu (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
reference_id
optional
string Referensi unik seperti nama atau ID yang diberikan pada promo yang telah dibuat.
original_amount
optional
number Nominal asli dari transaksi (sebelum diberikan potongan harga).
installment
optional
object Parameter ini diberikan pada respon sebagai penanda bahwa permintaan Charge menggunakan metode cicilan. Untuk melihat apakah BIN mempunyai cicilan yang tersedia atau tidak, lihat [Permintaan Opsi Charge] (#permintaan-opsi-charge).
detil objek installment
count
required
number Bersamaan dengan parameter interval, parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran.
interval
required
string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran.

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_ALREADY_USED_ERROR
400
ID Token Sekali Pakai sudah pernah digunakan ketika melakukan Charge.
AUTHENTICATION_ALREADY_USED_ERROR
400
ID otentikasi sudah pernah digunakan ketika melakukan charge.
INVALID_TOKEN_ID_ERROR
400
Format ID token tidak valid.
INVALID_CVN_LENGTH_ERROR
400
Jumlah angka CVN tidak valid. Untuk kartu berlogo AMEX, jumlah angka CVN harus 4 angka. Selain AMEX, jumlah angka CVN harus 3 angka.
AUTHENTICATION_ID_MISSING_ERROR
400
ID Otentikasi wajib diisi.
AMOUNT_GREATER_THAN_AUTHENTICATED_ERROR
400
Jumlah nominal angka yang di-charge melampaui jumlah yang diotentikasi
INVALID_AUTHENTICATION_ID_ERROR
400
Format ID otentikasi tidak valid.
REQUEST_FORBIDDEN_ERROR
403
API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
TOKEN_NOT_FOUND_ERROR
404
ID token tersebut tidak ditemukan dalam sistem.
AUTHENTICATION_NOT_FOUND_ERROR
404
Token yang telah diotentikasi dengan otentikasi ID tersebut tidak ditemukan.
MID_NOT_FOUND_ERROR
404
MID yang digunakan pada parameter mid_label tidak dapat ditemukan. Lakukan pengecekan ulang jika Anda sudah mendaftarkan mid tersebut atau lakukan pengecekan pada input parameter mid Anda
INVALID_PROMOTION_DETAILS
400
Detil promosi yang dimasukkan tidak valid. Mohon dapat melakukan permintaan kembali dengan mengganti input objek promo yang ingin digunakan.
CARDHOLDER_NAME_REQUIRED
400
Mohon dapat menyertakan nama pemilik kartu pada parameter billing_details pada request Anda.
INSTALLMENT_BELOW_AMOUNT_MINIMUM
400
Nominal transaksi yang ingin dilakukan berada di bawah minimum batas transaksi cicilan.
INSTALLMENT_UNAVAILABLE
404
Kemungkinan penjelasan kesalahan:
  • Fitur cicilan tidak tersedia untuk kartu yang diterbitkan oleh bank tersebut. Mohon dicoba kembali menggunakan kartu yang lain.
  • Interval dari cicilan yang diajukan tidak tersedia. Mohon dicoba kembali menggunakan interval periode cicilan yang lain.
  • AMOUNT_BELOW_MINIMUM_LIMIT
    400
    Nominal yg dimasukkan pada input di bawah batas minimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau lebih dari batas minimum. Batas minimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut:
  • IDR: 5000.
  • PHP: 20.

  • AMOUNT_ABOVE_MAXIMUM_LIMIT
    400
    Nominal yg dimasukkan pada input di atas batas maksimum transaksi. Mohon lakukan permintaan dengan nominal yang sama atau kurang dari batas maksimum. Batas maksimum yang ditentukan dari sistem berdasarkan mata uang yg digunakan adalah sebagai berikut:
  • IDR: 200000000.
  • PHP: 700000.

  • INCOMPLETE_AUTHENTICATION
    400
    authentication_id yang dimasukkan tidak dapat digunakan karena proses otentikasi tidak dapat diselesaikan. Hal ini biasanya terjadi karena adanya kendala saat menampilkan render halaman 2FA, pelanggan tidak menyelesaikan proses 3DS, atau hal lain terjadi seperti timeout dari sisi bank. Mohon mencoba lagi transaksi ini atau Anda dapat menghilangkan authentication_id dari Charge request apabila 3DS opsional sudah diaktifkan untuk bisnis Anda. (Apabila Anda ingin dapat melakukan otentikasi secara opsional/dinamis 3DS, kontak kami untuk mengaktifkan fitur ini. Lihat dokumentasi otentikasi untuk panduan integrasi dan testing.)

    Tipe Charge

    Status Deskripsi
    SINGLE_USE_TOKEN Charge yang dibuat dengan Token Sekali Pakai
    MULTIPLE_USE_TOKEN Charge yang dibuat dengan Token Pemakaian Berulang
    RECURRING Melakukan charge berulang dengan Langganan

    Kode ECI

    ECI Deskripsi
    0 Tidak bisa diotentikasi (MasterCard)
    1 Percobaan Otentikasi(MasterCard)
    2 Otentikasi Berhasil (MasterCard)
    5 Otentikasi Berhasil (Visa, AMEX, JCB)
    6 Percobaan Otentikasi (Visa, AMEX, JCB)
    7 Tidak bisa diotentikasi (Visa, AMEX, JCB)

    Pembuatan Safe Acceptance

    Fitur ini merupakan alternatif dari API charge, dimana dapat digunakan untuk kondisi sebagai berikut

    Gunakan halaman demo ini untuk menguji skenario menggunakan Safe Acceptance, dan untuk melihat contoh bagaimana Safe Acceptance dapat diintegrasikan di halaman web.

    Penjelasan Metode Integrasi dari Pemrosesan Pembayaran pada Safe Acceptance

    Kekuatan dari fitur Safe Acceptance API yang Kami miliki terletak pada kemampuan untuk mendukung proses pembayaran kartu kredit pada metode integrasi yang umum digunakan secara fleksibel. Secara umum, terdapat beberapa metode integrasi yang dijelaskan sebagai berikut:

    Perlu dijadikan catatan bahwa pada fitur Safe Acceptance, parameter token_id masih dapat digunakan untuk melakukan transaksi

    Definis: Pembuatan Transaksi Safe Acceptance

    POST 
    https://api.xendit.co/credit_cards/safe_acceptance

    Contoh Permintaan Safe Acceptance

    {
        "amount": "1200000",
        "return_url": "https://mybusiness.co",
        "reference_id": "xdt-safe-acceptance-007",
        "transaction_type": "SALES",
        "request_timestamp": "2021-01-10T09:50:40+03:00",
        "descriptor": "INV-SAFE-ACCEPTANCE-007",
        "card_number": "1889800000000171",
        "card_exp_year": "2021",
        "card_exp_month": "03",
        "card_cvn": "101",
        "should_authenticate": true,
        "currency": "IDR",
        "promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
        "promotion_original_amount: 50000,
        "authorization": "Basic eG5kX3B1YmxpY19kZXZlbG9wbWVudF9PNDZBZkw4azFlRGtwSnRmN3RPSERDV01OQ2w4dFI0azNibVJ4bm1EUnIyb0NnZHdnQTo=",
        "signed_field_names": "reference_id,amount,currency,request_timestamp,return_url,authorization,signed_field_names",
        "signature": "37c0323212908b9d4fe607f9d237c95aae2503a799d278afdc663268b5f8906e"
    }

    Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema Visa / MasterCard / JCB)

    {
            "created": "2021-01-10T09:50:40+03:00",
            "business_id": "5d08a4nfea3b620019cfa213c",
            "authorized_amount": 1200000,
            "reference_id": "ecm-8112",
            "merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
            "masked_card_number": "400000XXXXXX0002",
            "charge_type": "SINGLE_USE_TOKEN",
            "card_brand": "VISA",
            "card_type": "CREDIT",
            "status": "CAPTURED",
            "bank_reconciliation_id": "5622988916826241203012",
            "eci": "05",
            "capture_amount": "1200000",
            "currency": "IDR",
            "id": "5d1eca0ca3bcd10019a7e2ee",
            "authorized_amount": "1200000",
            "merchant_id" : "00080091009103589348501",
            "descriptor": "INV-SAFE-ACCEPTANCE-007",
            "promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
               "promotion_original_amount: 50000,
            "signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
            "signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
    }

    Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema BCA)

    {
            "created": "2021-01-10T09:50:40+03:00",
            "business_id": "5d08a4nfea3b620019cfa213c",
            "authorized_amount": 1200000,
            "reference_id": "ecm-8112",
            "merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
            "masked_card_number": "143481XXXXXX0002",
            "charge_type": "SINGLE_USE_TOKEN",
            "card_brand": "BCA",
            "status": "CAPTURED",
            "bank_reconciliation_id": "5622988916826241203012",
            "eci": "05",
            "capture_amount": "1200000",
            "currency": "IDR",
            "id": "5d1eca0ca3bcd10019a7e2ee",
            "authorized_amount": "1200000",
            "merchant_id" : "00080091009103589348501",
            "descriptor": "INV-SAFE-ACCEPTANCE-007",
            "promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
                "promotion_original_amount: 50000,
            "signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
            "signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
    }    

    Contoh Respon Safe Acceptance yang dikirimkan ke webhook (Kartu dengan skema GPN)

    {
            "created": "2021-01-10T09:50:40+03:00",
            "business_id": "5d08a4nfea3b620019cfa213c",
            "authorized_amount": 1200000,
            "reference_id": "ecm-8112",
            "merchant_reference_code": "5d1ec8f4a3bcd10019a7e2de",
            "masked_card_number": "143481XXXXXX0002",
            "charge_type": "SINGLE_USE_TOKEN",
            "card_brand": "GPN",
            "status": "CAPTURED",
            "bank_reconciliation_id": "5622988916826241203012",
            "eci": "05",
            "capture_amount": "1200000",
            "currency": "IDR",
            "id": "5d1eca0ca3bcd10019a7e2ee",
            "authorized_amount": "1200000",
            "merchant_id" : "00080091009103589348501",
            "descriptor": "INV-SAFE-ACCEPTANCE-007",
            "promotion_reference_id": "promo-jan-0c927488-b4df-11ec-b909-0242ac120002",
                "promotion_original_amount: 50000,
            "signed_field_names": "create,business_id,authorized_amount,reference_id,merchant_reference_code,masked_card_number,charge_type,card_brand,card_type,status,bank_reconciliation_id,eci,capture_amount,currency,id,authorized_amount,merchant_id,mid_label,descriptor",
            "signature": "25798ae4db8361fa4ee423e7321a1558a1b0bf0863e8082e0551e62fd8e7a771"
    }    

    Parameter Permintaan

    Parameter Tipe Deskripsi
    amount
    required
    number Jumlah biaya yang akan di-charge.
    reference_id
    required
    string Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter.
    request_timestamp
    required
    string Stempel waktu saat permintaan pembuatan safe acceptance dilakukan, dengan format ISO8601. Dibutuhkan untuk membuat signature untuk kemudian digunakan sebagai validasi pada sistem Xendit.
    Contoh: 2021-01-10T09:50:40+03:00
    currency
    required
    string Mata uang yang akan digunakan saat melakukan transaksi. Gunakan tiga huruf kode mata uang sesuai standar ISO. Mata uang yang tersedia:
    • Bisnis yang beroperasi di Indonesia: IDR
    • Bisnis yang beroperasi di Filipina: PHP, USD
    return_url
    required
    string URL ini akan digunakan untuk mengarahkan pelanggan akhir apabila transaksi pembayaran sudah selesai. URL ini akan dipanggil menggunakan metode HTML form POST dengan hasil transaksi yang dicantumkan pada response. Singature akan dikirimkan pada response untuk dapat divalidasi oleh pelanggan.
    authorization
    required
    string Public API Key dari sistem Xendit Anda (yang sudah dikonversi menjadi format base-64).
    signature
    required
    string Nilai dari parameter ini didapatkan dengan menggunakan dari secret API key Xendit yg dapat diambil dari Dasbor Anda, kemudian membuat hash dari parameter yang dicantumkan pada permintaan dengan methode sha256. Lihat Dokumentasi Safe Acceptance Kami sebagai petunjuk.
    signed_field_names
    required
    string Nilai dari parameter ini harus berisikan dengan nilai kunci dari parameter yang nantinya akan digunakan untuk melakukan verifikasi signature, dipisahkan dengan tanda koma.
    Makndatori:(jika permintaan Anda berisikan parameter tersebut):
    amount, currency, authorization, reference_id, request_timestamp,mid_label, channel_code, return_url, should_authenticate
    channel_code
    optional
    string Nilai yang digunakan untuk menentukan konektor mana yang akan digunakan dalam proses Safe Acceptance. Jika tidak diisi, nilai defaultnya adalah Visa/MasterCard/JCB/AMEX. Untuk transaksi lain, lihat:
    • GPN: (Gerbang Pembayaran Nasional) gunakan nilai ini untuk melakukan transaksi menggunakan kartu GPN (metode 3 party)
    • BCA: gunakan nilai ini untuk melakukan transaksi menggunakan kartu dengan skema Bank BCA untuk diproses menggunakan konektor inhouse (metode 2.5 party)
    card_number
    optional
    string Nomor kartu kredit/debit online yang akan dikonversi menjadi token.
    Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party
    card_exp_year
    optional
    string Tahun kedaluwarsa kartu kredit / debit online (4 digit angka)
    Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party
    card_exp_month
    optional
    string Tanggal kedaluwarsa kartu kredit / debit online (2 digit angka)
    Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party
    card_cvn
    optional
    string Kode keamanan yang terdapat pada bagian belakang kartu (3 atau 4 digit)
    Note: Dibutuhkan pada transaksi metode 2.5 dan 3 party
    card_holder_name
    optional
    string Nama lengkap dari pemilik kartu
    token_id
    optional
    string ID Token yang digunakan untuk melakukan Charge.
    Hanya dibutuhkan jika prosesor yang digunakan membutuhkan proses tokenisasi, dan Anda memiliki token ID yang didapatkan dari proses tokenisasi sebelumnya.
    should_authenticate
    optional
    boolean Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak. Jika tidak diinput, maka akan menyesuaikan dengan pengaturan 3DS merchant pada sistem Xendit. Nilai yang diterima:
    • true: 3DS akan diinisiasi
    • false: 3DS akan dilewati
    given_names
    optional
    string Nama pertama pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    surname
    optional
    string Nama belakang pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    email
    optional
    string Alamat email pelanggan atau pemilik kartu yang terasosiasi dengan kartu
    mobile_number
    optional
    string Nomor telepon genggam pelanggan atau pemilik kartu dalam format E.164
    phone_number
    optional
    string Nomor telepon lain pelanggan atau pemilik kartu dalam format E.164 (dapat berupa nomor telepon rumah atau kantor)
    country
    required
    string 2-huruf ISO 3166-2 kode negara untuk menunjukkan negara pemilik kartu
    street_line1
    optional
    string Nama bangunan dan nomor unit apartemen / rumah
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    street_line2
    optional
    string Alamat lengkap bangunan
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    city
    optional
    string Kabupaten/Kota pemilik kartu
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    province_state
    optional
    string Provinsi, state, atau region pemilik kartu. Jika pemilik kartu merupakan penduduk Amerika, pastikan nilai yang dimasukkan adalah kode negara bagian (contoh gunakan CA untuk California)
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    postal_code
    optional
    string Kode ZIP atau Kode Pos bila tersedia
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    descriptor
    optional
    string Penanda spesifik yang menjelaskan identitas merchant. Niali ini akan tercantum pada tagihan pemilik kartu.
    Jumlah karakter minimum: 1 karakter
    Jumlah karakter maksimum: 255 karakter
    use_reward
    optional
    boolean Penanda bahwa transaksi pembayaran akan menggunakan rewards yang tersedia dari bank penerbit kartu. Hanya dapat disertakan pada permintaan jika Anda mendapatkan parameter rewards pada respond dari Get Charge Option. Nilai yang diterima:
    ‘true’: semua rewards yang tersedia akan digunakan untuk pembayaran
    ‘false’: reward tidak akan digunakan untuk pembayaran
    installment_count
    optional
    number Parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah 3.
    installment_interval
    optional
    string Parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah month.
    installment_code
    optional
    string Digunakan untuk mengidentifikasi tipe cicilan dan fitur yang berkaitan dengan cicilan tersebut seperti bunga dan tagian.
    Parameter ini mandatori untuk disertakan pada permintaan jika Xendit mengembalikan parameter installment_code pada respons Get Charge Option untuk kartu pelanggan akhir.
    promotion_reference_id
    optional
    string Kode unik yang digunakan untuk ID referensi pada API Pembuatan Promo.
    promotion_original_amount
    optional
    string Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    mid_label
    optional
    string Karakter spesifik yang digunakan untuk memberi tanda pada Merchant ID (MID) yang sudah di daftarkan di akun Xendit dan akan digunakan untuk bertransaksi. Parameter tersebut dan dikonfigurasi pada daftar MID yang terdapat di pengaturan dashbor Anda. (Jika tidak ada input pada parameter ini dan jika Anda memiliki lebih dari 1 MID, maka transaksi akan menggunakan MID yang tertera paling atas / prioritas pertama pada pengaturan dasbor Anda.
    Note:
    Hanya dapat digunakan untuk pelanggan dengan mode switcher

    Response Parameters

    Parameter Type Description
    id
    required
    string ID unik dari charge di sistem Xendit.
    created
    required
    string Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge.
    reference_id
    required
    string Pengindentifikasi unik sesuai dengan pilihan Anda.
    business_id
    required
    string ID akun bisnis Xendit Anda.
    card_brand
    required
    string Skema kartu (VISA, MASTERCARD, JCB, AMEX, GPN)
    card_type
    required
    string Tipe kartu (CREDIT atau DEBIT)
    masked_card_number
    required
    number Enam angka pertama dan Empat angka terakhir pada kartu kredit. 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_ERROR
    400
    Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
    INVALID_JSON_FORMAT
    400
    Isi dari request bukan format JSON yang benar.
    INVALID_API_KEY
    400
    Mohon gunakan Public API key untuk transaksi ini.
    SIGNATURE_VALIDATION_ERROR
    400
    Signature yang digunakan tidak valid. Mohon lakukan permintaan dengan signature yang valid.

    Capture Charge

    Definisi: Capture Charge

    POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/capture

    Contoh Permintaan Capture Charge

    const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Card } = x;
    const cardSpecificOptions = {};
    const card = new Card(cardSpecificOptions);
    
    const resp = await card.captureCharge({
      chargeID: id,
      amount: 10000,
    });
    console.log(resp)
    curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/capture \
        -X POST \
        -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
        -d amount=15000
    <?php
    
      use Xendit\Xendit;
      require 'vendor/autoload.php';
    
      Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
    
      $id = '598942c4bb91a4ec309e9a37';
      $params = ['amount' => 10000];
    
      $captureCharge = \Xendit\Cards::capture($id, $params);
      var_dump($captureCharge);
    
    ?>
    Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
    try {
      CreditCardCharge creditCardCharge = CreditCard.captureCharge(
        "12345678", //chargeId
        10000 //amount
      );
    } catch (XenditException e) {
      e.printStackTrace();
    }
    captureChargeData := card.CaptureChargeParams{
        ChargeID: "598942c4bb91a4ec309e9a37",
        Amount:   9900,
    }
    
    chargeResp, err := card.CaptureCharge(&captureChargeData)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Printf("captured charge: %+v\n", chargeResp)
    from xendit import Xendit
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    CreditCard = xendit_instance.CreditCard
    
    charge = CreditCard.capture_charge(
        credit_card_charge_id="5f0422aa2bbbe50019a368c2",
        amount=75000,
    )
    print(charge)

    Contoh Respon Capture Charge

    {
      "created": "2020-01-08T04:49:08.815Z",
      "status": "CAPTURED",
      "business_id": "5848fdf860053555135587e7",
      "authorized_amount": 10000,
      "external_id": "test-pre-auth",
      "merchant_id": "xendit",
      "merchant_reference_code": "598942aabb91a4ec309e9a35",
      "card_type": "CREDIT",
      "masked_card_number": "400000XXXXXX0002",
      "charge_type": "SINGLE_USE_TOKEN",
      "card_brand": "VISA",
      "bank_reconciliation_id": "5132390610356134503009",
      "capture_amount": 9900,
      "id": "598942c4bb91a4ec309e9a37"
    }

    Capture pada charge hanya perlu dilakukan apabila Anda melakukan pra-otentikasi dengan menentukan parameter capture dengan nilai false pada request Pembuatan Charge. Anda dapat melakukan capture dengan nominal yang berbeda dengan nominal yang terotorisasi selama nominal tersebut tidak melampaui nominal yang terotorisasi. Respon dari endpoint sama dengan respon charge

    Parameter Request (Money-in write permission)

    Parameter Header Tipe Deskripsi
    for-user-id
    optional
    string User-id dari sub-akun yang ingin Anda buatlan tokennya.

    Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

    Parameter Query Tipe Deskripsi
    credit_card_charge_id
    required
    string ID charge.
    Parameter Body Tipe Deskripsi
    amount
    required
    string Nominal yang akan di-captured. Tidak dapat melampaui nominal yang terotorisasi.

    Kode Error

    Kode Error Deskripsi
    API_VALIDATION_ERROR
    400
    Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
    INVALID_JSON_FORMAT
    400
    Isi dari request bukan format JSON yang benar.
    AMOUNT_GREATER_THAN_AUTHORIZED_ERROR
    400
    Nominal capture melebihi nominal yang terotorisasi.
    INVALID_CHARGE_STATUS_ERROR
    400
    Status charge tidak terotorisasi
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
    404
    credit_card_charge_id tidak ditemukan
    AUTHORIZATION_EXPIRED
    400
    Otorisasi sudah dikembalikan (dapat berarti juga bahwa uang sudah kembali ke pemilik kartu) atau sudah kedaluwarsa. Mohon untuk membuat auhorization atau charge baru.

    Pembuatan Refund

    Definisi: Pembuatan Refund

    POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/refunds

    Contoh Permintaan Pembuatan Refund

    curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/refunds \
        -X POST \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
        -H "X-IDEMPOTENCY-KEY: unique-id-12345" \
        -d amount=15000
        -d external_id=unique-external-id
    <?php
    
      use Xendit\Xendit;
      require 'vendor/autoload.php';
    
      Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
    
      $params = [
          'external_id' => 'postman-charge-1502436793',
          'amount' => 15000,
          'X-IDEMPOTENCY-KEY' => 'unique-id'
      ];
    
      $refund = \Xendit\Cards::createRefund($id, $params);
      var_dump($refund);
    
    ?>
    const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Card } = x;
    const cardSpecificOptions = {};
    const card = new Card(cardSpecificOptions);
    
    const resp = await card.createRefund({
      chargeID: '5877255293ff67900c6aa64e',
      amount: 15000,
      externalID: 'unique-external-id',
    });
    console.log(resp);
    Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
    try {
      CreditCardRefund creditCardRefund = CreditCard.createRefund(
        "1234567", //id
        50000, //amount
        "external_id" //externalId
      );
    } catch (XenditException e) {
      e.printStackTrace();
    }
    xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    
    createRefundData := card.CreateRefundParams{
      IdempotencyKey: "unique-idempotency-key",
      ChargeID:       "58f984f09d1b74bc08506c34",
      Amount:         15000,
      ExternalID:     "unique-external-id",
    }
    
    refundResp, err := card.CreateRefund(&createRefundData)
    if err != nil {
      log.Fatal(err)
    }
    
    fmt.Printf("refunded charge: %+v\n", refundResp)
    from xendit import Xendit
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    CreditCard = xendit_instance.CreditCard
    
    refund = CreditCard.create_refund(
        credit_card_charge_id="5f0422aa2bbbe50019a368c2",
        amount=10000,
        external_id="card_refund-1594106755",
    )
    print(refund)

    Contoh Respon Pembuatan Refund

    {
      "updated": "2020-01-21T04:05:09.755Z",
      "created": "2020-01-21T04:05:04.936Z",
      "credit_card_charge_id": "58f89041780d51ed097896c5",
      "user_id": "57c5aa7a36e3b6a709b6e148",
      "amount": 15000,
      "external_id": "unique-external-id",
      "status": "REQUESTED",
      "fee_refund_amount": 150,
      "id": "58f984f09d1b74bc08506c34"
    }

    API refund menerima dua parameter, amount dan external_id. ID charge yang dikembalikan setelah charge yang berhasil harus digunakan pada request URL per definisi. Beberapa refund dapat dibuat selama total nominal uang yang akan refund tidak melebihi dari total nominal charge. Beberapa refund parsial dapat dilakukan selama nilai dari dari total jumlah refund tidak lebih besar dari jumlah nilai transaksi.

    Catatan: Idempotensi dapat dicapai dengan mengirimkan header dengan kunci X-IDEMPOTENCY-KEY.

    Parameter Request (Money-in write permission)

    Parameter Header Tipe Deskripsi
    X-IDEMPOTENCY-KEY
    optional
    string Sebuah kunci unik yang digunakan untuk menghindari duplikasi pemrosesan suatu request. Wajib unik untuk lingkungan development maupun production
    x-api-version
    mandatory
    string Nilai dari parameter ini harus “2019-05-01”
    for-user-id
    optional
    string User-id dari sub-akun yang ingin Anda buatlan tokennya.

    Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

    Parameter Body Tipe Deskripsi
    amount
    required
    string Nominal uang yang akan di-refund.
    external_id
    required
    string Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter.

    Parameter Respon

    Parameter Tipe Deskripsi
    updated
    required
    string Cap waktu ISO yang mencatat kapan terakhir refund tersebut mendapatkan pengkinian.
    created
    required
    string Cap waktu ISO yang mencatat kapan refund tersebut dibuat
    Timezone: GMT+0
    .
    credit_card_charge_id
    required
    string ID charge yang digunakan untuk mengidentifikasi charge yang akan digunakan.
    user_id
    required
    string ID bisnis akun Xendit Anda.
    amount
    required
    number Nominal uang yang akan di-refund.
    external_id
    required
    string Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter.
    status
    required
    string Status dari refund tersebut. Lihat Status-status Refund
    failure_reason
    required
    string Keterangan yang diberikan apabila permintaan refund gagal. lihat Alasan Refund Gagal.
    fee_refund_amount
    required
    number Nilai nominal dari biaya transaksi yang dikembalikan (nilai ini diproporsikan sesuai dengan jumlah nilai refund yang diminta).
    id
    required
    string ID unik yang digunakan sebagai referensi dari permintaan refund.

    Status status Refund

    Status Deskripsi
    REQUESTED Permintaan refund berhasil.
    FAILED Permintaan refund gagal.

    Kode Error

    Kode Error Deskripsi
    API_VALIDATION_ERROR
    400
    Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
    INVALID_JSON_FORMAT
    400
    Isi dari request bukan format JSON yang benar.
    REFUND_AMOUNT_EXCEEDED_ERROR
    400
    Nominal refund melebihi total charge
    DUPLICATE_REFUND_ERROR
    400
    external_id sudah pernah digunakan
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak memiliki izin untuk mengakses endpoint ini. Silahkan menambahkan izin ke API key tersebut. Pelajari lebih lanjut caranya disini.
    CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
    404
    credit_card_charge_id tidak ditemukan

    Alasan Refund Gagal

    Alasan Gagal Deskripsi
    INSUFFICIENT_BALANCE Saldo pada akun Xendit Anda tidak cukup untuk melakukan refund (saldo tersebut digunakan untuk mengembalikan biaya transaksi)
    REFUND_FAILED Permintaan refund telah ditolak oleh bank. Mohon dicoba kembali atau hubungi kami di help@xendit.co
    REFUND_PERIOD_EXPIRED Masa berlaku refund telah kadaluarsa. Anda dapat melakukan refund kepada merchant dengan menggunakan disbursement.

    Mendapatkan Charge

    Definisi: Mendapatkan Charge

    GET https://api.xendit.co/credit_card_charges/:credit_card_id?id_type=charge

    Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan External ID

    curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e?id_type=external \
        -X GET \
        -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:

    Contoh Melakukan Permintaan Mendapatkan Charge Request Menggunakan Charge ID (Default)

    curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e \
        -X GET \
        -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
    <?php
    
      use Xendit\Xendit;
      require 'vendor/autoload.php';
    
      Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
    
      $id = '598942c4bb91a4ec309e9a37';
      $getCharge = \Xendit\Cards::retrieve($id);
      var_dump($getCharge);
    
    ?>
    const x = new require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Card } = x;
    const cardSpecificOptions = {};
    const card = new Card(cardSpecificOptions);
    
    const resp = await card.getCharge({ chargeID: '5877255293ff67900c6aa64e' });
    console.log(resp);
    Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
    try {
      CreditCardCharge creditCardCharge = CreditCard.getCharge("5877255293ff67900c6aa64e");
    } catch (XenditException e) {
      e.printStackTrace();
    }
    xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    
    getChargeData := card.GetChargeParams{
      ChargeID: "598942c4bb91a4ec309e9a37",
    }
    
    chargeResp, err := card.GetCharge(&getChargeData)
    if err != nil {
      log.Fatal(err)
    }
    
    fmt.Printf("retrieved charge: %+v\n", chargeResp)
    from xendit import Xendit
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    CreditCard = xendit_instance.CreditCard
    
    charge = CreditCard.get_charge(
        credit_card_charge_id="5f0422aa2bbbe50019a368c2",
    )
    print(charge)

    Contoh Respon Charge Response

    {
      "created": "2020-08-08T04:49:08.815Z",
      "status": "CAPTURED",
      "business_id": "5848fdf860053555135587e7",
      "authorized_amount": 10000,
      "external_id": "test-pre-auth",
      "merchant_id": "xendit",
      "merchant_reference_code": "598942aabb91a4ec309e9a35",
      "card_type": "CREDIT",
      "masked_card_number": "400000XXXXXX0002",
      "charge_type": "SINGLE_USE_TOKEN",
      "card_brand": "VISA",
      "bank_reconciliation_id": "5132390610356134503009",
      "capture_amount": 9900,
      "id": "598942c4bb91a4ec309e9a37"
    }

    Ini adalah endpoint untuk mengambil suatu objek charge. Anda perlu menentukan nilai dari charge_id. Respon dari endpoint sama dengan respon pembuatan charge

    Parameter Request (Money-in read permission)

    Parameter Header Tipe Deskripsi
    for-user-id
    optional
    string User-id dari sub-akun yang ingin Anda buatlan tokennya.

    Parameter header ini hanya dapat digunakan apabila anda memiliki akses terhadap fitur xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut

    Parameter Query Tipe Deskripsi
    credit_card_id
    required
    string Dapat diinput dengan nilai diantara id charge dari transaksi yang sudah di otorisasi atau capture ATAU menggunakan external_id dari transaksi yang diinput oleh pengguna pada saat pembuatan charge.
    id_type
    optional
    string Dijelaskan di [Tipe ID] (tipe-id). Jika tidak diinput, nilai akan diisi dengan charge.

    Tipe ID

    Type Description
    charge Pencarian transaksi charge akan menggunakan ID charge yang diberikan oleh Xendit dimana data tersebut tertera pada respon transaksi charge atau otorisasi
    external Pencarian transaksi charge akan menggunakan external ID yang diinput oleh pengguna pada saat pengguna melakukan permintaan pembuatan charge atau otorisasi

    Kode Error

    Kode Error Deskripsi
    API_VALIDATION_ERROR
    400
    Masukan mengalami kesalahan pada proses validasi. Parameter kesalahan mengandung detil tentang kesalahan yang menyalahi validasi.
    CREDIT_CARD_CHARGE_NOT_FOUND_ERROR
    404
    credit_card_charge_id tidak ditemukan

    Permintaan Opsi Charge

    Saat menerima transaksi kartu kredit untuk pelanggan Anda, Anda pasti mengharapkan untuk dapat memberikan tambahan pilihan metode pembayaran. Hal ini meliputi:

    Opsi tersebut harus dipilih oleh pengguna sebelum melakukan permintaan Charge. Contohnya apabila Anda ingin mengecek apakah kartu yang ingin digunakan memiliki promo dan diskon, maka sebelum Anda melakukan permintaan untuk pembayaran dengan kartu kredit, Anda dapat mengecek terlebih dahulu apakah terdapat opsi cicilan atau tidak, dan Anda dapat menampilkan opsi tersebut kepada pengguna, untuk kemudian dipilih oleh pengguna.

    API Permintaan Opsi Charge kami dapat membantu Anda dalam hal tersebut. Anda dapat mengirimkan permintaan ke endpoint kami edngan mengirimkan info yang sudah dimasukkan oleh pengguna (seperti BIN (Nomor Identifikasi Kartu), kode promo), kemudian Xendit akan melakukan pengecekan apakah terdapat opsi charge untuk permintaan tersebut. Respon yang diberikan akan berisi tentang opsi opsi yang tersedia untuk parameter yang dimasukkan. Anda dapat memilih opsi tersebut dan melakukan transaksi charge dengan rincian yang sudah diberikan pada respon.

    Definisi: Permintaan Opsi Charge

    GET https://api.xendit.co/credit_card_charges/option

    Contoh Permintaan Opsi Charge

    curl -X GET \
      https://api.xendit.co/credit_card_charges/option
      -u xnd_public_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \
      -d {
          "bin": "552002",
          "amount": 1000000,
          "currency": "IDR”
        }

    Contoh Respon dari Permintaan Opsi Charge

    {
        "business_id": "5ea2a0cdb62b6a00108ed248",
        "bin": "552002",
        "promotions":[{
            "reference_id": "some_promo_1",
            "discount_percent": "25",
            "original_amount": 1000000,
            "final_amount": 750000,
            "currency": "IDR"
        }],
        "installments" : [{
            "count": 3,
            "interval": "month",
            "acquirer": "BRI",
            "currency": "IDR",
            "minimum_amount": 500000
        },{
            "count": 6,
            "interval": "month",
            "acquirer": "BRI",
            "currency": "IDR",
            "minimum_amount": 500000
        },{
            "count": 12,
            "interval": "month",
            "acquirer": "BRI",
            "currency": "IDR",
            "minimum_amount": 500000
        }]
    }

    Permintaan Untuk Mendapatkan Opsi Charge

    Parameter Deskripsi
    amount
    required
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    bin
    optional
    array of strings BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif.
    currency
    default: IDR
    string Mata uang yang akan digunakan untuk pembayaran.
    promo_code
    optional
    string Kode promo yang dapat digunakan oleh pengguna untuk mengaktifkan promo. Masukkan nilai pada parameter ini apabila user ingin pelanggan menggunakan kode promo untuk mengaktifkan promo.
    Karaktera-z, A-Z, 0-9; simbol yang diterima - _ \
    token_id
    required
    string ID token dari kartu, didapatkan saat melakukan proses tokenisasi dengan xendit. Kami akan mencari nilai BIN dari token ID yang dimasukkan.
    card_cvn
    optional
    number 3 atau 4 angka kode CVN (CVC). Tidak wajib diisi namun kami sangat merekomendasikan untuk mengisi nilai tersebut. Direkomendasikan untuk menyertakan parameter ini jika menggunakan token_id pada permintaan.

    Respon Permintaan Opsi Charge

    Parameter Deskripsi
    business_id
    required
    stringID dari bisnis Anda yang terdapat di dalam sistem Xendit.
    bin
    required
    stringBIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif.
    promotions
    optional
    array Array berisikan detil dari daftar promo yang tersedia
    rincian parameter promosi
    reference_id
    optional
    string Referensi unik yang diberikan untuk promo yang Anda buat.
    Charactersa-z, A-Z, 0-9; accepted symbols - _ \
    original_amount
    required
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    discount_amount
    optional
    number Nominal dari jumlah potongan yang akan diberikan pada objek promo (menerima desimal).
    MaximumNone
    Minimum0
    discount_percent
    optional
    number Nominal dari persentase jumlah potongan yang akan diberikan pada objek promo (menerima desimal).
    Maximum100
    Minimum0
    final_amount
    required
    number Nominal final setelah potongan harga diberikan berdasarkan promo yang digunakan. User harus menggunakan nominal ini untuk melakukan transaksi charge.
    currency
    required
    string Mata uang yang akan digunakan untuk pembayaran.
    min_original_amount
    optional
    number Nilai minimum transaksi agar promo dapat digunakan.
    max_discount_amount
    optional
    number Nilai maksimum dari diskon yang dapat digunakan pada promo.
    installments
    optional
    object Menjelaskan tentang opsi cicilan yang tersedia.
    parameter tambahan untuk cicilan
    count
    required
    numberBersamaan dengan parameter interval, parameter ini mendefinisikan tenor dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan tenor 3 bulan, maka nilai yang dimasukkan adalah 3.
    interval
    required
    string Bersamaan dengan parameter count, parameter ini mendefinisikan periode dari cicilan yang akan digunakan untuk pembayaran. Jika Anda menginginkan cicilan dengan periode bulanan, maka nilai yang dimasukkan adalah month. Untuk saat ini Xendit hanya menyediakan cicilan dengan periode interval bulanan.
    acquirer
    required
    string Bank yang akan memproses transaksi dan berkorelasi dengan kartu penerbit untuk menyediakan jasa cicilan.
    currency
    required
    string Mata uang yang akan digunakan untuk pembayaran.
    minimum_amount
    required
    number Jumlah minimum yang dibutuhkan untuk melakukan transaksi cicilan. Permintaan charge di bawah nilai ini tidak dapat menggunakan opsi cicilan.

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

    Pembuatan Promo

    Cara terbaik untuk menarik pelanggan adalah dengan menawarkan potongan harga berdasarkan tipe kartu kredit yang mereka gunakan. Bank penerbit kartu kredit sering kali bekerja sama dengan badan usaha untuk menyediakan potongan harga kepada pemegang kartu jika mereka memilih untuk melakukan pembayaran menggunakan kartu kredit. Hal terpenting dari fitur yang terdapat dalam alur pembayaran adalah kemampuan untuk melakukan pengecekan terhadap nomor kartu, apakah kartu tersebut diterbitkan oleh bank yang spesifik.

    Xendit memberikan layanan promo API untuk membantu tipe promosi tersebut di atas. Fitur tersebut mengizinkan pengguna untuk membuat promo dan memilih rentang dari Bank Identification Numbers (BINs; merupakan 6 angka digit pertama dari kartu kredit), untuk mendapatkan promo yang ingin digunakan. Saat melakan proses pembayaran kartu kredit, pengguna dapat mengirimkan permintaan GET kalkulasi promo. Jika terdapat promo yang sesuai dengan jenis kartu yang digunakan, maka Xendit akan secara otomatis menerapkan potongan harga dan memberikan response terkait dengan informasi potongan harga tersebut, sehingga pengguna dapat melanjutkan proses pembayaran dengan nominal yang sudah dipotong.

    Definisi: Pembuatan Promo

    POST https://api.xendit.co/promotions

    Contoh Membuat Permintaan Pembuatan Promo

    curl -X POST \
      https://api.xendit.co/promotions
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \
      -d {
          "reference_id": "BRI_20_JAN",
          "description": "20% discount applied for all BRI cards",
          "bin_list": [
              "400000",
              "460000"
          ],
          "discount_percent": 20,
          "channel_code": "BRI",
          "currency": "IDR",
          "min_original_amount": 25000,
          "max_discount_amount": 5000
        }
    from xendit import Xendit
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    CreditCard = xendit_instance.CreditCard
    
    promotion = CreditCard.create_promotion(
        reference_id="BRI_20_JAN-1594176600",
        description="20% discount applied for all BRI cards",
        discount_amount=10000,
        bin_list=['400000', '460000'],
        start_time="2020-01-01T00:00:00.000Z",
        end_time="2021-01-01T00:00:00.000Z",
        min_original_amount=25000,
        max_discount_amount=5000
    )
    print(promotion)

    Contoh Response Permintaan Pembuatan Promo

    {
        "id": "36ab1517-208a-4f22-b155-96fb101cb378",
        "business_id": "5e61664b3dba955c203d232e",
        "reference_id": "BRI_20_JAN",
        "description": "20% discount applied for all BRI cards",
        "start_time": "2020-01-01 00:00:00.000Z",
        "end_time": "2020-01-01 00:00:00.000Z",
        "status": "ACTIVE",
        "bin_list": [
          "400000",
          "460000"
        ],
        "discount_percent": 20,
        "channel_code": "BRI",
        "currency": "IDR",
        "min_original_amount": 25000,
        "max_discount_amount": 5000
    }

    Permintaan Pembuatan Promo

    Parameter Tipe Deskripsi
    reference_id
    required
    string Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo.
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    description
    required
    text Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan.
    promo_code
    optional
    string Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo.
    Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code, jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    bin_list
    optional
    array of strings Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo.
    Contoh: ["400000", "460000"]
    channel_code
    optional
    string Kode bank yang diperbolehkan untuk fitur promosi.
    Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo.
    Contoh: "BCA"
    discount_percent
    optional
    number Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga.
    User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
    KarakterAngka (includes decimals)
    Maksimum 100
    Minimum0
    discount_amount
    optional
    number Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga.
    User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
    KarakterAngka (includes decimals)
    Maksimum tidak ada
    Minimum0
    currency
    default: IDR
    string Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang.
    Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS, maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia.
    start_time
    required
    ISO Semua promo yang dibuat akan langsung berlaku pada saat itu juga.
    User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    end_time
    required
    ISO Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    min_original_amount
    optional
    number Nilai minimum transaksi agar dapat menggunakan promo.
    max_discount_amount
    optional
    number Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi.

    Response Pembuatan Promo

    Objek Promo

    Parameter Tipe Deskripsi
    id string Deretan karakter alfanumerik unik yang merupakan identitas dari promo yang sudah dibuat (dibuat oleh Xendit).
    business_id string Deretan karakter alfanumerik unik yang merupakan identitas dari akun Anda dalam sistem Xendit, digunakan untuk mengidentifikasi akun Anda.
    status string Status dari suatu objek promo. Lihat Status Promo
    reference_id string Karakter alfanumerik unik yang digunakan sebagai referensi dari promo yang dibuat oleh user, dapat berupa ID atau nama promo. simbol yang diterima semua karakter spesial dapat digunakan.
    description string Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan.
    promo_code
    optional
    string Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo.
    Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah obejk promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code, jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    bin_list array of strings Daftar dari BIN yang diperbolehkan untuk melakukan transaksi menggunakan promo.
    Saat memilih spesifik bank, semua BIN yang terasosiasi dengan sistem promosi yang terdaftar di Xendit akan dapat menggunakan promo tersebut. Kode bank harus sesuai dengan daftar yang tertera di sini.
    channel_code string Kode bank yang diperbolehkan untuk melakukan transaksi menggunakan promo. Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo.
    discount_percent number Persentase dari jumlah potongan yang akan diberikan pada objek promo.

    Saat objek promo telah dibuat menggunakan discount_percent, parameter ini akan ditampilan pada response.
    KarakterAngka (termasuk desimal)
    Maksimum100
    Minimum0
    discount_amount number Nominal dari jumlah potongan yang akan diberikan pada objek promo.

    Saat objek promo telah dibuat menggunakan discount_amount, parameter ini akan ditampilan pada response.
    KarakterAngka (termasuk desimal)
    Maksimumtidak ada
    Minimum0
    currency
    default: IDR
    string Mata uang yang akan digunakan untuk pembayaran.
    Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS, maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia.
    start_time ISO Semua promo yang dibuat akan langsung berlaku pada saat itu juga.
    User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    end_time ISO Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    min_original_amount number Nilai minimum transaksi agar dapat menggunakan promo.
    max_discount_amount number Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi.

    Status Promo

    Status Description
    ACTIVE Promo aktif dan dapat digunakan
    INACTIVE Promo tidak aktif karena belum melewati start_time
    EXPIRED Promo sudah kedaluarsa karena melewati batas end_time
    PAUSED Promo diberhentikan sementara atas permintaan dari pengguna

    Kesalahan Pembuatan Promo

    Kode Error Deskripsi
    API_VALIDATION_ERROR
    400
    Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error.
    INVALID_JSON_FORMAT
    400
    Permintaan tidak memenuhi standar format JSON.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki izin untuk melakukan permintaan. Mohon dapat menggunakan izin yang tepat pada API key atau gunakan API key yang berbeda.
    REFERENCE_IN_USE
    409
    Referensi sudah digunakan pada promo lain. Mohon gunakan nama atau referensi yang lain.
    PROMO_CODE_IN_USE
    409
    Kode promo sudah terdaftar pada promo yang tersedia. Mohon gunakan kode promo yang lain

    Mendapatkan Promo

    API ini dapat digunakan untuk mendapatkan rincian dari promo yang telah dibuat. Hal ini sangat berguna untuk mendapatkan daftar dari promo yang tersedia. Jika parameter yang dimasukkan memberikan kecocokan di lebih dari satu promo, hasil yang akan diberikan pada response akan berbentuk array.

    Definisi: Mendapatkan Promo

    GET https://api.xendit.co/promotions?reference_id={reference_id}

    Contoh Permintaan Untuk Mendapatkan Promo

    curl -X GET \
      https://api.xendit.co/promotions?reference_id=BRI_20_JAN
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \

    Contoh Respon Permintaan Untuk Mendapatkan Promo

    {
        "id": "36ab1517-208a-4f22-b155-96fb101cb378",
        "business_id": "5e61664b3dba955c203d232e",
        "reference_id": "BRI_20_JAN",
        "description": "20% discount applied for all BRI cards",
        "start_time": "2020-01-01 00:00:00.000Z",
        "end_time": "2020-01-01 00:00:00.000Z",
        "status": "ACTIVE",
        "bin_list": [
            "400000",
            "460000"
        ],
        "discount_percent": 20,
        "channel_code": "BRI",
        "currency": "IDR",
        "min_original_amount": 25000,
        "max_discount_amount": 5000
    }

    Parameter Yang dapat Digunakan

    Parameter Tipe Deskripsi
    reference_id
    optional
    string Masukkan karakter spesifik reference_id dari satu objek promo yang telah dibuat.
    status
    required
    enum Status dari Promo yang telah dibuat.
    ACTIVE or INACTIVE.
    bin
    optional
    string BIN spesifik dari kartu.

    Contoh: 460000
    channel_code
    optional
    string Kode bank yang diperbolehkan untuk menggunakan Promo.
    currency
    optional
    default: IDR
    string Mata uang yang digunakan untuk pembayaran.
    Sementara ini hanya menerima IDR.

    Respon Permintaan Mendapatkan Promo

    Rincian dari promo yang tersedia dikembalikan dalam bentuk array dalam format Objek Promo., tergantung pada input yang dimasukkan oleh user saat melakukan permintaan untuk mendapatkan promo. Contohnya, jika user memasukkan nilai pada parameter bin_list yaitu [ "400000" ], maka response yang diberikan akan berupa array dari promo yang tersedia, yang berkaitan dengan BIN tersebut

    Jika tidak ada promo yang tersedia dan cocok dengan permintaan user, response akan berupa array kosong.

    Mendapatkan Perhitungan Promo

    API ini dapat digunakan untuk menghitung berapa jumlah potongan harga yang akan diberikan pada nominal transaksi yang akan dilakukan (di-charge). API ini menerima BIN atau promo_code, dan juga nominal original dari transaksi. Jika ditemukan kecocokan pada BIN atau promo_code terhadap promo yang sudah dibuat, Xendit akan menerapkan potongan harga pada nominal asli dan mengembalikan nominal yang sudah dipotong pada response. Fitur ini hanya melakukan perhitungan pada promo yang memiliki status ACTIVE.

    Kami telah membangun halaman untuk Anda melakukan test dengan mengirimkan request Get Promotion Calculations sebelum Anda integrasi. Anda bisa mencoba nya disini. Anda memerlukan kunci / key API Publik Anda, yang dapat Anda dapatkan dengan melakukan registrasi di Dashboard kami dan menuju ke halaman Settings.

    Definisi: Mendapatkan Perhitungan Promo

    GET https://api.xendit.co/promotions/calculate?amount={amount}&bin={bin}

    Contoh Permintaan Perhitungan Promo Menggunakan 6 Digit Pertama Kartu Kredit (BIN)

    curl -X GET \
      https://api.xendit.co/promotions/calculate?amount=1000000&bin=460000
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \

    Contoh Permintaan Perhitungan Promo Menggunakan Token ID

    curl -X GET \
      https://api.xendit.co/promotions/calculate?amount=1000000&token_id=598d5d0e51e0870d44c61534
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \

    Contoh Respon dari Permintaan Penghitungan Promo

      {
            "original_amount": 1000000,
            "discount_percent": 20,
            "reference_id": "BRI_20_JAN",
            "final_amount": 800000,
            "currency": "IDR",
          "description": "20% discount applied for all BRI cards",
          "min_original_amount": 500000,
          "max_discount_amount": 100000
      }
    }

    Permintaan Mendapatkan Perhitungan Promo

    Parameter Tipe Deskripsi
    amount
    required
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    bin
    optional
    string BIN yang diinput oleh pemegang kartu, dimana BIN ini kemudian digunakan untuk mengecek apakah BIN berasosiasi dengan Promo yang tersedia dan masih dalam status aktif.
    promo_code
    optional
    string Karakter promo_code yang dimasukkan oleh pemegang kartu, dimana nilai dari parameter ini kemudian digunakan untuk mengecek apakah promo_code tersebut berasosiasi dengan Promo yang tersedia dan masih dalam status aktif.
    currency
    optional
    default: IDR
    string Mata uang yang digunakan untuk pembayaran.
    Sementara ini hanya menerima IDR.
    token_id
    optional
    string Id token dari kartu, yang didapatkan dari proses tokenisasi pada sistem Xendit. Kami akan mengasosiasikan token ID tersebut dengan enam digit pertama kartu kredit.

    Response Perhitungan Promo

    Parameter Tipe Deskripsi
    reference_id
    optional
    string Referensi unik yang diberikan untuk promo yang Anda buat.
    original_amount
    required
    number Nominal original dari transaksi (Sebelum diberlakukan pemotongan).
    discount_percent
    optional
    number Persentase dari potongan harga yang akan diberikan pada promo.
    Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent.
    discount_amount
    optional
    number Nominal dari potongan harga yang akan diberikan pada promo.

    Dikembalikan pada response apabila promo dibuat mengguakan parameter discount_percent.
    final_amount
    required
    number Nominal final setelah potongan harga diberikan berdasarkan promo yang digunakan. User harus menggunakan nominal ini untuk melakukan transaksi charge.
    description string Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan.

    Diberikan pada response saat mengirimkan permintaan pada Get Promotion.
    min_original_amount
    optional
    number Nilai minimum transaksi agar promo dapat digunakan.
    max_discount_amount
    optional
    number Nilai maksimum dari diskon yang dapat digunakan pada promo.

    Pembaruan Promo

    Anda dapat menggunakan fitur ini untuk melakukan pembaruan pada promosi yang telah dibuat sebelumnya.

    Definisi: Pembaruan Promo

    PATCH https://api.xendit.co/promotions/:promotion_id

    Contoh Permintaan Pembaruan Promotion

    curl -X GET \
      https://api.xendit.co/promotions/36ab1517-208a-4f22-b155-96fb101cb378
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
      -H 'content-type: application/json' \
     -d {
            "description": "20% discount applied for all BCA cards",
            "bin_list": [
              "411455",
              "422566"
            ],
            "discount_percent": 20,
            "channel_code": "BCA",
            "currency": "IDR"
        }

    Contoh Respon Pembaruan Promotion

    {
        "id": "36ab1517-208a-4f22-b155-96fb101cb378",
        "business_id": "5e61664b3dba955c203d232e",
        "reference_id": "BCA_20",
        "description": "20% discount applied for all BRI cards",
        "start_time": "2020-01-01 00:00:00.000Z",
        "end_time": "2020-01-01 00:00:00.000Z",
        "transaction_limit": 0,
        "is_deleted": false,
        "status": "ACTIVE",
        "bin_list": [
            "411455",
            "422566"
        ],
        "discount_percent": 20,
        "channel_code": "BCA",
        "currency": "IDR",
        "min_original_amount": 25000,
        "max_discount_amount": 5000
    }
    

    Parameter Permintaan Pembaruan Promo

    Tidak semua parameter dari Objek Promo dapat diperbaharui. Parameter yang dapat diperbaharui adalah sebagai berikut:

    Body Parameter Tipe Deskripsi
    description
    required
    text Deskripsi dari objek promo yang akan dibuat. User dapat mengekspos deskripsi ini pada tampilan antarmuka untuk memberikan informasi terkait dengan promo yang akan digunakan.
    promo_code
    optional
    string Promo code yang akan digunakan oleh pengguna untuk mengaktifkan promo.
    Masukkan parameter ini pada saat permintaan pembuatan promo supaya pengguna akhir dapat mengaktifkan promo menggunakan kode promo. Sebuah objek promosi dapat dibuat dengan menggunakan kombinasi antara promo_code dan bin_list atau channel_code, jika Anda ingin kode promo hanya dapat digunakan pada beberapa kartu tertentu .
    Karaktera-z, A-Z, 0-9; simbol yang diterima semua karakter spesial dapat digunakan.
    bin_list
    optional
    array of strings Daftar dari BIN yang dapat diperbolehkan untuk menggunakan promo.
    Contoh: ["400000", "460000"]
    channel_code
    optional
    string Kode bank yang diperbolehkan untuk fitur promosi.
    Jika memilih spesifik Bank untuk dapat melakukan promo, semua BIN yang terdeteksi oleh Xendit dan terdaftar pada Bank tersebut dapat menggunakan promo.Kode bank harus sesuai dengan kode yang tertera di sini.
    discount_percent
    optional
    number Persentase dari potongan harga yang akan diberikan pada promosi. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga.
    User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
    KarakterAngka (includes decimals)
    Maksimum 100
    Minimum0
    discount_amount
    optional
    number Nominal dari jumlah potongan yang akan diberikan pada objek promo. Contoh: jika user ingin mempunyai promo yang memberikan 20% potongan harga.
    User dapat memilih diantara discount_percent atau discount_amount dan harus diisikan pada parameter.
    KarakterAngka (includes decimals)
    Maksimum tidak ada
    Minimum0
    currency
    default: IDR
    string Mata uang yang akan digunakan untuk pembayaran. Mohon dapat mengacu pada tiga huruf standard ISO kode mata uang.
    Untuk bank yang memiliki cabang di lebih dari satu negara, promo hanya akan dapat digunakan pada kartu dengan mata uang yang tertera pada parameter ini. Contoh: jika mata uang adalah IDR dan channel_code adalah DBS, maka promo hanya akan dapat digunakan pada BIN yang diterbitkan oleh DBS Indonesia.
    start_time
    required
    ISO Semua promo yang dibuat akan langsung berlaku pada saat itu juga.
    User dapat menggunakan parameter ini apabila user menginginkan promo yang dibuat dapat digunakan pada waktu tertentu.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    end_time
    required
    ISO Waktu dimana promo akan berakhir dan tidak dapat digunakan kembali.
    Promo end_time (waktu akhir promo) harus dibuat pada tanggal sesudah tanggal promo start date(waktu awal promo).
    min_original_amount
    optional
    number Nilai minimum transaksi agar dapat menggunakan promo.
    max_discount_amount
    optional
    number Nilai maksimum promo diskon yang akan diberikan untuk suatu transaksi.

    Respon Pembaruan Promo

    Mengembalikan Objek Promo. Parameter yang Anda masukkan pada permintaan pembaruan promo akan tertera pada respon.

    Error Codes

    Error Code Description
    API_VALIDATION_ERROR
    400
    Input yang dimasukkan gagal dalam proses validasi. Penjelasan dijeslakan dalam rincian pesan Error.
    INVALID_JSON_FORMAT
    400
    Permintaan tidak memenuhi standar format JSON.
    PROMOTION_NOT_FOUND_ERROR
    404
    Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid
    PROMO_CODE_IN_USE
    400
    Kode promo ini telah digunakan pada promo sebelumnya atau sedang digunakan pada promo yang sedang berjalan. Mohon gunakan kode promo yang lain.
    INVALID_DISCOUNT_TYPE
    400
    Objek promo dengan id tersebut mempunya tipe diskon persen / diskon jumlah. Mohon sesuaikan dengan objek promo yang ada.
    INVALID_START_TIME_UPDATE
    400
    Objek promo dengan id promo tersebut memiliki masa berlaku waktu habis. Mohon sesuaikan dengan waktu promo dimulai.

    Menghapus Promo

    Gunakan fitur ini untuk menghapus promo yang telah dibuat.

    Definition: Menghapus Promo

    DELETE https://api.xendit.co/promotions/:promotion_id

    Contoh Permintaan Menghapus Promo

    curl -X DELETE \
      https://api.xendit.co/promotions/6055a96c-a870-4a2f-b61f-4015af6478cb
      -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \

    Contoh Respon Permintaan Menghapus Promo

    {
          "id":"6055a96c-a870-4a2f-b61f-4015af6478cb",
          "created":"2020-07-29T10:57:47.426Z",
          "business_id":"5edfb2a5d40e3040347d91fd",
          "reference_id":"Cypress-Test-Promo-Delete-1596020266435",
          "start_time":"2020-07-29T10:57:46.373Z",
          "end_time":"2020-07-30T10:57:46.373Z",
          "status":"DELETED",
          "type":"PROMO_CODE",
          "discount_amount":5000,
          "promo_code":"Cypress-Test-Promo-Delete-1596020266435",
          "currency":"IDR",
          "min_original_amount": 25000,
          "max_discount_amount": 5000
       }
    }
    

    Parameter Permintaan Menghapus Promo

    Path Parameter Tipe Deskripsi
    promotion_id
    optional
    string Spesifik id yang diberikan oleh Xendit dari suatu objek promo yang telah dibuat.

    Respon Permintaan Menghapus Promo

    Parameter Tipe Deskripsi
    id string Id unik dari promo yang akan dihapus (ID pada promo yg dibuat oleh Xendit).
    is_deleted boolean Status dari pada suatu objek promo yang menandakan bahwa objek promo sudah dihapus.

    Error Codes

    Error Code Description
    PROMOTION_NOT_FOUND_ERROR
    404
    Objek promo dengan ID tersebut tidak dapat ditemukan. Mohon gunakan id yang valid

    eWallet

    eWallet API kami memungkinkan Anda untuk melakukan charge dan menerima pembayaran langsung dari penyedia layanan ewallet terkemuka. Dengan melakukan satu integrasi, Anda akan mendapatkan akses ke seluruh eWallet yang tersedia termasuk integrasi di masa depan. Sampai saat ini, kami telah memproses jutaan transaksi eWallet.

    Untuk detil di setiap API termasuk panduan integrasi, silakan merujuk pada dokumentasi kami.

    Versi API

    Anda sedang melihat versi terbaru API eWallet kami. Pada versi ini, dengan sekali integrasi Anda akan mendapatkan akses ke seluruh eWallet yang tersedia dan eWallet yang akan tersedia mendatang! API ini juga memungkinkan Anda untuk melakukan alur tokenized payment dan auth/capture payment di masa mendatang. Klik di sini untuk melihat versi sebelumnya.

    Versi Changelog
    2021-01-25
    Terbaru
    API eWallet baru yang mendukung top eWallet provider di Indonesia dan Filipina. API versioning tidak butuhkan. Anda dapat mengakses API eWallet baru dengan memanggil POST /ewallets/charges

    Pembuatan Charge eWallet

    Endpoint: Pembuatan Request Charge eWallet

    POST https://api.xendit.co/ewallets/charges

    eWallet

    Parameter Request

    Contoh: Pembuatan Request Charge eWallet

    curl https://api.xendit.co/ewallets/charges -X POST \
      --user xnd_development_LoReMIPman+ZPGT+ZZ9b3ooF4w3Dn+R1k+LoReMIPman: \
      --header 'content-type: application/json' \
      --data '{
        "reference_id": "order-id-123",
        "currency": "IDR",
        "amount": 25000,
        "checkout_method": "ONE_TIME_PAYMENT",
        "channel_code": "ID_SHOPEEPAY",
        "channel_properties": {
            "success_redirect_url": "https://redirect.me/payment"
            },
        "metadata": {
            "branch_area": "PLUIT",
            "branch_city": "JAKARTA"
            }
        }' \
    try {
        Xendit.apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
    
        Map<String, String> channelProperties = new HashMap<>();
        channelProperties.put("success_redirect_url", "https://dashboard.xendit.co/register/1");
        Map<String, String> metadata = new HashMap<>();
        metadata.put("branch_code", "tree_branch");
    
        Map<String, Object> params = new HashMap<>();
        params.put("reference_id", "test-reference-id");
        params.put("currency", "IDR");
        params.put("amount", 1000);
        params.put("checkout_method", "ONE_TIME_PAYMENT");
        params.put("channel_code", "ID_SHOPEEPAY");
        params.put("channel_properties", channelProperties);
        params.put("metadata", metadata);
    
        EWalletCharge charge = EWalletCharge.createEWalletCharge(params);
    } catch (XenditException e) {
        e.printStackTrace();
    }
    <?php
    
    use Xendit\Xendit;
    require 'vendor/autoload.php';
    
    Xendit::setApiKey('xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==');
    
    $params = [
        'reference_id' => 'test-reference-id',
        'currency' => 'IDR',
        'amount' => 1000,
        'checkout_method' => 'ONE_TIME_PAYMENT',
        'channel_code' => 'ID_SHOPEEPAY',
        'channel_properties' => [
            'success_redirect_url' => 'https://dashboard.xendit.co/register/1',
        ],
        'metadata' => [
            'branch_code' => 'tree_branch'
        ]
    ];
    
    $createEWalletCharge = \Xendit\EWallets::createEWalletCharge($ewalletChargeParams);
    var_dump($createEWalletCharge);
    
    ?>
    from xendit import EWallet
    
    ewallet_charge = EWallet.create_ewallet_charge(
        reference_id="test-reference-id",
        currency="IDR",
        amount=1000,
        checkout_method="ONE_TIME_PAYMENT",
        channel_code="ID_SHOPEEPAY",
        channel_properties={
            "success_redirect_url": "https://dashboard.xendit.co/register/1",
        },
        metadata={
            "branch_code": "tree_branch",
        },
    )
    xendit.Opt.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    
    data := ewallet.CreateEWalletChargeParams{
        ReferenceID:    "test-reference-id",
        Currency:       "IDR",
        Amount:         1000,
        CheckoutMethod: "ONE_TIME_PAYMENT",
        ChannelCode:    "ID_SHOPEEPAY",
        ChannelProperties: map[string]string{
            "success_redirect_url": "https://dashboard.xendit.co/register/1",
        },
        Metadata: map[string]interface{}{
            "branch_code": "tree_branch",
        },
    }
    
    charge, chargeErr := ewallet.CreateEWalletCharge(&data)
    if chargeErr != nil {
        log.Fatal(chargeErr)
    }
    
    fmt.Printf("created e-wallet charge: %+v\n", charge)
    const x = new require("xendit-node")({
      secretKey:
        "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
    });
    
    const { EWallet } = x;
    const ewalletSpecificOptions = {};
    const ew = new EWallet(ewalletSpecificOptions);
    
    const resp = await ew.createEWalletCharge({
      referenceID: 'test-reference-id',
      currency: 'IDR',
      amount: 1000,
      checkoutMethod: 'ONE_TIME_PAYMENT',
      channelCode: 'ID_SHOPEEPAY',
      channelProperties: {
        successRedirectURL: 'https://dashboard.xendit.co/register/1',
      },
      metadata: {
        branch_code: 'tree_branch'
      }
    });
    console.log(resp);
    string apiKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==";
    
    XenditClient xendit = new XenditClient(apiKey);
    EWalletChargeClient eWalletCharge = xendit.EWalletCharge;
    
    EWalletChargeParameter parameter = new EWalletChargeParameter
    {
      ReferenceId = "demo-reference-id",
      Currency = Currency.IDR,
      Amount = 1000,
      CheckoutMethod = EWalletEnum.CheckoutMethod.OneTimePayment,
      ChannelCode = EWalletEnum.ChannelCode.IdOvo,
      ChannelProperties = new EWalletChargeProperties
      {
        MobileNumber = "+628123123123",
      },
    };
    
    EWalletChargeResponse eWalletChargeResponse = await eWalletCharge.Create(parameter);
    Parameter Header Tipe Deskripsi
    for-user-id
    opsional
    string User-id sub-account yang Anda ingin gunakan untuk membuat transaksi

    Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform . Silakan buka xenPlatform untuk informasi lebih lanjut.
    with-fee-rule
    optional
    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.

    Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform . Silakan buka xenPlatform untuk informasi lebih lanjut.
    Parameter Body Tipe Deskripsi
    reference_id
    wajib
    string Reference ID yang disediakan oleh merchant (255 karakter)
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    amount
    wajib
    number Nominal yang harus dibayarkan
    Minimal - 100 IDR atau 1 PHP
    Maksimal - berdasarkan saldo maksimal eWallet
    checkout_method
    wajib
    string Metode checkout yang menentukan alur pembayaran untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    TOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang
    channel_code
    wajib jika checkout_method = ONE_TIME_PAYMENT, opsional jika checkout_method = TOKENIZED_PAYMENT
    string Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO, ID_DANA, ID_LINKAJA, ID_SHOPEEPAY, ID_ASTRAPAY, ID_SAKUKU, PH_PAYMAYA, PH_GCASH, PH_GRABPAY, PH_SHOPEEPAY
    channel_properties
    wajib ketika checkout_method dan channel_code digunakan
    object Menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - parameter wajib one time payment
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    OVO - parameter wajib tokenized payment
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    MAYA (PAYMAYA) parameter wajib . End-customer dapat mencoba kembali pembayaran di link yang sama dalam waktu 15 menit
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan
    payment_method_id
    wajib jika checkout_method = TOKENIZED_PAYMENT, opsional jika checkout_method = ONE_TIME_PAYMENT
    string ID dari payment method. Payment method digunakan untuk melakukan tokenisasi pembayaran untuk menandai eWallet end user sebagai metode pembayaran
    customer_id
    opsional
    string ID dari customer object dimana payment method akan dihubungkan. Gunakan Create Customer API untuk melakukan request Customer
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail parameter objek
    Key Nilai
    reference_id
    wajib
    string Pengidentifikasi dari merchant untuk suatu produk tertentu<= 255 karakter
    name
    wajib
    string Nama product
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user. Anda dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.
    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit.
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan.
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.
    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit.

    Parameter Respon

    Contoh: Respon Sukses Pembuatan Charge eWallet API

    {
      "id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
      "business_id": "5f218745736e619164dc8608",
      "reference_id": "test-reference-id",
      "status": "PENDING",
      "currency": "IDR",
      "charge_amount": 1000,
      "capture_amount": 1000,
      "refunded_amount": null,
      "checkout_method": "ONE_TIME_PAYMENT",
      "channel_code": "ID_SHOPEEPAY",
      "channel_properties": {
        "success_redirect_url": "https://dashboard.xendit.co/register/1"
      },
      "actions": {
        "desktop_web_checkout_url": null,
        "mobile_web_checkout_url": null,
        "mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
        "qr_checkout_string": "ID123XenditQRTest321DI"
      },
      "is_redirect_required": true,
      "callback_url": "https://calling-back.com/xendit/shopeepay",
      "created": "2017-07-21T17:32:28Z",
      "updated": "2017-07-21T17:32:28Z",
      "void_status": null,
      "voided_at": null,
      "capture_now": true,
      "customer_id": null,
      "payment_method_id": null,
      "failure_code": null,
      "basket": null,
      "metadata": {
        "branch_code": "tree_branch"
      }
    }
    Parameter Body Tipe Deskripsi
    id
    wajib
    string Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4
    business_id
    wajib
    string Business ID dari merchant
    reference_id
    wajib
    string Reference ID yang dibuat oleh merchant
    status
    wajib
    string Status request charge
    Key Value
    SUCCEEDED
    Transaksi pembayaran untuk spesifik charge_id sukses dilakukan
    PENDING
    Transaksi pembayaran untuk spesifik charge_id menunggu pembayaran dilakukan oleh end user
    FAILED
    Transaksi pembayaran untuk spesifik charge_id telah gagal, silakan lihat failure codes untuk alasan kegagalan
    VOIDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan void
    REFUNDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan refund sebagian atau refund penuh
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    charge_amount
    wajib
    number Nominal charge yang direquest dari merchant
    capture_amount
    opsional
    number Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount
    refunded_amount
    opsional
    number Total nominal refund dari merchant kepada end user
    checkout_method
    wajib
    string Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    channel_code
    wajib
    string Channel Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO, ID_DANA, ID_LINKAJA, ID_SHOPEEPAY, ID_ASTRAPAY, ID_SAKUKU, PH_PAYMAYA, PH_GCASH, PH_GRABPAY, PH_SHOPEEPAY
    channel_properties
    wajib
    object Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - parameter wajib one time payment
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    OVO - parameter wajib tokenized payment
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    Parameter wajib MAYA (PAYMAYA)
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan. End-customer dapat mencoba kembali pembayaran di tautan yang sama dalam waktu 15 menit
    actions
    opsional
    string Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan dalam respon adalah true. Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
    Key Nilai
    desktop_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan desktop
    mobile_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan perangkat mobile
    mobile_deeplink_checkout_url
    Penyedia layanan eWallet membuat URL untuk deeplink checkout pada perangkat mobile (transaksi langsung masuk ke eWallet app untuk konfirmasi pembayaran)
    qr_checkout_string
    Provider eWallet membuat qr string untuk checkout yang harus digunakan dengan cara melakukan pemindaian pada layar perangkat
    Channel wajib pengalihan informasi lebih lanjut
    Tipe DANA LINKAJA SHOPEEPAY (ID & PH) ASTRAPAY MAYA (PAYMAYA) GCASH GRABPAY SAKUKU
    desktop_web_checkout_url
    mobile_web_checkout_url
    mobile_deeplink_checkout_url
    qr_checkout_string
    is_redirect_required
    wajib
    boolean Menandakan apakah redirection/pengalihan wajib dilakukan untuk menyelesaikan pembayaran
    Ketika True, merchants mengalihkan end user ke url yang diberikan pada bagian “actions”. Ketika False, tidak diperlukan adanya redirection untuk melanjutkan pembayaran
    callback_url
    wajib
    string Callback URL dimana notifikasi pembayaran akan dikirimkan
    created
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    updated
    wajib
    string ISO 8601 Timestamp untuk update object charge. Timezone UTC+0
    void_status
    opsional
    string Status request void. Nilai tersedia: PENDING, FAILED, SUCCEEDED
    voided_at
    opsional
    string ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0
    capture_now
    wajib
    string Default: true. Parameter tidak digunakan saat ini
    customer_id
    opsional
    string ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi
    payment_method_id
    opsional
    string ID metode pembayaran dari Xendit sebagai representasi metode pembayaran pelanggan Anda. Hanya dapat digunakan untuk kanal yang mendukung pembayaran tokenisasi
    failure_code
    opsional
    string Alasan kegagalan pembayaran oleh end user maupun dari provider eWallet. Kode kegagalan akan diberitahukan kepada merchant pada callback pembayaran atau melalui GET payment status setelah transaksi dilakukan oleh end user
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail objek parameter
    Key Nilai
    reference_id
    wajib
    string Identifier produk yang dibuat oleh merchant <= 255 karakter
    name
    wajib
    string Nama produk
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek tambahan yang mungkin digunakan sebagai tambahan atribut produk
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter
    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan

    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter

    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit

    Kode Eror

    Contoh: Respon Eror Pembuatan Request Charge eWallet API

    {
        "error_code": "UNSUPPORTED_CURRENCY",
        "message": "The payment currency request is not supported for this payment channel. Please refer to our API reference or docs to pick available currencies"
    }
    Kode Eror Deskripsi
    API_VALIDATION_ERROR
    400
    Terdapat invalid input pada salah satu parameter
    UNSUPPORTED_CURRENCY
    400
    Mata uang pembayaran pada request tidak mendukung untuk channel pembayaran ini. Silakan merujuk pada API reference atau docs untuk melihat mata uang yang tersedia
    INVALID_PAYMENT_METHOD_ID
    400
    Terdapat ketidaksesuaian antara channel_code atau customer_id dalam request dengan data yang digunakan dalam pembuatan payment_method_id, atau payment_method_id tidak tersedia untuk akun terkait. Silakan mencoba kembali dengan payment_method_id yang valid
    INVALID_API_KEY
    401
    Format API key tidak valid
    INVALID_MERCHANT_CREDENTIALS
    401
    Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request
    CHANNEL_NOT_ACTIVATED
    403
    Request pembayaran gagal dikarenakan channel pembayaran yang direquest belum diaktifkan di Xendit. Silakan melakukan aktivasi melalui dashboard atau menghubungi customer support Xendit
    CALLBACK_URL_NOT_FOUND
    404
    Request pembayaran gagal dikarenakan tidak ditemukan callback url pada dashboard Xendit atau pada request header. Silakan masukkan callback url pada dashboard Xendit
    UNSUPPORTED_CONTENT_TYPE
    403
    Tidak mendukung tipe konten yang di request
    SERVER_ERROR
    500
    Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu
    CHANNEL_UNAVAILABLE
    503
    Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu

    Notifikasi Pembayaran

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

    Kode Kegagalan

    Contoh: Respon Eror - Pembuatan Void eWallet

    {
      "event": "ewallet.capture",
      "business_id": "5abe2389ewpejrt238",
      "created": "2020-04-20T16:25:52Z",
      "data": {
        "id": "ewc_bb8c3po-c3po-r2d2-c3po-r2d2c3por2d2",
        "business_id": "5f218745736e619164dc8608",
        "reference_id": "test-reference-id",
        "status": "FAILED",
        "currency": "IDR",
        "charge_amount": 1000,
        "capture_amount": 1000,
        "refunded_amount": null,
        "checkout_method": "ONE_TIME_PAYMENT",
        "channel_code": "ID_SHOPEEPAY",
        "channel_properties": {
          "success_redirect_url": "https://dashboard.xendit.co/register/1"
        },
        "actions": {
          "desktop_web_checkout_url": null,
          "mobile_web_checkout_url": null,
          "mobile_deeplink_checkout_url": "https://deeplinkcheckout.this/",
          "qr_checkout_string": "ID123XenditQRTest321DI"
        },
        "is_redirect_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-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. 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
    id
    wajib
    string Pengidentifikasi unik dari setiap request charge transaksi. Akan selalu di awali dengan 'ewc_', diikuti dengan UUDv4
    business_id
    wajib
    string Business ID dari merchant
    reference_id
    wajib
    string Reference ID yang dibuat oleh merchant
    Catatan: Harus unik per request pembayaran.
    status
    wajib
    string Status request charge
    Key Nilai
    SUCCEEDED
    Transaksi pembayaran untuk spesifik charge_id sukses dilakukan
    PENDING
    Transaksi pembayaran untuk spesifik charge_id menunggu pembayaran dilakukan oleh end user
    FAILED
    Transaksi pembayaran untuk spesifik charge_id telah gagal, silakan lihat failure codes untuk alasan kegagalan
    VOIDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan void
    REFUNDED
    Transaksi pembayaran untuk spesifik charge_id telah dilakukan refund sebagian atau refund penuh
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    charge_amount
    wajib
    number Nominal charge yang direquest dari merchant
    capture_amount
    opsional
    number Nominal capture yang direquest oleh merchant. Saat ini, capture_amount akan selalu sama dengan charge_amount
    refunded_amount
    opsional
    number Total nominal refund dari merchant kepada end user
    checkout_method
    wajib
    string Metode checkout menentukan alur pembayaran yang digunakan untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali pakai
    channel_code
    wajib
    string Channel Channel code menunjukkan eWallet yang digunakan untuk memproses transaksi - ID_OVO, ID_DANA, ID_LINKAJA, ID_SHOPEEPAY, ID_ASTRAPAY,ID_SAKUKU, PH_PAYMAYA, PH_GCASH, PH_GRABPAY, PH_SHOPEEPAY
    channel_properties
    opsional
    object Channel properties menunjukkan informasi yang dibutuhkan untuk memulai transaksi
    OVO - parameter wajib one time payment
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    OVO - parameter wajib tokenized payment
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    Parameter wajib MAYA (PAYMAYA)
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi dibatalkan. End-customer dapat mencoba kembali pembayaran menggunakan tautan yang sama dalam waktu 15 menit
    actions
    opsional
    string Langkah pengalihan yang harus diambil ketika is_redirect_required yang dikembalikan dalam respon adalah true. Merchant harus memilih opsi yang tersedia berdasarkan pengalaman ideal untuk alur pembayaran merchant
    Key Nilai
    desktop_web_checkout_url
    Penyedia layanan eWallet menampilakn URL untuk web checkout yang diakses menggunakan desktop
    mobile_web_checkout_url
    Penyedia layanan eWallet menampilakn URL untuk web checkout yang diakses menggunakan perangkat mobile
    mobile_deeplink_checkout_url
    Penyedia layanan eWallet membuat URL untuk deeplink checkout pada perangkat mobile (transaksi langsung masuk ke eWallet app untuk konfirmasi pembayaran)
    qr_checkout_string
    Provider eWallet membuat qr string untuk checkout yang harus digunakan dengan cara melakukan pemindaian pada layar perangkat
    is_redirect_required
    wajib
    boolean Menandakan apakah redirection/pengalihan wajib dilakukan untuk menyelesaikan pembayaran
    Ketika True, merchants mengalihkan end user ke url yang diberikan pada bagian “actions”. Ketika False, tidak diperlukan adanya redirection untuk melanjutkan pembayaran
    callback_url
    wajib
    string Callback URL dimana notifikasi pembayaran akan dikirimkan
    created
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    updated
    wajib
    string ISO 8601 Timestamp untuk update object charge. Timezone UTC+0
    void_status
    opsional
    string Status request void. Nilai tersedia: PENDING, FAILED, SUCCEEDED
    voided_at
    opsional
    string ISO 8601 Timestamp ketika transaksi dilakukan void. Timezone UTC+0
    capture_now
    wajib
    string Default: true. Parameter tidak digunakan saat ini
    customer_id
    opsional
    string ID dari customer object yang dibuat dengan Xendit. ID untuk dihubungkan dengan transaksi
    payment_method_id
    opsional
    string ID dari metode pembayaran . Hanya dapat digunakan untuk channel yang mendukung tokenisasi pembayaran
    failure_code
    opsional
    string Alasan kegagalan pembayaran oleh end user maupun dari provider eWallet. Kode kegagalan akan diberitahukan kepada merchant pada callback pembayaran atau melalui GET payment status setelah transaksi dilakukan oleh end user
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail objek parameter
    Key Value
    reference_id
    wajib
    string Identifier produk yang dibuat oleh merchant <= 255 karakter
    name
    wajib
    string Nama produk
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek tambahan yang mungkin digunakan sebagai tambahan atribut produk
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter
    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user. User dapat mendefinisikan parameter JSON dan properti yang akan ditambahkan
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter
    Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit

    Kode Eror

    Contoh: Eror Respon Check eWallet Charge Request

    {
        "error_code": "INVALID_API_KEY",
        "message": "API key format is invalid"
    }
    Kode Eror Deskripsi
    API_VALIDATION_ERROR
    400
    Terdapat invalid input pada salah satu parameter
    INVALID_API_KEY
    401
    Format API key tidak valid
    INVALID_MERCHANT_CREDENTIALS
    401
    Terdapat eror dengan kredensial merchant yang disediakan oleh provider eWallet. Silakan hubungi customer support Xendit untuk penyelesaian
    DATA_NOT_FOUND
    404
    Spesifik Charge ID tidak ditemukan. Silakan cek query Anda lagi
    SERVER_ERROR
    500
    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 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 N/A
    Fee Transaksi Dikembalikan?
    N/A N/A

    Philippines

    Nilai GCASH MAYA (PAYMAYA) GRABPAY
    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
    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
    id
    wajib
    string Pengidentifikasi unik untuk request charge transaksi. Akan selalu berawalan 'ewc_', diikuti dengan UUIDv4
    business_id
    wajib
    string Business ID dari merchant
    reference_id
    wajib
    string Reference ID yang disediakan oleh merchant
    Note: Harus unik per request pembayaran.
    status
    wajib
    string Status request charge
    Key Nilai
    SUCCEEDED
    Pembayaran transaksi untuk spesifik charge_id sukses dilakukan
    currency
    wajib
    string string Mata uang yang digunakan pada transaksi dalam format ISO4217
    Nilai yang didukung: IDR, PHP
    charge_amount
    wajib
    number Nominal charge yang direquest
    capture_amount
    opsional
    number Nominal capture yang direquest oleh merrchant. Saat ini, capture_amount akan selalu sama dengan charge_amount
    refunded_amount
    opsional
    number Total nominal refund dari merchant kepada end user
    checkout_method
    wajib
    string Checkout method menentukan flow pembayaran yang digunakan untuk memproses transaksi
    ONE_TIME_PAYMENT digunakan untuk checkout sekali waktu
    TOKENIZED_PAYMENT dapat digunakan untuk pembayaran berulang
    channel_code
    wajib
    string Channel Code menunjukkan eWallet mana yang digunakan untuk memproses transaksi
    Channel tersedia: ID_OVO, ID_DANA, ID_LINKAJA, ID_SHOPEEPAY, PH_PAYMAYA,PH_GCASH, PH_GRABPAY, PH_SHOPEEPAY
    channel_properties
    opsional
    object Informasi spesifik yang diwajibkan untuk tersedia dari spesifik channel yang digunakan.
    OVO - parameter wajib one time payment
    Paramater Nilai
    mobile_number
    wajib
    string Format Nomor handphone customer dalam format E.164 (Contoh. +628123123123)
    OVO - parameter wajib tokenized payment
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. REDEEM_ALL hanya dapat digunakan ketika promosi disetujui oleh OVO.
    DANA, LINKAJA - one time payment, SHOPEEPAY (ID & PH) - one time payment, SAKUKU parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    SHOPEEPAY - parameter wajib tokenized payment
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    redeem_points
    opsional
    enum, default = "REDEEM_NONE" "REDEEM_NONE" - tidak ada point yang akan digunakan atau "REDEEM_ALL" - point akan digunakan sebelum cash balance digunakan. Hanya 50% nominal transaksi (dibulatkan ke bawah) dapat dibayar menggunakan koin ShopeePay
    GCASH, GRABPAY, ASTRAPAY, LINKAJA - tokenized payment parameter wajib
    Key Value
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi berhasil
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika proses otorisasi gagal
    Parameter Wajib MAYA (PAYMAYA)
    Key Nilai
    success_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika otorisasi sukses
    failure_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika otorisasi gagal
    cancel_redirect_url
    wajib
    string URL dimana end user akan diarahkan jika otorisasi dibatalkan. End-customer dapat mencoba kembali pembayaran dengan link yang sama dalam 15 menit.
    actions
    opsional
    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
    Key Nilai
    desktop_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan desktop
    mobile_web_checkout_url
    Penyedia layanan eWallet menampilkan URL untuk web checkout yang diakses menggunakan perangkat mobile
    mobile_deeplink_checkout_url
    Penyedia layanan eWallet membuat URL untuk deeplink checkout pada perangkat mobile (transaksi langsung masuk ke eWallet app untuk konfirmasi pembayaran)
    qr_checkout_string
    Provider eWallet membuat qr string untuk checkout yang harus digunakan dengan cara melakukan pemindaian pada layar perangkat
    is_redirect_required
    wajib
    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_url
    wajib
    string Callback URL dimana notifikasi pembayaran akan dikirimkan
    created
    wajib
    string ISO 8601 Timestamp untuk pembuatan object charge. Timezone UTC+0
    updated
    wajib
    string ISO 8601 Timestamp untuk update object charge. Timezone UTC+0
    void_status
    opsional
    string Status dari void request. Nilai seharusnya PENDING
    voided_at
    opsional
    string Timestamp dengan ISO 8601 ketika transaksi divoid
    capture_now
    wajib
    string Default: true. Parameter tidak digunakan saat ini
    customer_id
    opsional
    string ID dari customer object yang dibuat dengan Xendit. ID akan dihubungkan dengan transaksi
    payment_method_id
    opsional
    string ID dari payment method . Hanya digunakan untuk channel yang mendukung tokenisasi pembayaran
    failure_code
    opsional
    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
    basket
    opsional
    array Himpunan objek yang mendeskripsikan item yang dibeli
    Detail objek parameter
    Key Nilai
    reference_id
    wajib
    string Identifier produk yang dibuat oleh merchant <= 255 karakter
    name
    wajib
    string Nama produk
    category
    wajib
    string Kategori item - Contoh. Elektronik
    currency
    wajib
    string Mata uang yang digunakan untuk transaksi dalam format ISO4217 - IDR, PHP
    price
    wajib
    number Harga per unit
    quantity
    wajib
    number Jumlah per unit
    type
    wajib
    string Tipe produk - PRODUCT atau SERVICE
    url
    opsional
    string URL ke halaman item e-commerce
    description
    opsional
    string Deskripsi produk
    sub_category
    opsional
    string Sub kategori produk- Contoh. Mobile Phone
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge.Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge.Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.Nilai ini hanya akan digunakan oleh user dan tidak digunakan oleh Xendit

    Kode 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_ERROR
    400
    Terdapat invalid input pada salah satu parameter.
    VOID_NOT_SUPPORTED
    400
    Fitur void tidak tersedia pada eWallet provider.
    VOID_TEMPORARILY_UNAVAILABLE
    400
    Fitur void tidak dapat digunakan antara pukul 00:00:00 dan pukul 03:00:00 UTC+07:00/UTC+08:00 setiap harinya untuk transaksi ShopeePay. Silakan coba lagi setelah pukul 03:00:00 UTC+07:00/UTC+08:00.
    INVALID_API_KEY
    401
    Format API key tidak valid.
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request.
    INELIGIBLE_TRANSACTION
    403
    Pembayaran telah melewati periode valid void (setelah 23:50:00 UTC+07:00/UTC+08:00) untuk request atau status charge bukan SUCCEEDED.
    INELIGIBLE_MERCHANT
    403
    Merchant memiliki pengaturan settlement yang tidak berhak untuk melakukan void transaksi. Silakan contact Xendit customer support untuk resolusinya.
    DATA_NOT_FOUND
    404
    Sumber tidak ditemukan. Silakan check kembali query Anda.
    SERVER_ERROR
    500
    Eror tidak terduga telah terjadi, team kami telah diberitahukan untuk melakukan penyelesaian isu.
    CHANNEL_UNAVAILABLE
    503
    Channel pembayaran yang direquest mengalami kendala yang tidak terduga. Provider eWallet akan diberitahukan untuk penyelesaian isu.

    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
    event
    wajib
    string Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.void terjadi ketika provider eWallet mengkonfirmasi status request void
    business_id
    wajib
    string Business ID dari merchant
    created
    wajib
    string Timestamp dalam ISO 8601 untuk pembuatan notifikasi callback. Timezone UTC+0
    data
    opsional
    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 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 N/A
    Periode Valid
    14 Hari 30 Hari 365 Hari 30 Hari N/A N/A
    Fee Transaksi Dikembalikan?
    N/A 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, 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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta.
    MAXIMUM_REFUND_AMOUNT_REACHED
    400
    Request refund gagal karena refund dengan nominal penuh telah mencapai maksimum limit.
    PARTIAL_REFUND_NOT_SUPPORTED
    400
    Request refund sebagian gagal karena refund sebagian tidak tersedia pada penyedia eWallet.
    REFUND_TEMPORARILY_UNAVAILABLE
    400
    Fitur refund tidak dapat digunakan antara pukul 00:00:00 dan pukul 03:00:00 UTC+07:00/UTC+08:00 setiap harinya untuk transaksi ShopeePay. Silakan coba lagi setelah pukul 03:00:00 UTC+07:00/UTC+08:00.
    REFUND_TEMPORARILY_UNAVAILABLE
    400
    Refund sebagian tidak tersedia untuk Maya (PayMaya) pada hari transaksi. Silakan coba lagi setelah 23:59:59.
    REFUND_NOT_SUPPORTED
    400
    Request refund gagal karena refund tidak tersedia pada penyedia eWallet.
    REFUND_IN_PROGRESS
    400
    Refund request secara bersamaan untuk charge eWallet yang sama tidak diperbolehkan. Silakan melakukan refund request kembali setelah request sebelumnya selesai.
    INVALID_API_KEY
    401
    Format API key tidak sah.
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request.
    INELIGIBLE_TRANSACTION
    403
    Request refund tidak dapat diproses dikarenakan status transaksi “FAILED”, “PENDING”, or “VOIDED”.
    INSUFFICIENT_BALANCE
    403
    Saldo Xendit tidak cukup untuk melakukan refund. Silakan top up saldo Xendit Anda atau menunggu transaksi lainnya settled.
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi.
    SERVER_ERROR
    500
    Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera.
    CHANNEL_UNAVAILABLE
    503
    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
    event
    wajib
    string Mengidentifikasi event yang memantik pengiriman notifikasi ke merchant. ewallet.refund terjadi ketika provider eWallet mengkonfirmasi status request refund
    business_id
    wajib
    string Business ID dari merchant
    created
    wajib
    string Timestamp dalam ISO 8601 untuk pembuatan notifikasi callback. Timezone UTC+0
    data
    opsional
    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, 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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta.
    INVALID_API_KEY
    401
    Format API key tidak sah.
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request.
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi.
    SERVER_ERROR
    500
    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
    Kunci Nilai
    id string Pengidentifikasi unik dari transaksi refund
    charge_id string Pengidentifikasi unik untuk transaksi charge
    status string Status request refund
    Nilai tersedia: SUCCEEDED, FAILED, PENDING
    currency string Mata uang yang digunakan pada transaksi dalam format ISO4217
    Nilai yang didukung: IDR, PHP
    capture_amount number Nominal capture yang direquest
    refund_amount number Total nominal refund dari merchant kepada end user
    channel_code string Kode channel yang mengindikasikan provider eWallet
    Channel tersedia: ID_OVO, ID_DANA, ID_SHOPEEPAY, ID_LINKAJA, PH_PAYMAYA,PH_GCASH, PH_GRABPAY, PH_SHOPEEPAY
    reason string Alasan refund
    failure_code string Alasan kegagalan request refund
    created string UTC+0 Timestamp dalam format ISO 8601 untuk refund request
    updated string UTC+0 Timestamp dalam format ISO 8601 untuk refund update
    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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta.
    INVALID_API_KEY
    401
    Format API key tidak sah.
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request.
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi.
    SERVER_ERROR
    500
    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 Filipina

    Anda 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.

    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_ERROR
    409
    Permintaan dengan reference_id yang sama telah dibuat sebelumnya. Harap masukkan reference_id yang unik
    IDEMPOTENCY_ERROR
    409
    Idempotency-key telah digunakan sebelumnya. Gunakan idempotency-key yang unik dan coba kembali

    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 normal 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


    Key Nilai
    channel_code
    wajib
    string Pengenal untuk mitra saluran pembayaran
    eWallet yang didukung dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object Objek yang berisi informasi yang diperlukan untuk melakukan account linking dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Ket Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit

    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
    id
    wajib
    string Pengenal unik untuk metode pembayaran. Memiliki awalan pm-. Example: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    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 lagi.

    gunakan MULTIPLE_USE
    customer_id
    wajib
    string ID dari customer object yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk mendapatkan Customer ID
    business_id
    wajib
    string Pengenal yang diberikan Xendit untuk bisnis yang memiliki transaksi
    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
    status
    wajib
    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
    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
    actions
    wajib
    object Jika status=REQUIRES_ACTION, berisi objek yang merinci kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
    Key Nilai
    method
    wajib
    string HTTP method for calling the url. Allowed values: GET, POST
    url_type
    wajib
    stringTipe URL untuk aksi yang spesifik.
    API - Url yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    WEB - Url pengalihan yang disediakan dioptimalkan untuk desktop atau tampilan web. Dapat juga digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    MOBILE - URL pengalihan yang disediakan dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    DEEPLINK - URL pengalihan yang menggunakan pengalihan ke platform mitra saluran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran
    action
    wajib
    string AUTH - Picu tindakan ini untuk mengotorisasi linking atau pembayaran.
    RESEND_AUTH - Picu tindakan ini untuk mengirim ulang kode otorisasi ke pelanggan akhir
    url
    wajib
    string URL yang dihasilkan untuk melakukan tindakan
    ewallet
    wajib
    object Untuk type='EWALLET', ini berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
    Key Nilai
    channel_code
    wajib
    Pengidentifikasi string untuk mitra saluran pembayaran
    eWallet yang didukung dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object Objek yang berisi informasi yang diperlukan untuk melakukan account linking dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit
    account
    wajib
    object Berisi informasi mengenai akun eWallet yang telaht terhubung
    Key Nilai
    account_details
    opsional
    string ID akun eWallet yang disensor. Biasanya berisi nomor ponsel yang terdaftar ke eWallet. Akan berisi null apabila informasi tidak tersedia
    name
    opsional
    string Nama pemegang akun eWallet. Akan berisi null apabila informasi tidak tersedia
    balance
    opsional
    number Jumlah saldo eWallet saat ini. Akan berisi null jika tidak tersedia
    point_balance
    opsional
    string Jumlah poin eWallet yang dapat digunakan saat ini. Akan berisi null apabila informasi tidak tersedia
    created
    wajib
    string Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0
    updated
    wajib
    string Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0
    description
    opsional
    object Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method
    metadata
    opsional
    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_ERROR
    400
    Ada masukan yang tidak valid di salah satu bidang permintaan yang diperlukan
    INVALID_API_KEY
    401
    Format API key tidak valid
    CHANNEL_NOT_ACTIVATED
    403
    Permintaan pembayaran gagal karena saluran pembayaran khusus ini belum diaktifkan melalui Xendit. Silakan aktifkan melalui dasbor Xendit atau Customer Success kami
    REQUEST_FORBIDDEN_ERROR
    403
    API key dilarang untuk melakukan permintaan ini
    DUPLICATE_ERROR
    409
    Kode Xendit yang mengindikasikan eror berikut: Ada catatan yang sudah ada dengan rincian yang diberikan
    SERVER_ERROR
    500
    Terjadi kesalahan tak terduga, tim kami telah diberi tahu dan akan memecahkan masalah tersebut
    CHANNEL_UNAVAILABLE
    503
    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
    event
    wajib
    string Mengidentifikasi peristiwa yang memicu pemberitahuan ke merchant - payment_method.activated
    business_id
    wajib
    string Identifikasi bisnis merchant yang diberikan oleh Xendit
    created
    wajib
    string Stempel Waktu ISO 8601 pembuatan notifikasi callback. Zona waktu UTC+0.
    data
    opsional
    object Objek metode pembayaran
    Bidang data
    Body Parameter Deskripsi
    id
    wajib
    Pengidentifikasi unik untuk metode pembayaran. Memiliki awalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    type
    wajib
    Jenis metode pembayaran - gunakan EWALLET
    reusability
    wajib
    Menjelaskan apakah metode pembayaran dapat digunakan kembali atau tidak untuk pembayaran berikutnya tanpa melalui proses penautan yang sama lagi.

    Gunakan MULTIPLE_USE untuk eWallet
    customer_id
    wajib
    ID customer objek yang akan dihubungkan dengan token akun. Panggil Tokenized - Create Customer untuk menghasilkan Customer ID
    business_id
    wajib
    Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi
    reference_id
    opsional
    Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik
    status
    wajib
    Status metode pembayaran. Nilai yang diizinkan - PENDING, REQUIRES_ACTION, ACTIVE, INACTIVE, EXPIRED

    REQUIRES_ACTION - Permintaan memenuhi syarat validasi tetapi memerlukan langkah tambahan untuk mengaktifkan metode pembayaran yang akan digunakan. Tindakan yang biasa dilakukan merchant adalah memicu validasi OTP atau mengarahkan pelanggan Anda ke halaman autentikasi.
    ACTIVE - Metode pembayaran dapat digunakan untuk permintaan pembayaran.
    INACTIVE - Penjual membatalkan tautan pada metode pembayaran sehingga memicu status ini yang mencegah transaksi lebih lanjut dari metode pembayaran. Status dapat dibatalkan.
    EXPIRED - Otorisasi telah kedaluwarsa, tidak valid, atau telah dibatalkan tautannya. Status ini tidak dapat dibatalkan
    country
    wajib
    2-huruf ISO 3166-2 kode negara yang menunjukkan negara transaksi. Ini juga digunakan sebagai indikator untuk saluran yang hadir di beberapa pasar (misalnya ShopeePay). Nilai yang tersedia - PH, ID
    actions
    wajib
    Jika status=REQUIRES_ACTION, ada objek yang merinci kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
    Key Nilai
    method
    wajib
    string metode HTTP untuk memanggil URL. Nilai yang diizinkan: GET, POST
    url_type
    wajib
    string Jenis URL untuk tindakan tertentu.
    API - URL yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    WEB - URL pengalihan dioptimalkan untuk desktop atau tampilan web. Dapat juga digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    MOBILE - URL pengalihan yang dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    DEEPLINK - URL pengalihan ke platform mitra saluran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran
    action
    wajib
    string AUTH - Picu tindakan ini untuk mengotorisasi linking atau pembayaran.
    RESEND_AUTH - Picu tindakan ini untuk mengirim ulang kode otorisasi ke pelanggan akhir
    url
    wajib
    string URL yang dihasilkan untuk melakukan tindakan
    ewallet
    wajib
    Untuk type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
    Key Nilai
    channel_code
    wajib
    Pengidentifikasi string untuk mitra saluran pembayaran
    eWallet yang didukung dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object Objek yang berisi informasi yang diperlukan untuk melakukan linking account dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit
    account
    wajib
    object Berisi informasi mengenai aku eWallet yang dihubungkan
    Key Nilai
    account_details
    opsional
    string ID akun eWallet yang tertutup. Biasanya berisi nomor ponsel yang terdaftar ke eWallet. Akan berisi null jika tidak tersedia
    name
    opsional
    string Nama pemegang akun eWallet. Akan berisi null jika tidak tersedia
    balance
    opsional
    number Jumlah saldo eWallet saat ini. Akan berisi null jika tidak tersedia
    point_balance
    opsional
    number Jumlah poin eWallet yang dapat digunakan saat ini. Akan berisi null jika tidak tersedia
    created
    wajib
    Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0
    updated
    wajib
    Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0
    description
    opsional
    Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method
    metadata
    opsional
    Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan dari permintaan pembuatan objek.
    Objek dapat berisi hingga 50 key, dengan key name hingga 40 karakter dan nilai hingga 500 karakter

    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
    id
    wajib
    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
    id
    wajib
    string Pengidentifikasi unik untuk metode pembayaran. Memiliki awalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    type
    wajib
    string Jenis metode pembayaran - untuk menggunakan EWALLET
    reusability
    wajib
    string Menjelaskan apakah metode pembayaran dapat digunakan kembali atau tidak untuk pembayaran berikutnya tanpa melalui proses penautan yang sama lagi.

    gunakan MULTIPLE_USE
    customer_id
    wajib
    string ID customer object yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk menghasilkan Customer ID
    business_id
    wajib
    string Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi
    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
    status
    wajib
    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.
    country
    wajib
    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
    actions
    wajib
    object If status=REQUIRES_ACTION, berisi objek yang merinci langkah selanjutnya untuk mengaktifkan metode pembayaran.
    Key Nilai
    method
    wajib
    string metode HTTP untuk memanggil url. Nilai yang diizinkan: GET, POST
    url_type
    wajib
    string Jenis url untuk tindakan tertentu.
    API - URL yang disediakan adalah server API, merchant harus memberikan informasi yang diperlukan ke API
    WEB - Redirect URL dioptimalkan untuk desktop atau tampilan web. Dapat digunakan jika tidak ada URL MOBILE yang disediakan. Merchant harus mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    MOBILE - URL pengalihan yang dioptimalkan untuk perangkat seluler. Penjual perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    DEEPLINK - URL pengalihan ke platform mitra saluran pembayaran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    action
    wajib
    string AUTH - Picu tindakan ini untuk mengotorisasi linking atau pembayaran.
    RESEND_AUTH - Picu tindakan ini untuk mengirim ulang kode otorisasi ke pelanggan akhir.
    url
    wajib
    string URL yang dihasilkan untuk melakukan tindakan
    ewallet
    wajib
    object Untuk type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet.
    Key Nilai
    channel_code
    wajib
    Pengidentifikasi string untuk mitra saluran pembayaran
    eWallet yang tersedia dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object berisi informasi yang diperlukan untuk melakukan account linking dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URL string tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit.
    account
    wajib
    object Berisi informasi mengenai aku eWallet yang dihubungkan.
    Key Nilai
    account_details
    opsional
    string ID akun eWallet yang tertutup. Biasanya berisi nomor ponsel yang terdaftar ke eWallet. Akan berisi null jika tidak tersedia.
    name
    opsional
    string Nama pemegang akun eWallet. Akan berisi null jika tidak tersedia.
    balance
    opsional
    number Jumlah saldo eWallet saat ini. Akan berisi null jika tidak tersedia.
    point_balance
    opsional
    number Jumlah poin eWallet yang dapat digunakan saat ini. Akan berisi null jika tidak tersedia.
    created
    wajib
    string Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0
    updated
    wajib
    string Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0
    description
    opsional
    object Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method
    metadata
    opsional
    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_KEY
    401
    Format API key tidak valid
    REQUEST_FORBIDDEN_ERROR
    403
    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_ERROR
    500
    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
    id
    wajib
    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
    id
    wajib
    string Pengidentifikasi unik untuk metode pembayaran. Berawalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    type
    wajib
    string Jenis metode pembayaran - gunakan EWALLET
    reusability
    wajib
    string Menjelaskan apakah metode pembayaran dapat digunakan kembali untuk pembayaran berikutnya tanpa melalui proses linking yang sama.

    gunakan MULTIPLE_USE untuk eWallet
    customer_id
    wajib
    string ID customer objek yang akan di-linking dengan token akun. Panggil Tokenized - Create customer untuk menghasilkan customer ID
    business_id
    wajib
    string Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi
    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
    status
    wajib
    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
    country
    wajib
    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
    actions
    wajib
    object Jika status=REQUIRES_ACTION, ada rincian kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
    Key Nilai
    method
    wajib
    string metode HTTP untuk memanggil url. Nilai yang diizinkan: GET, POST
    url_type
    wajib
    string Jenis url untuk tindakan tertentu.
    API - URL yang disediakan adalah API sisi server, pedagang harus memberikan informasi wajib ke API
    WEB - Redirect url yang dioptimalkan untuk desktop atau tampilan web. Juga dapat digunakan jika tidak ada url MOBILE yang disediakan. Merchant harus mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    MOBILE - URL pengalihan yang disediakan untuk perangkat seluler. Penjual perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan autentikasi pembayaran.
    DEEPLINK - URL pengalihan yang disediakan menggunakan tautan ke platform mitra saluran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir ke halaman ini untuk menyelesaikan otentikasi pembayaran
    actions
    wajib
    string AUTH - Picu tindakan ini untuk mengotorisasi linking atau pembayaran.
    RESEND_AUTH - Picu tindakan ini untuk mengirim ulang kode otorisasi ke pelanggan akhir
    url
    wajib
    string URL yang dihasilkan untuk dipukul untuk melakukan tindakan
    ewallet
    wajib
    objek Untuk Type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
    Key Nilai
    channel_code
    wajib
    Pengidentifikasi string untuk mitra saluran pembayaran
    eWallet yang didukung dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object Objek yang berisi informasi yang dibutuhkan untuk melakukan account linking dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit
    account
    wajib
    object Berisi informasi mengenai aku eWallet yang dihubungkan
    Key Nilai
    account_details
    opsional
    string ID akun eWallet yang tertutup. Biasanya berisi nomor ponsel yang terdaftar ke eWallet. Akan berisi null jika tidak tersedia
    name
    opsional
    string Nama pemegang akun eWallet. Akan berisi null jika tidak tersedia
    balance
    opsional
    number Jumlah saldo eWallet saat ini. Akan berisi null jika tidak tersedia
    point_balance
    opsional
    number Jumlah poin eWallet yang dapat digunakan saat ini. Akan berisi null jika tidak tersedia
    created
    wajib
    string Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0
    created
    wajib
    string Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0
    description
    opsional
    object Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method
    metadata
    opsional
    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_KEY
    401
    Format API key tidak valid
    REQUEST_FORBIDDEN_ERROR
    403
    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_ERROR
    500
    Terjadi kesalahan tak terduga, tim kami telah diberi tahu dan akan memecahkan masalah tersebut
    CHANNEL_UNAVAILABLE
    503
    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_id
    wajib
    string Business ID merchant yang diberikan oleh Xendit
    created
    wajib
    string Stempel Waktu ISO 8601 untuk pembuatan callback. Zona waktu UTC+0
    data
    opsional
    object Objek metode pembayaran
    Bidang data
    Body Parameter Deskripsi
    id
    wajib
    Pengidentifikasi unik metode pembayaran. Memiliki awalan pm-. Contoh: pm-6d1c8be4-f4d9-421c-9f0b-ab3b2b6bbc39
    type
    wajib
    Jenis metode pembayaran - gunakan EWALLET
    reusability
    wajib
    Menjelaskan apakah metode pembayaran dapat digunakan kembali atau tidak untuk pembayaran berikutnya tanpa melalui proses penautan yang sama lagi.

    gunakan MULTIPLE_USE untuk eWallet
    customer_id
    wajib
    ID objek pelanggan yang akan ditautkan dengan token akun. Panggil Tokenized - Create Customer untuk menghasilkan customer ID
    business_id
    wajib
    Pengenal yang dibuat oleh Xendit untuk bisnis yang memiliki transaksi
    reference_id
    opsional
    Merchant dapat mengisi bagian ini sebagai identifikasi untuk payment method. Apabila tidak diisi, maka Xendit akan mengisinya dengan reference_id yang unik
    status
    wajib
    Status metode pembayaran. Nilai yang diizinkan - PENDING, REQUIRES_ACTION, ACTIVE, INACTIVE, EXPIRED

    REQUIRES_ACTION - Permintaan yang memenuhi syarat validasi tetapi memerlukan langkah tambahan untuk mengaktifkan metode pembayaran yang akan digunakan. Tindakan yang biasa dilakukan merchant adalah memicu validasi OTP atau mengarahkan pelanggan Anda ke halaman autentikasi.
    ACTIVE - Metode pembayaran dapat digunakan untuk permintaan pembayaran.
    INACTIVE - Penjual 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 dibatalkan
    country
    wajib
    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
    actions
    wajib
    Jika status=REQUIRES_ACTION, ada objek yang merinci kemungkinan langkah selanjutnya untuk mengaktifkan metode pembayaran
    Key Nilai
    method
    wajib
    string metode HTTP untuk memanggil url. Nilai yang diizinkan: GET, POST
    url_type
    wajib
    string Jenis url untuk tindakan tertentu.
    API - URL yang disediakan adalah API sisi server, merchant harus memberikan informasi yang diperlukan ke API
    WEB - Yang disediakan redirect url dioptimalkan untuk desktop atau tampilan web. Ini juga dapat digunakan jika tidak ada url MOBILE yang disediakan. Merchant harus mengarahkan pengguna akhir mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    MOBILE - URL pengalihan yang disediakan dioptimalkan untuk perangkat seluler. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir mereka ke halaman ini untuk menyelesaikan autentikasi pembayaran.
    DEEPLINK - URL pengalihan ke platform mitra saluran. Merchant perlu mendeteksi perangkat seluler dan mengarahkan pengguna akhir mereka ke halaman ini untuk menyelesaikan otentikasi pembayaran.
    action
    wajib
    string AUTH - Picu tindakan ini untuk mengotorisasi penautan atau pembayaran.
    RESEND_AUTH - Picu tindakan ini untuk mengirim ulang kode otorisasi ke pelanggan akhir.
    url
    wajib
    string URL yang dihasilkan untuk dipukul untuk melakukan tindakan
    ewallet
    wajib
    Untuk type='EWALLET', berisi informasi yang diperlukan untuk menjelaskan metode pembayaran ewallet
    Key Nilai
    channel_code
    wajib
    Pengidentifikasi string untuk mitra saluran pembayaran
    eWallet yang didukung dan kode salurannya:
    • DANA
    • OVO
    • LINKAJA
    • SHOPEEPAY
    • GRABPAY
    • PAYMAYA
    channel_properties
    wajib
    object Objek yang berisi informasi yang diperlukan untuk melakukan account linking dengan akun eWallet untuk pembayaran
    Isian wajib OVO, DANA, LINKAJA, SHOPEEPAY (ID & PH), GRABPAY
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    Isian wajib MAYA (PAYMAYA)
    Key Nilai
    success_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi berhasil
    failure_return_url
    wajib
    URLstring tempat pelanggan akhir dialihkan jika otorisasi gagal
    cancel_return_url
    wajib
    string URL tempat pelanggan akhir dialihkan jika otorisasi telah dibatalkan. Pelanggan akhir dapat mencoba kembali pembayaran pada tautan yang sama dalam waktu 15 menit
    account
    wajib
    object Berisi informasi mengenai aku eWallet yang dihubungkan
    Key Nilai
    account_details
    opsional
    string ID akun eWallet yang tertutup. Biasanya berisi nomor ponsel yang terdaftar ke eWallet. Akan berisi null jika tidak tersedia
    name
    opsional
    string Nama pemegang akun eWallet. Akan berisi null jika tidak tersedia
    balance
    opsional
    number Jumlah saldo eWallet saat ini. Akan berisi null jika tidak tersedia
    point_balance
    opsional
    number Jumlah poin eWallet yang dapat digunakan saat ini. Akan berisi null jika tidak tersedia
    created
    wajib
    Stempel Waktu ISO 8601 untuk pembuatan objek. Zona waktu UTC+0
    updated
    wajib
    Stempel Waktu ISO 8601 untuk pembaruan objek. Zona waktu UTC+0
    description
    opsional
    Deskripsi yang dapat diisi oleh Merchant sebagai tambahan informasi mengenai payment method
    metadata
    opsional
    Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan dari pembuatan objek.
    Objek dapat berisi hingga 50 key, dengan key name hingga 40 karakter dan nilai hingga 500 karakter

    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
    Key Value
    given_names
    wajib
    string Nama depan atau nama utama milik customer
    surname
    wajib
    string Nama belakang atau nama keluarga customer
    email
    wajib
    string Alamat e-mail customer
    mobile_number
    wajib
    string Nomor telepon genggam customer dalam format E.164
    street_line1
    wajib
    string Alamat customer
    city
    wajib
    string Kabupaten/kota customer
    postal_code
    wajib
    string Kode ZIP atau kode pos customer
    country_code
    wajib
    string Kode negara 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 PayLater

    Mata 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
    Kode Channel Min Maks
    ID_KREDIVO (IDR) 1,000 30,000,000
    ID_AKULAKU (IDR) 1,000 25,000,000
    ID_UANGME (IDR) 20,000 20,000,000
    ID_INDODANA (IDR) 10,000 25,000,000
    ID_ATOME (IDR) 50,000 6,000,000
    PH_BILLEASE (PHP) 50 150,000
    PH_CASHALO (PHP) 1,500 8,000
    PH_ATOME (PHP) 100 70,000
    order_items
    wajib
    array Array objek yang mendeskripsikan item-item yang dibeli menggunakan PayLater

    Parameter objek
    Key Value
    type
    wajib
    string Tipe item

    DIGITAL_PRODUCT, PHYSICAL_PRODUCT DIGITAL_SERVICE, PHYSICAL_SERVICE,FEE,DISCOUNT (Atome tidak menerima DISCOUNT)
    reference_id
    wajib
    string Pengidentifikasi merchant untuk item tertentu (ie. SKU, kode promosi, dll.)

    Format Special dan alphanumeric
    Max length 255 karakter
    name
    wajib
    string Nama item

    Format Special dan alphanumeric
    Max length 255 karakter
    net_unit_amount
    wajib
    number Jumlah net untuk di-charge per unit, gunakan nominal negatif untuk DISCOUNT (e.g. -1000000)
    quantity
    wajib
    number Jumlah unit item ini pada basket

    Min 1
    url
    wajib
    string URL item

    Wajib HTTPS atau HTTP
    category
    wajib
    string Kategori merchant untuk item

    Format Special dan alphanumeric
    Max length 255 karakter
    subcategory
    opsional
    string Subcategory merchant untuk item

    Format Special dan alphanumeric
    Max length 255 karakter
    description
    opsional
    string Deskripsi item

    Format Special dan alphanumeric
    Max length 255 karakter
    metadata
    opsional
    object Objek tambahan yang dapat digunakan untuk atribut tambahan pada item

    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 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
    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
    Key Value
    downpayment_amount number Jumlah nominal uang muka.
    installment_amount number Jumlah nominal yang harus dibayar pada setiap periode tagihan cicilan.
    interest_rate number Suku bunga yang akan ditagih

    Contoh: 0.2 untuk dua dua puluh persen
    total_amount number Jumlah total cicilan yang akan dibayar oleh customer Anda. Ini merupakan jumlah dari uang muka, uang cicilan, dan biaya lain oleh penyedia PayLater
    interval string Frekuensi penagihan invoice pembayaran berulang

    DAY, WEEK, MONTH
    interval_count number Jumlah interval (yang ditentukan pada properti interval) diantara cicilan.

    Contoh: interval=MONTH dan interval_count=3 customer Anda akan ditagihkan setiap 3 bulan sekali
    total_recurrence number Total berapa kali Anda akan menagih customer Anda dengan interval yang sudah ditentukan
    description string Nama atau deskripsi opsi cicilan sebagaimana yang diberikan oleh penyedia PayLater
    created string Timestamp ISO 8601 untuk pembuatan objek plan
    Format: 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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta.
    API_VALIDATION_ERROR
    400
    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_ERROR
    400
    Invalid URL
    url URL harus valid
    INVALID_CUSTOMER_ID
    400
    Parameter yang hilang atau tidak valid pada customer_id
    UNSUPPORTED_CURRENCY
    400
    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_KEY
    401
    Kunci API tidak memiliki izin untuk layanan API ini
    INVALID_MERCHANT_CREDENTIALS
    401
    Terdapat error dengan kredensial merchant yang disediakan oleh PayLater partner. Silakan hubungi customer support Xendit untuk pemyelesaian
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request
    CHANNEL_NOT_ACTIVATED
    403
    API key tidak diperbolehkan untuk melakukan request
    DATA_NOT_FOUND
    404
    Customer ID tidak valid. Silakan periksa ulang ID atau membuat ID menggunakan Customer API.
    SERVER_ERROR
    500
    Error tidak terduga telah terjadi. Team kami telah diberitahukan untuk melakukan penyelesaian isu
    CHANNEL_UNAVAILABLE
    503
    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 transaksi

    Format Special dan alphanumeric
    Panjang 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
    opsional
    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 charge
    PENDING, SUCCEEDED, FAILED

    Status of charge request
    Key Value
    PENDING Charge menunggu pembayaran oleh pelanggan Anda
    SUCCEEDED Charge sukses dibayar oleh pelanggan Anda
    FAILED Charge gagal dibayar oleh pelanggan Anda
    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 transaksi
    Format: YYYY-MM-DDTHH:mm:ssZ
    Timezone: UTC+0
    updated string Timestamp ISO 8601 untuk pembaharuan objek terbaru
    Format: YYYY-MM-DDTHH:mm:ssZ
    Timezone: UTC+0
    actions object Checkout URL milik Partner Paylater di mana end-user akan diarahkan untuk menyelesaikan pembayaran

    Jenis-jenis URL redirections
    Key Value
    desktop_web_checkout_url string URL yang dibuat untuk web checkout yang diakses menggunakan desktop
    mobile_web_checkout_url string URL yang dibuat untuk web checkout yang diakses menggunakan perangkat mobile
    mobile_deeplink_checkout_url string URL yang dibuat untuk deeplink checkout pada perangkat mobile (langsung masuk ke aplikasi milik Paylater Partner untuk konfirmasi pembayaran)
    expires_at string Timestamp ISO 8601 untuk pembaharuan objek terbaru
    Format: 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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta
    API_VALIDATION_ERROR
    400
    Unsupported Checkout Type
    PayLater Partner tidak dapat menggunakan checkout_method yang diminta
    INVALID_API_KEY
    401
    API key tidak memiliki izin untuk layanan API ini
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request ini
    PAYLATER_PLAN_DATA_NOT_FOUND
    404
    PayLater Plan ID tidak valid. Mohon memeriksa ulang ID atau membuat ID menggunakan API Paylater Plans
    SERVER_ERROR
    500
    Error tidak terduga telah terjadi. Tim kami telah diberitahu untuk melakukan penyelesaian isu
    CHANNEL_UNAVAILABLE
    503
    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
    Parameter Deskripsi
    id string Pengidentifikasi unik untuk transaksi charge request.

    Selalu 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 diberikan merchant untuk transaksi
    channel_code string Kode channel code untuk penyedia PayLater
    checkout_method string Metode checkout yang didukung: ONE_TIME_PAYMENT
    currency string Kode mata uang ISO 4217 untuk transaksi PayLater
    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 sukses dilakukan refund kepada end user
    order_items array Himpunan objek yang mendeskripsikan item-item yang dibeli menggunakan PayLater
    success_redirect_url string URL di mana customer akan diarahkan jika transaksi berhasil
    failure_redirect_url string URL di mana customer akan diarahkan jika transaksi gagal
    status string Status PayLater charge
    SUCCEEDED, FAILED
    created string Timestamp ISO 8601 untuk pembuatan transaksi
    updated string Timestamp ISO 8601 untuk pembaharuan objek terbaru
    actions object URL checkout milik PayLater Partner di mana customer akan diarahkan untuk menyelesaikan pembayaran
    expires_at string Timestamp ISO 8601 untuk pembaharuan objek terbaru
    callback_url string URL callback default pada dashboard di mana status charge akan diberikan notifikasi
    payment_method_id string Payment method ID dari sumber dana end-customer

    Dibutuhkan jika checkout_method = TOKENIZED_PAYMENT (belum didukung)
    voided_at string Timestamp ISO 8601 untuk pembatalan transaksi
    metadata object Objek dengan informasi tambahan yang dapat digunakan oleh user.
    refunds array Himpunan objek refund (hanya menampilkan refund dengan status SUCCEEDED).

    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 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 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 charge
    PENDING, SUCCEEDED, FAILED
    created string Timestamp ISO 8601 untuk pembuatan transaksi
    Format: YYYY-MM-DDTHH:mm:ssZ
    Timezone: UTC+0
    updated string Timestamp ISO 8601 untuk pembaharuan objek terbaru
    Format: 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 terbaru
    Format: 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 transaksi
    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 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_ERROR
    400
    Charge ID tidak sesuai dengan format plc_UUID
    INVALID_API_KEY
    401
    API key tidak memiliki izin untuk layanan API ini
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperbolehkan untuk melakukan request ini
    DATA_NOT_FOUND
    404
    Sumber charge tidak ditemukan. Mohon memeriksa ulang query Anda
    SERVER_ERROR
    500
    Error tidak terduga telah terjadi. Tim kami telah diberitahu untuk melakukan 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 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 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_ERROR
    400
    Terdapat input yang tidak valid pada salah satu field yang diminta.
    REFUND_NOT_SUPPORTED
    400
    Request refund gagal karena refund tidak tersedia pada penyedia Paylater.
    PARTIAL_REFUND_NOT_SUPPORTED
    400
    Request refund gagal karena refudn sebagian tidak tersedia pada penyedia Paylater.
    INSUFFICIENT_BALANCE
    400
    Saldo Xendit tidak cukup untuk melakukan refund. Silakan top up saldo Xendit Anda atau menunggu transaksi lainnya settled.
    MAXIMUM_REFUND_AMOUNT_REACHED
    400
    Refund request gagal karena refund dengan nominal penuh telah dilakukan sebelumnya.
    INVALID_API_KEY
    401
    Format API key tidak sah
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi.
    SERVER_ERROR
    500
    Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera.
    CHANNEL_UNAVAILABLE
    503
    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_KEY
    401
    Format API key tidak sah
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi
    SERVER_ERROR
    500
    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
    Key Nilai
    id string Pengidentifikasi unik dari transaksi refund.
    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 UTC+0 dalam ISO 8601 untuk request refund
    updated string Timestamp UTC+0 dalam ISO 8601 untuk objek refund request terbaru
    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_KEY
    401
    Format API key tidak sah
    REQUEST_FORBIDDEN_ERROR
    403
    API key tidak diperkenankan untuk melakukan request
    DATA_NOT_FOUND
    404
    Sumber data tidak ditemukan. Silakan cek query Anda lagi
    SERVER_ERROR
    500
    Eror tidak terduga terjadi. Team kami telah diinformasikan dan akan melakukan perbaikan segera

    QR Codes

    Pembayaran QR codes memungkinkan Anda untuk menerima pembayaran langsung dari saldo aplikasi mobile banking atau saldo eWallet milik customer. Di Indonesia, Anda dapat menerima pembayaran dari penyedia layanan manapun yang terkoneksi dengan jaringan QRIS (misal, OVO, Gopay, Dana, LinkAja, BCA, Shopeepay, lihat lebih banyak).

    Buat Kode QR

    Endpoint: Buat Kode QR

    POST https://api.xendit.co/qr_codes

    Parameter Request

    Contoh: Pembuatan QRIS QR Code

    curl https://api.xendit.co/qr_codes -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==: \
       -d external_id='testing_id_123' \
       -d type='DYNAMIC' \
       -d callback_url='https://yourwebsite.com/callback'\
       -d nominal=1500
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://api.xendit.co/qr_codes');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "external_id=testing_id_123&type=DYNAMIC&callback_url=https://yourwebsite.com/callback&nominal=1500");
    curl_setopt($ch, CURLOPT_USERPWD, 'xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==' . ':' . '');
    
    $headers = array();
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    const x = new require("xendit-node")({
      secretKey:
        "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
    });
    
    const { QrCode } = x;
    const qrcodeSpecificOptions = {};
    const q = new QrCode(qrcodeSpecificOptions);
    
    const resp = await q.createCode({
      externalID: "testing_id_123",
      type: "DYNAMIC",
      callbackURL: "https://yourwebsite.com/callback",
      amount: 1500,
    });
    console.log(resp);
    from xendit import Xendit, QRCodeType
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    QRCode = xendit_instance.QRCode
    
    qrcode = QRCode.create(
        external_id="qrcode-id-1594794038",
        type=QRCodeType.DYNAMIC,
        callback_url="https://webhook.site",
        amount=4000,
    )
    print(qrcode)
    Parameter Header Tipe Deskripsi
    for-user-id
    optional
    string Sub-account user-id untuk transaksi ini.

    Header ini hanya digunakan apabila Anda memiliki akses Xenplatform. Silakan akses xenPlatform untuk informasi lebih lengkap.
    with-fee-rule
    optional
    string ID Fee Rule yang ingin Anda aplikasikan ke transaksi yang dilakukan.

    Catatan: Jika Anda memasukkan parameter ini, kami akan mengembalikan fee_rule_id dan fee_id pada header response API. Hanya dapat digunakan untuk jenis QR Code dynamic.

    Header ini hanya dapat digunakan untuk akun yang sudah memiliki xenPlatform. Lihat xenPlatform untuk informasi lebih lanjut.
    Parameter Body Tipe Deskripsi
    external_id
    wajib
    string ID transaksi unik yang dibuat oleh merchant
    Catatan: ID transaksi harus unik
    type
    wajib
    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
    callback_url
    wajib
    string URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh customer
    amount
    opsional
    number Nilai pembayaran yang tercantum pada QR Code, customer hanya dapat melakukan pembayaran sesuai dengan nilai yang tertera setelah pemindaian QR Code. Untuk QR Code STATIC, parameter nominal akan diabaikan.
    Catatan: Minimum nominal adalah Rp 1,500
    Catatan: Maximum nominal adalah Rp 10,000,000
    metadata
    opsional
    object Objek dari informasi tambahan yang mungkin digunakan oleh user.
    Anda dapat menambahkan hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.

    Parameter Respon

    Contoh: Respon Sukses Pembuatan QRIS QR Code API

    {
        "id": "qr_8182837te-87st-49ing-8696-1239bd4d759c",
        "external_id": "testing_id_123",
        "nominal": 1500,
        "qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
        "callback_url": "https://yourwebsite.com/callback",
        "type": "DYNAMIC",
        "status": "ACTIVE",
        "created": "2020-01-08T18:18:18.661Z",
        "updated": "2020-01-08T18:18:18.661Z",
        "metadata": {
            "branch_code": "senayan_372",
        }
    }
    Parameter Tipe Deskripsi
    id
    wajib
    string Pengidentifikasi unik dari sebuah transaksi
    external_id
    wajib
    string Pengidentifikasi unik yang secara spesifik dibuat oleh merchant untuk pembuatan QR Code
    amount
    wajib
    number nominal yang tertera pada request
    Catatan: nilai akan NULL jika tipe yang dimaksud adalah STATIC
    qr_string
    wajib
    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)
    callback_url
    wajib
    string URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh customer
    type
    wajib
    string DYNAMIC atau STATIC
    status
    wajib
    string ACTIVE (QR code dapat dibayar) atau INACTIVE (DYNAMIC QR code telah dibayar )
    created
    wajib
    string Timestamp ISO 8601 ketika QR Code telah dibuat when (dalam UTC)
    updated
    wajib
    string Timestamp ISO 8601 ketika QR code telah diperbaharui (dalam UTC)
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge.
    Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.

    Kode Error

    Contoh: Create QRIS QR Code API Error Respon Error API Pembuatan QRIS Code

    {
        "error_code": "API_VALIDATION_ERROR",
        "message": "nominal must be within range [1500, 10000000]"
    }
    Kode Error Description
    DUPLICATE_ERROR
    409
    Pembayaran dengan external_id yang sama telah dibuat sebelumnya
    DATA_NOT_FOUND
    409
    Merchant QRIS tidak ditemukan. Silakan hubungi tim customer success kami untuk aktivasi.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki ijin untuk melakukan request . Silakan atur ijin yang sesuai untuk API key yang Anda gunakan. Pelajari selengkapnya here
    API_VALIDATION_ERROR
    400
    Terdapat input yang salah pada salah satu parameter wajib pada request

    Cek Kode QR

    GET https://api.xendit.co/qr_codes/:external_id

    Parameter Request

    Contoh: Get QR Code by external_id

    curl https://api.xendit.co/qr_codes/external_id -X GET \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==: \
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://api.xendit.co/qr_codes/external_id');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    
    curl_setopt($ch, CURLOPT_USERPWD, 'xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==' . ':' . '');
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    const x = new require("xendit-node")({
      secretKey:
        "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
    });
    
    const { QrCode } = x;
    const qrcodeSpecificOptions = {};
    const q = new QrCode(qrcodeSpecificOptions);
    
    const resp = await q.getCode({
      externalID: "testing_id_123",
    });
    console.log(resp);
    from xendit import Xendit
    
    api_key = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
    xendit_instance = Xendit(api_key=api_key)
    QRCode = xendit_instance.QRCode
    
    qrcode = QRCode.get_by_ext_id(
        external_id="qrcode-id-1594794038",
    )
    print(qrcode)
    Parameter Header Tipe Deskripsi
    for-user-id
    optional
    string User-id yang Anda inginkan untuk membuat transaksi.

    Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.

    Parameter Path Tipe Deskripsi
    external_id
    wajib
    string ID transaksi unik yang dibuat oleh merchant

    Parameter Respon

    Contoh: Respon Sukses Get QR Code menggunakan external_id

    {
        "id": "qr_8182837te-87st-49ing-8696-1239bd4d759c",
        "external_id": "testing_id_123",
        "nominal": 1500,
        "qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
        "callback_url": "https://yourwebsite.com/callback",
        "type": "DYNAMIC",
        "status": "ACTIVE",
        "created": "2020-01-08T18:18:18.661Z",
        "updated": "2020-01-08T18:18:18.661Z",
        "metadata": {
            "branch_code": "senayan_372",
        }
    }
    Parameter Tipe Deskripsi
    id
    wajib
    string Pengidentifikasi unik dari sebuah transaksi
    external_id
    wajib
    string Pengidentifikasi unik yang secara spesifik dibuat oleh merchant untuk pembuatan QR Code
    nominal
    wajib
    number nominal yang tertera pada request
    Catatan: nilai akan NULL jika tipe yang dimaksud adalah STATIC
    qr_string
    wajib
    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)
    callback_url
    wajib
    string URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh customer
    type
    wajib
    string DYNAMIC atau STATIC
    status
    wajib
    string ACTIVE (QR code dapat dibayar) atau INACTIVE (DYNAMIC QR code telah dibayar)
    created
    wajib
    string Timestamp ISO 8601 ketika QR Code telah dibuat when (dalam UTC)
    updated
    wajib
    string Timestamp ISO 8601 ketika QR code telah diperbaharui (dalam UTC)
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge.
    Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.

    Kode Error

    Contoh: Create QRIS QR Code API Error Respon

    {
        "error_code": "DATA_NOT_FOUND",
        "message": "QR code with external_id testing_id_123 not found"
    }
    Kode Error Deskripsi
    DATA_NOT_FOUND
    404
    QR code dengan spesifik external_id tidak ditemukan.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki ijin untuk melakukan request . Silakan atur ijin yang sesuai untuk API key yang Anda gunakan. Pelajari selengkapnya here

    Daftar Pembayaran

    GET https://api.xendit.co/qr_codes/payments?external_id={external_id}&from={created}&to={created}&limit={number}

    Get Array of Payments menggunakan external_id

    Contoh: Get Array of Payments menggunakan external_id

    curl 'https://api.xendit.co/qr_codes/payments?external_id=testing_qr&from=2021-01-04T08:09:30.000Z&to=2021-01-04T08:22:29.000Z&limit=2' -X GET \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==: \
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://api.xendit.co/qr_codes/payments?external_id=testing_qr&from=2021-01-04T08:09:30.000Z&to=2021-01-04T08:22:29.000Z&limit=2');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    
    curl_setopt($ch, CURLOPT_USERPWD, 'xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==' . ':' . '');
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    const x = new require("xendit-node")({
      secretKey:
        "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
    });
    
    const { QrCode } = x;
    const qrcodeSpecificOptions = {};
    const q = new QrCode(qrcodeSpecificOptions);
    
    const resp = await q.getPayments({
      externalID: "testing_id_123",
      from: "2021-01-04T08:09:30.000Z",
      to: "2021-02-04T07:44:20.332Z",
      limit: 10,
    });
    console.log(resp);
    Path Parameter Type Description
    external_id
    wajib
    string ID transaksi unik dari merchant untuk membuat QR code
    limit
    optional
    number Default = 10. Jumlah transaksi pembayaran yang dikembalikan pada response
    from
    optional
    string Timestamp awal untuk filter berdasarkan waktu menggunakancreated, timestamp seharusnya lebih awal dari parameter to
    to
    optional
    string Timestamp akhir untuk filter berdasarkan waktu menggunakan created, timestamp harus lebih dari parameter from

    Respon Get Array of Payments menggunakan external_id

    Contoh: Respon Sukses Get Array of Payments menggunakan external_id

    [
      {
        "id": "qrpy_8182837te-87st-49ing-8696-1239bd4d759c",
        "amount": 1500,
        "created": "2020-01-08T18:18:18.857Z",
        "qr_code": {
          "id": "qr_8182837te-87st-49ing-8696-1239bd4d759c",
          "external_id": "testing_id_123",
          "qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
          "type": "DYNAMIC",
          "metadata": {
            "branch_code": "senayan_372"
          }
        },
        "status": "COMPLETED",
        "payment_detail": {
          "receipt_id": "120318666",
          "source": "GOPAY"
        }
      },
      {
        "id": "qrpy_8182837te-87st-49ing-8696-1229bd22222",
        "amount": 1500,
        "created": "2020-01-08T18:18:20.857Z",
        "qr_code": {
          "id": "qr_8182837te-87st-49ing-8696-1239bd4d759c",
          "external_id": "testing_id_123",
          "qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
          "type": "DYNAMIC",
          "metadata": {
            "branch_code": "senayan_372"
          }
        },
        "status": "COMPLETED",
        "payment_detail": {
          "receipt_id": "000111666",
          "source": "GOPAY"
        }
      }
    ]
    Parameter Deskripsi
    id
    wajib
    string Pengidentifikasi unik dari sebuah transaksi
    nominal
    wajib
    number nominal yang dibayarkan oleh customer
    created
    wajib
    string Timestamp ISO 8601 ketika QR Code telah dibayarkan (dalam UTC)
    qr_code
    wajib
    object Objek QR code yang diasosiasikan dengan pembayaran QR code
    parameter QR code
    Key Value
    id
    wajib
    string Pengidentifikasi unik untuk pembuatan transaksi QR code
    external_id
    wajib
    string Pengidentifikasi unik untuk request pembayaran spesifik dari merchant
    qr_string
    wajib
    string QR string yang akan ditampilkan untuk user
    type
    wajib
    string Tipe QR code - DYNAMIC atau STATIC
    metadata
    opsional
    object Objek yang ditentukan pengguna dengan properti dan nilai JSON yang diteruskan selama pembuatan charge.
    Objek dapat terdiri hingga 50 keys, dengan masing-masing key hingga 40 karakter dan nilai hingga 500 karakter.
    status
    wajib
    string Status pembayaran. Nilai yang mungkin muncul: COMPLETED
    payment_detail
    wajib
    object Berisi informasi mengenai pembayaran yang telah dibagikan di jaringan pembayaran
    payment_detail fields
    Key Value
    receipt_id
    wajib
    string Request Reference Number (RRN) yang telah dibagikan di jaringan pembayaran
    source
    wajib
    enum Sumber pembayaran yang menerima dana end user dalam penyelesaian pembayaran (e.g. BCA, OVO, GOPAY)

    API Respon Eror

    Contoh: Respon Error API Get Array of Payments menggunakan external_id

    {
        "error_code": "DATA_NOT_FOUND",
        "message": "QR code with external_id testing_id_123 not found"
    }
    Kode Eror Deskripsi
    DATA_NOT_FOUND
    404
    QR code external_id spesifik tersebut tidak ditemukan.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki ijin untuk melakukan request . Silakan atur ijin yang sesuai untuk API key yang Anda gunakan. Pelajari selengkapnya here

    Simulasi Pembayaran

    Parameter Request

    Contoh: Simulasi pembayaran pada mode test

    curl https://api.xendit.co/qr_codes/:external_id/payments/simulate -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==: \
       -d nominal=1500
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://api.xendit.co/qr_codes/:external_id/payments/simulate');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "nominal=1500");
    curl_setopt($ch, CURLOPT_USERPWD, 'xnd_development_O46JfOtygef9kMNsK+ZPGT+TeStIngw3Dn+R1k+2fT/7GlCAN3jg==' . ':' . '');
    
    $headers = array();
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close($ch);
    const x = new require("xendit-node")({
      secretKey:
        "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==",
    });
    
    const { QrCode } = x;
    const qrcodeSpecificOptions = {};
    const q = new QrCode(qrcodeSpecificOptions);
    
    const resp = await q.simulate({
      externalID: "testing_id_123",
    });
    console.log(resp);
    
    Parameter Header Tipe Deskripsi
    for-user-id
    optional
    string User-id yang Anda inginkan untuk membuat transaksi.

    Header ini hanya bisa digunakan jika Anda memiliki akses ke xenPlatform. Silahkan buka xenPlatform untuk informasi lebih lanjut.

    Parameter Path Tipe Deskripsi
    external_id
    wajib
    string Merchant provided unique transaction ID used to create QR code
    Parameter Body Tipe Deskripsi
    nominal
    optional
    number The payment value for simulation in callback to test mode endpoint
    Catatan: Min nominal is Rp 1,500
    Catatan: Max nominal is Rp 10,000,000

    Parameter Respon

    Contoh: Respon Sukses Simulasi Pembayaran (mode test)

    {
      "id": "qrpy_8182837te-87st-49ing-8696-1239bd4d759c",
      "nominal": 1500,
      "created": "2020-01-08T18:18:18.857Z",
      "qr_code": {
        "id": "qr_8182837te-87st-49ing-8696-1239bd4d759c",
        "external_id": "testing_id_123",
        "qr_string": "0002010102##########CO.XENDIT.WWW011893600#######14220002152#####414220010303TTT####015CO.XENDIT.WWW02180000000000000000000TTT52045######ID5911XenditQRIS6007Jakarta6105121606##########3k1mOnF73h11111111#3k1mOnF73h6v53033605401163040BDB",
        "type": "DYNAMIC",
        "metadata": {
            "branch_code": "senayan_372",
        }
      },
      "status": "COMPLETED"
    }
    Parameter Tipe Deskripsi
    id
    wajib
    string Pengidentifikasi unik dari sebuah transaksi
    nominal
    wajib
    number nominal yang dibayarkan oleh customer
    Catatan: nilai akan NULL jika tipe yang dimaksud adalah STATIC
    created
    wajib
    string Timestamp ISO 8601 ketika QR code telah dibayarkan (dalam UTC)
    qr_code
    wajib
    object Objeck QR code yang diaso