NAV undefined
undefined
bash php javascript

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.

Belajar API kami menggunakan Postman

Untuk mempermudah proses familiarisasi dengan API kami, kami menyediakan sebuah koleksi Postman yang berisi contoh dari seluruh API yang Xendit pakai. Silakan lihat di Panduan Postman untuk belajar 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.

Versi

Deskripsi

Contoh penggunaan versi

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'

API versi terbaru kami tidak kompatibel dengan versi sebelumnya, dan setiap perubahan pada API, kami menambahkan versi baru dengan format tanggal. Versi saat ini adalah 2020-02-01. Untuk membuat versi API pada request tertentu, masukkan header x-api-version pada request anda.

Errors

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

Error code Meaning
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

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
  require 'vendor/autoload.php';

  $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';

  $xenditPHPClient = new XenditClient\XenditPHPClient($options);

  $response = $xenditPHPClient->getBalance();
  print_r($response);
?>
const x = 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);

Permintaan pengecekan saldo (Money-out read permission)

Pengecekan saldo memungkinkan Anda untuk mengetahui saldo Kas Anda dan saldo Holding Anda.

Header Parameter 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 Deskripsi
account_type
optional
default: CASH
string Jenis akun yang dipilih (CASH atau HOLDING).

Respon Permintaan Pengecekan Saldo

Contoh Respon Permintaan Pengecekan Saldo

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

Kartu Kredit

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

{        
    "amount": "10000",        
    "card_number": "4000000000000002",        
    "card_exp_month": "12",        
    "card_exp_year": "2017",        
    "card_cvn": "123",
    "is_multiple_use": false,
    "should_authenticate": true
}

Contoh Respon Proses Tokenisasi

{
    "id": "586f0ba2ab70de5d2b409e0d",
    "authentication_id": "598c3e5a8c62078a5108f661",
    "masked_card_number": "400000XXXXXX0002",
    "status": "IN_REVIEW",
    "payer_authentication_url": "https://api.xendit.co/credit_card_tokens/586f0ba2ab70de5d2b409e0d/authentication_redirect?api_key=xnd_public_development_key"
}

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.

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.

Permintaan Proses Tokenisasi (Money-in write permission)

Parameter Deskripsi
amount
optional
string Jumlah biaya yang ingin dikenakan. Wajib diiisi untuk Token Sekali Pakai untuk proses otentikasi
card_number
required
string Nomor kartu kredit
card_exp_month
required
string Bulan kedaluwarsa
card_exp_year
required
string Tahun kedaluwarsa
card_cvn
optional
string Kode CVN/CVC kartu
Catatan: Hanya digunakan untuk Token Sekali Pakai
is_multiple_use
optional
default: false
boolean Penentuan apakah token akan digunakan berulang kali atau tidak
should_authenticate
optional
default: true
boolean Penentuan apakah proses tokenisasi akan digabung dengan proses otentikasi atau tidak
xenditResponseHandler
required
function Fungsi penanganan respon yang dipanggil ketika proses tokenisasi dilakukan, yang digunakan untuk menerima pesan kesalahan dan respon tokenisasi

Respon Proses Tokenisasi

Parameter Deskripsi
id
required
string ID dari token tersebut. ID token ini akan digunakan kemudian untuk melakukan proses charge pada kartu kredit.
authentication_id
optional
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 dari proses Tokenisasi. Lihat Status-status pada proses 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.

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

Kesalahan pada Tokenisasi

Kode Kesalahan 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.
CREDIT_CARD_DATA_ERROR
400
Data yang salah dikirimkan ke prosesor kartu kredit
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.

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"
}

Permintaan Otentikasi (Money-in write permission)

Parameter Deskripsi
amount
required
string Jumlah biaya yang ingin diotentikasi.
token_id
required
string Token untuk otentikasi.
xenditResponseHandler
required
function Penanganan respon, dipanggil setelah percobaan otentikasi untuk menangani kesalahan dan respon.

Respon Otentikasi

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

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/598d602b51e0870d44c6153d/auth_reversal \
  -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
  -H 'content-type: application/json' \
  -d '{
      "external_id": "reverse-auth-1502436817"
    }'

Contoh Respon Pembuatan Reverse Authorization

{
    "created": "2020-01-11T07:33:14.442Z",
    "status": "SUCCEEDED",
    "business_id": "5850e55d8d9791bd40096364",
    "amount": 5000,
    "external_id": "reverse-auth-1502436817",
    "id": "598d5dba51e0870d44c61530",
    "credit_card_charge_id": "598d602b51e0870d44c6153d"
}

Permintaan Pengembalian Otorisasi (Money-in write permission)

API ini dapat melakukan pengembalian transaksi yang sudah memiliki status AUTHORIZED dan belum dilakukan CAPTURED

Parameter yang dibutuhkan untuk melakukan pengembalian Otorisasi

Parameter Deskripsi
external_id
required
string Referensi untuk mengidentifikasi permintaan dari pelanggan.

Respon Pengembalian Otorisasi

Parameter Deskripsi
created
required
string Cap waktu ISO yang mencatat kapan charge tersebut dibuat reverse authorization.
status
required
string Reverse Authorization status. Lihat Status-status pada reverse authorization.
business_id
required
string ID akun bisnis Xendit Anda.
amount
required
number Nominal uang yang dikembalikan untuk permintaan reverse authorization ini.
external_id
required
string Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter.
id
required
string ID dari reverse authorization.

Status status pada Reverse Authorization

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

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": 15000,
      "authentication_id":"598d5d0f51e0870d44c61535",
      "card_cvn":"123",
      "descriptor": "My new store",
      "currency": "IDR",
      "mid_label": "IDR_MID"
    }'
<?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 = 17000;
  $authentication_id = '58e2097218b815f555c8a526';

  $response = $xenditPHPClient->captureCreditCardPayment($external_id, $token_id, $amount);
  print_r($response);
?>
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

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

const resp = await card.createCharge({
  externalID: 'sample-external-id-1475459775872',
  tokenID: 'sample-token-id-1475459775872',
  amount: 17000,
  authID: '58e2097218b815f555c8a526',
});
console.log(resp);

Contoh Respon Pembuatan Charge

{
    "created": "2020-01-11T07:33:14.442Z",
    "status": "CAPTURED",
    "business_id": "5850e55d8d9791bd40096364",
    "authorized_amount": 15000,
    "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": 15000,
    "id": "598d5dba51e0870d44c61539",
    "descriptor": "My new store",
    "mid_label": "IDR_MID"
}

Contoh Respon Otorisasi

{
    "created": "2020-01-11T07:43:39.563Z",
    "status": "AUTHORIZED",
    "business_id": "5850e55d8d9791bd40096364",
    "authorized_amount": 15000,
    "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",
    "id": "598d602b51e0870d44c6153d"
}

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

Permintaan Pembuatan Charge (Money-in write permission)

Parameter 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.
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: Otentikasi akan kedaluwarsa dalam 7 hari.
descriptor
optional
string Deskriptor khusus untuk menentukan identitas merchant.
currency
optional
string Mata uang yang akan digunakan saat melakukan transaksi. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan IDR
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 (routing_priority 1)

Respon Pembuatan Charge

Parameter Deskripsi
created
required
string Cap waktu ISO yang mencatat kapan charge tersebut dibuat Charge.
status
required
string Charge status. Lihat Status-status pada 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. Maksimal 64 karakter.
merchant_id
required
string Merchant ID yang digunakan untuk melakukan pemrosesan kartu kredit dengan bank.
merchant_reference_code
required
string Kode merchant yang digunakan untuk melakukan rekonsiliasi transaksi dengan bank.
card_type
required
string Tipe kartu (KREDIT atau DEBIT)
masked_card_number
required
string 6 angka pertama dan 4 angka terakhir pada kartu kredit.
card_brand
required
string Merek kartu (VISA, MASTERCARD,...)
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.
id
required
string ID dari charge.
failure_reason
optional
string Bila status charge adalah FAILED, lihat Status-status pada Charge untuk keterangan lebih lanjut.
descriptor
optional
string Deskriptor khusus untuk menentukan identitas merchant.
currency
optional
string Mata uang yang akan digunakan saat melakukan transaksi. Jika tidak disertakan bersamaan dengan request, maka akan diisi dengan IDR
mid_label
optional
default: true*
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 (routing_priority 1)

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

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.

Kesalahan pada Pembuatan Charge

Kode Kesalahan 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

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
1 Otentikasi tidak lengkap (MasterCard)
2 Otentikasi Berhasil (MasterCard)
5 Otentikasi Berhasil (Visa, AMEX, JCB)
6 Percobaan Otentikasi (Visa, AMEX, JCB)
7 Tidak bisa diotentikasi

Capture Charge

Definisi: Capture Charge

POST https://api.xendit.co/credit_card_charges/:credit_card_charge_id/capture
const x = 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)

Contoh Permintaan Capture Charge

curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e/capture \
    -X POST \
    -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==: \
    -d amount=15000

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

Permintaan Capture Charge (Money-in write permission)

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

Kesalahan Capture Charge

Kode Kesalahan 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

Mendapatkan Charge

Definisi: Mendapatkan Charge

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

Contoh Permintaan Mendapatkan Charge

curl https://api.xendit.co/credit_card_charges/5877255293ff67900c6aa64e \
    -X GET \
    -u xnd_development_OYiAfOR3gbOunJU4frcaHmLCYNLy8oQuknDm+R1r9G3S/byhDAB+gA==:
const x = 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);

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

Permintaan Mendapatkan Charge (Money-in read permission)

Parameter Deskripsi
credit_card_charge_id
required
string ID charge yang sudah diotorisasi

Kesalahan Dalam Mendapatkan Charge

Kode Kesalahan 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

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
  require 'vendor/autoload.php';

  $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';

  $xenditPHPClient = new XenditClient\XenditPHPClient($options);

  $credit_card_charge_id = '5877255293ff67900c6aa64e';
  $amount = 15000;
  $external_id = 'unique-external-id';

  $response = $xenditPHPClient->issueCreditCardRefund($credit_card_charge_id, $amount, $external_id);
  print_r($response);
?>
const x = 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);

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.

Permintaan Pembuatan Refund (Money-in write permission)

Header 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”
Parameter Deskripsi
amount
required
string Nominal uang yang akan di-refund.
external_id
required
string Pengindentifikasi unik sesuai dengan pilihan Anda. Maksimal 64 karakter.

Respon Pembuatan Refund

Parameter 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.
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 Kesalahan Dalam Pembuatan Refund

Kode Kesalahan 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

eWallet

Kanal pembayaran ewallet memungkinkan Anda untuk menerima pembayaran dari nasabah melalui penyedia jasa ewallet terbesar di Indonesia seperti OVO, DANA, dan LinkAja.

Pembuatan Pembayaran eWallet

Endpoint: Pembuatan Pembayaran Ewallet

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

Versi

Anda sedang melihat API versi 2020-02-01. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-02-01 (terbaru) Berisi flow yang asynchronous dengan callback dari pembuatan pembayaran OVO.
2019-02-04 Mengembalikan respon secara langsung tanpa adanya callback.

OVO

Request Pembuatan Pembayaran Ewallet

Contoh: Request Pembuatan Pembayaran Ewallet

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'
<?php
  Xendit::setApiKey('xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==');

  $ovoParams = [
    'external_id' => 'demo_' . time(),
    'amount' => 32000,
    'phone' => '081298498259',
    'ewallet_type' => 'OVO'
  ];

  $createOvo = \Xendit\EWallets::create($ovoParams);
  var_dump($createOvo);
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);

const resp = await ew.createPayment({
  externalID: 'ovo-ewallet',
  amount: 1000,
  phone: '08123123123',
  ewalletType: EWallet.Type.OVO,
});
console.log(resp);
Parameter Header Deskripsi
X-API-VERSION
optional
string Versi API dalam semantik tanggal (contoh: 2020-02-01). 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. Silakan buka xenPlatform untuk informasi lebih lanjut.

Parameter Deskripsi
external_id
required
string ID yang merupakan identifikasi unik dari sistem Anda seperti nomor ponsel, surat elektronik atau ID transaksi.
Catatan: Tanda baca yang diperbolehkan: -.
Catatan: Panjang maksimum yang diperbolehkan adalah 1000 karakter.
Catatan: Harus unik untuk setiap request.
amount
required
number Nominal yang pelanggan Anda harus bayarkan.
Catatan: Nominal minimum adalah Rp 1 dan maksimum adalah Rp 10.000.000.
phone
required
string Nomor telepon dari pelanggan (contoh: 08123123123)
Catatan: Pelanggan harus memiliki akun eWallet terdaftar yang aktif dengan nomor telepon Indonesia sebelum melakukan request pembayaran. Catatan: Format nomor telepon harus "08123123123" (tidak menggunakan "+62").
ewallet_type
required
string ewallet_type harus dalam huruf besar: 'OVO'

Respon API dari Pembuatan Pembayaran Ewallet

Contoh: Respon Sukses dari Pembuatan Ewallet

{
  "business_id": "12121212",
  "external_id": "ovo-ewallet",
  "amount": 1000,
  "phone": "08123123123",
  "ewallet_type": "OVO",
  "status": "PENDING",
  "created": "2020-02-20T00:00:00.000Z",
}
Parameter Deskripsi
business_id
required
string ID yang merupakan identifikasi unik untuk merchant
external_id
required
string ID yang merupakan identifikasi unik dari setiap request
amount
required
number Nominal yang diinginkan
phone
required
string Nomor telepon pelanggan
ewallet_type
required
string Tipe dari e-wallet. Nilai: OVO
status
required
string Status pembayaran. Nilai: PENDING
created
required
string Timestamp ISO 8601 saat request pembuatan pembayaran dilakukan (dalam UTC)

Error-error pada Respon API

Contoh: Respon Error dari Request Pembuatan Pembayaran Ewallet

{
  "error_code": "USER_DID_NOT_AUTHORIZE_THE_PAYMENT",
  "message": "Payment was not authorized"
}
Kode Error Deskripsi
API_VALIDATION_ERROR
422
Ada input yang salah pada salah satu request field wajib.
DUPLICATE_PAYMENT
400
Pembayaran dengan external_id yang sama sudah pernah dilakukan sebelumnya.
EWALLET_TYPE_NOT_SUPPORTED
422
ewallet_type is yang anda minta belum tersedia saat ini
REQUEST_FORBIDDEN_ERROR
403
API key yang digunakan tidak memiliki izin untuk melakukan request. Mohon berikan izin yang sesuai terhadap API key yang digunakan. Pelajari lebih lanjut disini

DANA

Request Pembuatan Pembayaran Ewallet

Contoh: Request Pembuatan Pembayaran Ewallet

curl https://api.xendit.co/ewallets -X POST \
  -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
  -d external_id = 'dana-ewallet' \\
  -d amount = 1001 \\
  -d expiration_date = '2020-02-20T00:00:00.000Z' \\
  -d callback_url = 'https://my-shop.com/callbacks' \\
  -d redirect_url = 'https://my-shop.com/home' \\
  -d ewallet_type = 'DANA'
<?php
  Xendit::setApiKey('xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==');

  $danaParams = [
    'external_id' => 'demo_' . time(),
    'amount' => 32000,
    'phone' => '081298498259',
    'expiration_date' => '2020-02-20T00:00:00.000Z',
    'callback_url' => 'https://my-shop.com/callbacks',
    'redirect_url' => 'https://my-shop.com/home',
    'ewallet_type' => 'DANA'
  ];

  $createDana = \Xendit\EWallets::create($danaParams);
  var_dump($createDana);
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);

const resp = await ew.createPayment({
  externalID: 'dana-ewallet',
  amount: 1001,
  expirationDate: new Date(2020, 1, 20),
  callbackURL: 'https://my-shop.com/callbacks',
  redirectURL: 'https://my-shop.com/home',
  ewalletType: EWallet.Type.DANA,
});
console.log(resp);
Parameter Header 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. Silakan buka xenPlatform untuk informasi lebih lanjut.

Parameter Deskripsi
external_id
required
string ID yang merupakan identifikasi unik dari sistem Anda seperti nomor ponsel, surat elektronik atau ID transaksi. Panjang maksimum yang diperbolehkan adalah 1000 karakter.
amount
required
number Nominal yang pelanggan Anda harus bayarkan.
Catatan: Nominal minimum adalah Rp 1 dan maksimum adalah Rp 10.000.000.
expiration_date
optional
string Pelanggan anda tidak dapat menyelesaikan pembayaran melewati tanggal kedaluwarsa ini
Timezone: Zona waktu, UTC kecuali Anda tentukan (Contoh 2020-03-20T04:54:10+07:00)
Expiry: Jika tidak diisi, waktu standar yang ditetapkan adalah 24 jam.
callback_url
required
string URL untuk menerima callback setelah pembayaran dilakukan oleh pelanggan anda
redirect_url
required
string URL untuk mengarahkan pelanggan anda setelah selesai melakukan pembayaran
ewallet_type
required
string ewallet_type harus dalam huruf besar: 'DANA'

Respon API dari Pembuatan Pembayaran Ewallet

Contoh: Respon Sukses dari Pembuatan Ewallet

{
  "external_id": "dana-ewallet",
  "checkout_url": "https://dana.id/m/portal/cashier/checkout?id=5d34079d51a9ed12c78a78d3",
  "amount": 1000,
  "ewallet_type": "DANA"
}
Parameter Description
external_id
required
string ID yang merupakan identifikasi unik dari setiap request
checkout_url
required
string URL yang dibuat oleh DANA untuk customer Anda melakukan pembayaran
amount
required
number Nominal yang diinginkan
ewallet_type
required
string Tipe dari e-wallet. Nilai: DANA

Error-error pada Respon API

Contoh: Respon Error dari Request Pembuatan Pembayaran EWallet

{
  "error_code": "DUPLICATE_ERROR",
  "message": "Transaction with this external_id is already exist"
}
Error Code Deskripsi
API_VALIDATION_ERROR
422
Ada input yang salah pada salah satu request field wajib.
DUPLICATE_ERROR
400
Pembayaran dengan external_id yang sama telah dibuat sebelumnya.
EWALLET_TYPE_NOT_SUPPORTED
422
ewallet_type is yang anda minta belum tersedia saat ini
REQUEST_FORBIDDEN_ERROR
403
API key yang digunakan tidak memiliki izin untuk melakukan request. Mohon berikan izin yang sesuai terhadap API key yang digunakan. Pelajari lebih lanjut disini

LINKAJA

Request Pembuatan Pembayaran Ewallet

Contoh: Request Pembuatan Pembayaran Ewallet

curl https://api.xendit.co/ewallets -X POST \
  -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
  --header 'content-type: application/json' \
  --data '{
    "external_id": "linkaja-ewallet",
    "phone": "081245671234",
    "amount": 300000,
    "items": [
        {
            "id": "123123",
            "name": "Phone Case",
            "price": 100000,
            "quantity": 1
        },
    {
            "id": "345678",
            "name": "Powerbank",
            "price": 200000,
            "quantity": 1
        }
    ],
    "callback_url": "http://yourwebsite.com/callback",
    "redirect_url": "https://yourwebsite.com/order/123",
    "ewallet_type": "LINKAJA",
}'
<?php
  Xendit::setApiKey('xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==');

  $linkajaParams = [
    'external_id' => 'demo_' . time(),
    'amount' => 32000,
    'phone' => '081298498259',
    'items' => [
      [
        'id' => '123123',
        'name' => 'Phone Case',
        'price' => 100000,
        'quantity' => 1
      ],
      [
        'id' => '345678',
        'name' => 'Powerbank',
        'price' => 200000,
        'quantity' => 1
      ]
    ],
    'callback_url' => 'https =>//yourwebsite.com/callback',
    'redirect_url' => 'https =>//yourwebsite.com/order/123',
    'ewallet_type' => 'LINKAJA'
  ];

  $createLinkaja = \Xendit\EWallets::create($linkajaParams);
  var_dump($createLinkaja);
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);

const item = {
  id: "345678",
  name: "Powerbank",
  price: 200000,
  quantity: 1,
};
const resp = await ew.createPayment({
  externalID: 'linkaja-ewallet',
  amount: 300000,
  items: [item, item],
  callbackURL: 'https://my-shop.com/callbacks',
  redirectURL: 'https://my-shop.com/home',
  ewalletType: EWallet.Type.LINKAJA,
});
console.log(resp);
Parameter Header 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. Silakan buka xenPlatform untuk informasi lebih lanjut.

Parameter Deskripsi
external_id
required
string ID yang merupakan identifikasi unik dari sistem Anda seperti nomor ponsel, surat elektronik atau ID transaksi. Panjang maksimum yang diperbolehkan adalah 1000 karakter.
phone
required
string Nomor telepon dari pelanggan (contoh: 08123123123)
Catatan: Pelanggan harus memiliki akun eWallet terdaftar yang aktif dengan nomor telepon Indonesia sebelum melakukan request pembayaran.
amount
required
number Nominal yang pelanggan Anda harus bayarkan.
Catatan: Nominal minimum adalah Rp 100 dan maksimum adalah Rp 10.000.000
items
required
array of item object Daftar barang / produk.
item object
required
item object Informasi dari barang atau produk, harus mengandung: id [string], name [string], price [number], type [string], url [string], quantity [number]
callback_url
required
string Kami akan mengirimkan callback ke alamat ini setelah pembeli melakukan selesai melakukan pembayaran.
redirect_url
required
string Setelah pembeli melakukan pembayaran di halaman checkout mitra eWallet, mereka akan diarahkan ke redirect_url. Anda bisa memasukkan alamat dari halaman transaksi di website Anda ataupun halaman home website Anda.
ewallet_type
required
string ewallet_type harus dalam huruf besar: 'LINKAJA'

Respon API dari Pembuatan Pembayaran Ewallet

Contoh: Respon Sukses dari Pembuatan Ewallet

{
  "checkout_url": "https://ewallet-linkaja-dev.xendit.co/checkouts/b0c464ab-dcdc-4426-9255-759a9450c9d2",
  "transaction_date": "2019-10-25T08:42:54.308Z",
  "amount": 300000,
  "external_id": "linkaja-ewallet",
  "ewallet_type": "LINKAJA"
}
Parameter Description
checkout_url
required
string URL yang dibuat oleh LINKAJA untuk customer Anda melakukan pembayaran
Expiry: Waktu kadaluarsa secara otomatis adalah 5 menit, kecuali Anda tentukan.
transaction_date
required
string Timestamp ISO 8601 saat request pembuatan pembayaran dilakukan (dalam UTC)
amount
required
number Nominal yang diinginkan
external_id
required
string ID yang merupakan identifikasi unik dari setiap request
ewallet_type
required
string Tipe dari e-wallet. Nilai: LINKAJA

Error-error pada Respon API

Contoh: Respon Error dari Request Pembuatan Pembayaran Ewallet

{
  "error_code": "DUPLICATE_ERROR",
  "message": "Transaction with this external_id is already exist"
}
Error Code Deskripsi
API_VALIDATION_ERROR
400
Ada input yang salah pada salah satu request field wajib.
GENERATE_CHECKOUT_TOKEN_ERROR
422
Sebuah error terjadi dalam proses pembuatan checkout_url.
DUPLICATE_PAYMENT_ERROR
400
Pembayaran dengan external_id yang sama sudah pernah dilakukan sebelumnya.
EWALLET_TYPE_NOT_SUPPORTED
422
ewallet_type is yang anda minta belum tersedia saat ini
REQUEST_FORBIDDEN_ERROR
403
API key yang digunakan tidak memiliki izin untuk melakukan request. Mohon berikan izin yang sesuai terhadap API key yang digunakan. Pelajari lebih lanjut disini

Cek Status Pembayaran (Money-in read permission)

Endpoint: Cek Status Pembayaran Ewallet

GET https://api.xendit.co/ewallets?external_id={external_id}&ewallet_type={ewallet_type}

Endpoint ini digunakan untuk mengecek status dari sebuah pembayaran. Anda perlu memasukkan external_id dan ewallet_type.

Permintaan Pengecekan Status Pembayaran (Money-in read permission)

Contoh: Request Cek Status Pembayaran Ewallet

OVO, DANA, LINKAJA

curl 'https://api.xendit.co/ewallets?external_id=ovo-ewallet&ewallet_type=OVO' \
   -X GET \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg:
  <?php
      $url = 'https://api.xendit.co/ewallets';
      $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
      $headers = [];
      $headers[] = 'Content-Type: application/json';

      $externalId = 'ovo-ewallet';
      $ewalletType = 'OVO';

      $urlWithParams = $url . '?external_id=' . $externalId . '&ewallet_type=' . $ewalletType;

      $curl = curl_init();

      curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
      curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
      curl_setopt($curl, CURLOPT_URL, $urlWithParams);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

      $result = curl_exec($curl);
      echo $result;
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { EWallet } = x;
const ewalletSpecificOptions = {};
const ew = new EWallet(ewalletSpecificOptions);

const resp = await ew.getPayment({
  externalID: 'ovo-ewallet',
  ewalletType: EWallet.Type.OVO,
});
console.log(resp);
Parameter Deskripsi
external_id
required
string ID yang merupakan identifikasi unik dari sistem Anda seperti nomor ponsel, surat elektronik atau ID transaksi. Panjang maksimum yang diperbolehkan adalah 1000 karakter.
ewallet_type
required
string Tipe dari eWallet yang akan digunakan. Harus dalam huruf kapital.
Tipe eWallet yang tersedia: 'OVO', 'DANA', 'LINKAJA'

Contoh: Respon Sukses dari Cek Status Pembayaran

Mendapatkan status pembayaran - respon OVO

OVO

{
  "amount": 10000,
  "business_id": "business123",
  "ewallet_type": "OVO",
  "external_id": "ovo-payment",
  "status": "COMPLETED",
  "transaction_date": "2020-01-14T11:48:47.903Z"
}
Status Deskripsi
COMPLETED Transaksi pembayaran untuk external_id yang ditentukan berhasil
PENDING Transaksi pembayaran untuk external_id yang ditentukan sedang menunggu persetujuan dari pengguna OVO
FAILED Transaksi pembayaran untuk external_id yang ditentukan gagal dan tidak diselesaikan (contoh: pengguna tidak menyetujui pembayaran atau sesi pembayaran telah berakhir)

Mendapatkan status pembayaran - respon DANA

DANA

{
  "amount": 10000,
  "business_id": "business123",
  "checkout_url": "https://example.com/checkout",
  "external_id": "dana-payment-23",
  "expiration_date": "2020-03-20T04:54:10+07:00",
  "status": "PAID"
}
Status Deskripsi
PAID Transaksi pembayaran untuk external_id yang ditentukan berhasil
PENDING Transaksi pembayaran untuk external_id yang ditentukan sedang menunggu persetujuan dari pengguna DANA
FAILED Pembuatan pembayaran dengan DANA untuk external_id yang ditentukan gagal
EXPIRED URL transaksi pembayaran untuk external_id yang ditentukan telah kadaluarsa (pengguna tidak mengakses link pembayaran atau menyelesaikan proses pembayaran)

Mendapatkan status pembayaran - respon LinkAja

LINKAJA - COMPLETED or FAILED

{
  "amount": 10000,
  "business_id": "business123",
  "external_id": "linkaja-payment-23",
  "payment_timestamp": "2020-01-14T11:48:47.903Z",
  "status": "COMPLETED"
}

LINKAJA - PENDING or EXPIRED

{
  "amount": 10000,
  "business_id": "business123",
  "checkout_url": "https://example.com/checkout",
  "expired_at": "2020-01-14T11:48:47.903Z",
  "external_id": "linkaja-payment-23",
  "status": "PENDING"
}
Status Deskripsi
COMPLETED Transaksi pembayaran untuk external_id yang ditentukan berhasil
PENDING Transaksi pembayaran untuk external_id yang ditentukan sedang menunggu persetujuan dari pengguna LinkAja
FAILED Pembuatan pembayaran dengan LinkAja untuk external_id yang ditentukan gagal
EXPIRED URL transaksi pembayaran untuk external_id yang ditentukan telah kadaluarsa (pengguna tidak mengakses link pembayaran atau menyelesaikan proses pembayaran)

Errors

Contoh: Respon Gagal dari Cek Status Pembayaran

{
  "error_code": "PAYMENT_NOT_FOUND_ERROR",
  "message": "Payment not found",
}
Error Code Deskripsi
PAYMENT_NOT_FOUND_ERROR
404
Pembayaran tidak ditemukan
REQUEST_FORBIDDEN_ERROR
403
API key yang digunakan tidak memiliki izin untuk melakukan request. Mohon berikan izin yang sesuai terhadap API key yang digunakan. Pelajari lebih lanjut disini

Callback Status Pembayaran

Anda butuh menyediakan endpoint pada sistem anda untuk menerima callback notifikasi pembayaran dari sistem kami. Anda akan menerima callback ketika pelanggan anda menyelesaikan pembayaran OVO, DANA, dan LINKAJA.

Callback notifikasi pembayaran akan dikirim melalui request POST ke "callback_url" yang anda isi di request pembuatan pembayaran. Catatan: Mohon berikan respon kembali dengan status 200 agar kami tahu bahwa notifkasi telah diterima.

Versi

Anda sedang melihat API versi 2020-02-01. Klik di sini untuk melihat versi sebelumnya.

Versi Changelog
2020-02-01 (terbaru) Berisi flow yang asynchronous dengan callback dari pembuatan pembayaran OVO.
2019-02-04 Mengembalikan respon secara langsung tanpa adanya callback.

Contoh Callback Status Pembayaran

OVO

Muatan Callback Pembuatan Pembayaran Ewallet

Contoh: Callback Status Pembayaran Berhasil

{
  "event": "ewallet.payment",
  "id": "6bb25ae6-cf57-437a-9b36-7ad2ee17b727",
  "external_id": "ECLrAZPq8F6",
  "business_id": "5da6e2c353b91a414b357d98",
  "phone": "081234567890",
  "ewallet_type": "OVO",
  "amount": 20000,
  "created": "2019-11-01T12:34:56.007Z",
  "status": "COMPLETED"
}
Parameter Deskripsi
event required string Available value: "ewallet.payment"
id required string Unique identifier generated for the payment (payment_id)
external_id
required
string ID yang merupakan identifikasi unik dari setiap request
business_id
required
string ID yang merupakan identifikasi unik untuk merchant
phone
required
string Nomor telepon pelanggan
ewallet_type
required
string Tipe dari e-wallet. Nilai: OVO
amount
required
number Nominal yang diinginkan
status
required
string Status pembayaran.
Nilai: FAILED, COMPLETED
failure_code optional string Bila pembayaran berstatus FAILED, kami memasukkan failure_code untuk detil dari kegagalan.
Nilai: Lihat kolom Kode Kegagalan pada tabel ini
created
required
string Timestamp ISO 8601 saat request pembuatan pembayaran dilakukan (dalam UTC)

Kegagalan Callback Pembuatan Pembayaran Ewallet

Contoh: Callback Status Pembayaran Gagal

{
  "event": "ewallet.payment",
  "id": "6bb25ae6-cf57-437a-9b36-7ad2ee17b727",
  "external_id": "ECLrAZPq8F6",
  "business_id": "5da6e2c353b91a414b357d98",
  "phone": "081234567890",
  "ewallet_type": "OVO",
  "amount": 20000,
  "failure_code": "USER_DECLINED_THE_TRANSACTION",
  "status": "FAILED"
}
Kode Kegagalan Deskripsi
USER_DID_NOT_AUTHORIZE_THE_PAYMENT
Pengguna tidak mengotorisasi request pembayaran dalam batas waktu yang diberikan.
USER_DECLINED_THE_TRANSACTION
Pengguna menolak request pembayaran.
PHONE_NUMBER_NOT_REGISTERED
Nomor telepon yang digunakan pengguna untuk melakukan pembayaran tidak terdaftar.
SENDING_TRANSACTION_ERROR
Kami tidak bisa mengirim transaksi. Mohon hubungi customer support kami untuk bantuan lebih lanjut.
EWALLET_APP_UNREACHABLE
Provider/Server eWallet tidak bisa menjangkau applikasi/handphone Pengguna. Penyebab yang sering terjadi adalah karena applikasi eWallet sudah di uninstall di handphone pengguna.

DANA

Contoh: Callback Status Pembayaran Berhasil

{
  "external_id": "dana-ewallet",
  "amount": 1001,
  "business_id": "12121212",
  "payment_status": "PAID",
  "transaction_date": "2020-03-20T04:54:10+07:00",
  "callback_authentication_token": "sample-token-id=="
}
Parameter Deskripsi
external_id string Identifikasi dari pembayaran Anda, yang ada isi ketika mengirimkan Generate Checkout URL request.
amount string Nominal transaksi.
business_id string business_id Anda yang terdaftar pada sistem kami.
payment_status string Status pembayaran.
Catatan: Status yang ada adalah EXPIRED dan PAID.
transaction_date string Waktu ketika pembayaran dibuat.
callback_authentication_token string Verifikasi API Key callback Anda yang dapat ditemukan pada dasbor Xendit Anda. Anda butuh melakukan verifikasi nilai ini apakah memiliki nilai yang sama.

LINKAJA

Contoh: Callback Status Pembayaran Berhasil

{
  "external_id": "linkaja-ewallet",
  "amount": 300000,
  "items": [
    {
      "id": "123123",
      "name": "Phone Case",
      "price": 100000,
      "quantity": 1
    },
    {
      "id": "345678",
      "name": "Powerbank",
      "price": 200000,
      "quantity": 1
    }
  ],
  "status": "SUCCESS_COMPLETED",
  "ewallet_type": "LINKAJA",
  "callback_authentication_token": "sample-token-id=="
}
Parameter Deskripsi
external_id string Identifikasi dari pembayaran Anda, yang ada isi ketika mengirimkan Generate Checkout URL request.
amount number Nominal pembayaran yang telah Anda isi ketika melakukan Generate Checkout URL request.
items array of item Daftar dari barang / produk yang ada isi ketika mengirimkan Generate Checkout URL request.
item object
item detail Informasi dari barang / produk, akan mengandung: id [string], name [string], price [number], type [string], url [string], quantity [number]
status string Status dari pembayaran.
Catatan: Status yang ada adalah FAILED dan SUCCESS_COMPLETED
ewallet_type string Tipe eWallet yang Anda pilih ketika membuat request pembayaran.
Supported ewallet types: OVO, DANA, dan LINKAJA
callback_authentication_token string Berisi Callback Verification API Key yang Anda bisa temukan di Dashboard Xendit. Anda perlu verifikasi kembali apakah ini memiliki isi yang sama

Cardless Credit

Pembayaran kredit tanpa kartu memungkinkan Anda untuk menerima pembayaran uang muka dari penyedia jasa kredit. Nasabah Anda juga mendapatkan pilihan untuk melakukan cicilan dengan tenor yang sesuai dengan kebutuhan nasabah.

Pembuatan Pembayaran / Generate Checkout URL

Endpoint: Generate Checkout URL

POST https://api.xendit.co/cardless-credit

Generate Checkout URL

Contoh: Generate Checkout URL

curl https://api.xendit.co/cardless-credit -X POST \
  -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
  --header 'content-type: application/json' \
  --data '{
    "cardless_credit_type": "KREDIVO",
    "external_id": "test-cardless-credit-01",
    "amount": 800000,
    "payment_type": "3_months",
    "items": [
      {
        "id": "123123",
        "name": "Phone Case",
        "price": 200000,
        "type": "Smartphone",
        "url": "http://example.com/phone/phone_case",
        "quantity": 2
      },
      {
        "id": "234567",
        "name": "Bluetooth Headset",
        "price": 400000,
        "type": "Audio",
        "url": "http://example.com/phone/bluetooth_headset",
        "quantity": 1
      }
    ],
    "customer_details": {
      "first_name": "customer first name",
      "last_name": "customer last name",
      "email": "customer@yourwebsite.com",
      "phone": "081513114262"
    },
    "shipping_address": {
      "first_name": "first name",
      "last_name": "last name",
      "address": "Jalan Teknologi No. 12",
      "city": "Jakarta",
      "postal_code": "12345",
      "phone": "081513114262",
      "country_code": "IDN"
    },
    "redirect_url": "https://example.com",
    "callback_url": "http://example.com/callback-cardless-credit"
  }'
<?php
  $url = 'https://api.xendit.co/cardless-credit';
  $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
  $headers = [];
  $headers[] = 'Content-Type: application/json';

  $item_1 = new stdClass();
  $item_1->id = "123123";
  $item_1->name = "Phone Case";
  $item_1->price = 200000;
  $item_1->type = "Smartphone";
  $item_1->url = "http://example.com/phone/phone_case";
  $item_1->quantity = 2;

  $item_2 = new stdClass();
  $item_2->id = "234567";
  $item_2->name = "Bluetooth Headset";
  $item_2->price = 400000;
  $item_2->type = "Audio";
  $item_2->url = "http://example.com/phone/bluetooth_headset";
  $item_2->quantity = 1;

  $customer_details = new stdClass();
  $customer_details->first_name = "customer first name";
  $customer_details->last_name = "customer last name";
  $customer_details->email = "customer@email.com";
  $customer_details->phone = "081513114262";

  $shipping_address = new stdClass();
  $shipping_address->first_name = "first name";
  $shipping_address->last_name = "last name";
  $shipping_address->address = "Jalan Teknologi No. 12";
  $shipping_address->city = "Jakarta";
  $shipping_address->postal_code = "12345";
  $shipping_address->phone = "081513114262";
  $shipping_address->country_code = "IDN";

  $data = [
      "cardless_credit_type" => "KREDIVO",
      "external_id" => "test-cardless-credit-01",
      "amount" => 800000,
      "payment_type" => "3_months",
      "items" => [ $item_1, $item_2 ],
      "customer_details" => $customer_details,
      "shipping_address" => $shipping_address,
      "redirect_url" => "https://example.com",
      "callback_url" => "http://example.com/callback-cardless-credit"
  ];

  $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;

Contoh: Respon Sukses dari Generate Checkout URL

{
  "redirect_url": "https://sandbox.kredivo.com/kredivo/v2/signin?tk=fKhTeBntLW3Zyu23+GQ6s+RQaMMRtQ6YdZA1bnbTszt9WXcph/B4+j8nuPlV599Rfkv85FAYuE21Suajpm45tEMZqjZIdqnSgIPlt7T5gJk=",
  "transaction_id": "66403e84-c8da-4af4-8d30-d17e95522f43",
  "order_id": "123456-test-cardless-credit-01",
  "external_id": "test-cardless-credit-01",
  "cardless_credit_type": "KREDIVO"
}
Parameter Deskripsi
cardless_credit_type
required
string Tipe dari Cardless Credit yang akan digunakan. Harus dalam huruf kapital.
Tipe eWallet yang tersedia: OVO
external_id
required
string Sebuah ID pilihan Anda. Seringkali ini adalah indentifikasi unik seperti nomor telepon, email atau ID transaksi. Panjang maksimum yang diperbolehkan adalah 1000 karakter.
amount
required
number Jumlah yang pelanggan Anda harus bayarkan.
Note: jumlah minimum adalah Rp 1.
payment_type
required
string Tipe cicilan pembayaran, Anda bisa memilih antara: "30_days", "3_months", "6_months" and "12_months".
items
required
array of item object Daftar barang / produk.
item object
required
item object Informasi dari barang atau produk, harus mengandung: id [string], name [string], price [number], type [string], url [string], quantity [number]
customer_details
required
object Informasi pembeli, harus mengandung: first_name [string], last_name [string], email [string], phone [string]
shipping_address
required
object Informasi dari alamat pengiriman, harus mengandung: first_name [string], last_name [string], address [string], city [string], postal_code [string], phone [string], country_code [string]
redirect_url
required
string Setelah pembeli melakukan pembayaran di halaman checkout mitra Cardless Credit, mereka akan diarahkan ke redirect_url. Anda bisa memasukkan alamat dari halaman transaksi di website Anda ataupun halaman home website Anda.
callback_url
required
string Kami akan mengirimkan callback ke alamat ini setelah pembeli melakukan selesai melakukan pembayaran.

Errors

Contoh: Respon Error dari Generate Checkout URL

{
  "error_code": "API_VALIDATION_ERROR",
  "message": "[fieldName] is required"
}
{
  "error_code": "DUPLICATE_PAYMENT_ERROR",
  "message": "Checkout URL with the same external_id has been created before."
}
Error Code Description
MERCHANT_NOT_FOUND
422
Anda belum terdaftar untuk menggunakan cardless credit dengan tipe ini..
GENERATE_CHECKOUT_URL_ERROR
422
Request Anda tidak memenuhi syarat atau ada masalah di sistem partner Cardless Credit kami.
DUPLICATE_PAYMENT_ERROR
422
Anda sudah pernah membuat Generate Checkout Request dengan external_id yang sama sebelumnya.
REQUEST_FORBIDDEN_ERROR
403
API key yang digunakan tidak memiliki izin untuk melakukan request. Mohon berikan izin yang sesuai terhadap API key yang digunakan. Pelajari lebih lanjut disini

Notifikasi Pembayaran / Callback

Menerima Notifikasi Pembayaran / Callback

Anda perlu menyediakan sebuah endpoint di sistem Anda untuk menerima notifikasi pembayaran / callback dari sistem kami. Kami akan mengirim notifikasi pembayaran / callback ketika pembeli sudah melakukan pembayaran di halaman Checkout partner kami (Kredivo).

Notifikasi Pembayaran / Callback akan dikirim sebagai POST request ke "callback_url" yang telah Anda isi ketika mengirimkan Generate Checkout URL request.

Contoh: Request Notifikasi Pembayaran / Callback

{
  "external_id": "test-cardless-credit-01",
  "order_id": "75191237c81273jajsh7291c-test-cardless-credit-01",
  "transaction_id": "ashd7129-sh82-a9ks-js82-asj82912bajs",
  "amount": 800000,
  "transaction_status": "settlement",
  "payment_type": "3_months",
  "items": [
    {
      "id": "123123",
      "name": "Phone Case",
      "price": 200000,
      "type": "Smartphone",
      "url": "http://example.com/phone/phone_case",
      "quantity": 2
    },
    {
      "id": "234567",
      "name": "Bluetooth Headset",
      "price": 400000,
      "type": "Audio",
      "url": "http://example.com/audio/bluetooth_headset",
      "quantity": 1
    }
  ],
  "customer_details": {
      "first_name": "customer first name",
      "last_name": "customer last name",
      "email": "customer@yourwebsite.com",
      "phone": "081513114262"
    },
    "shipping_address": {
      "first_name": "first name",
      "last_name": "last name",
      "address": "Jalan Teknologi No. 12",
      "city": "Jakarta",
      "postal_code": "12345",
      "phone": "081513114262",
      "country_code": "IDN"
    },
  "cardless_credit_type": "KREDIVO",
  "callback_authentication_token": "MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n=="
}
Parameter Deskripsi
external_id string Identifikasi dari pembayaran Anda, yang ada isi ketika mengirimkan Generate Checkout URL request.
order_id string Identifikasi unik yang kami berikan kepada mitra Cardless Credit kami.
transaction_id string ID transaksi yang diberikan oleh mitra Cardless Credit.
transaction_status string Status Transaksi, yang berisi:
settlement: Transaksi berhasil
pending: Pembeli belum melakukan pembayaran
deny: Transaksi ditolak oleh mitra Cardless Credit kami
cancel: Transaksi sudah dibatalkan
expire: Pembeli tidak melakukan pembayaran dalam 24 jam, maka transaksi dinyatakan kadaluarsa
payment_type string Tipe cicilan.
amount number Jumlah pembayaran yang telah Anda isi ketika melakukan Generate Checkout URL request.
items array of item Daftar dari barang / produk yang ada isi ketika mengirimkan Generate Checkout URL request.
item object
item detail Informasi dari barang / produk, akan mengandung: id [string], name [string], price [number], type [string], url [string], quantity [number]
customer_details object Informasi pembeli, akan mengandung: first_name [string], last_name [string], email [string], phone [string]
shipping_address object Informasi alamat pengiriman, akan mengandung: first_name [string], last_name [string], address [string], city [string], postal_code [string], phone [string], country_code [string]
cardless_credit_type string Tipe Cardless Credit.
Tipe Cardless Credit yang tersedia: KREDIVO
callback_authentication_token string Berisi Callback Verification API Key yang Anda bisa temukan di Dashboard Xendit. Anda perlu verifikasi kembali apakah ini memiliki isi yang sama

Virtual Accounts

Virtual accounts adalah akun virtual dari bank yang dibuat dan diperuntukan kepada pelanggan yang berfungsi sebagai media untuk menerima pembayaran yang akan di bayarkan pelanggan terhadap bank.

Pembuatan Virtual Account

Endpoint: Pembuatan Virtual Accounts (VA)

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

Untuk lingkungan produksi, aktifkan Virtual Account dari dasbor dengan masuk ke Dasbor > Pengaturan > Konfigurasi > Fix Virtual Account, dan klik tombol "Aktifkan!". Rentang VA akan diatur dan diaktifkan secara instan. Dalam lingkungan pengembangan, pengembangan rentang VA akan ditugaskan segera. Baca lebih lanjut tentang virtual accounts.

Apakah anda ingin menggunakan virtual akun yang terikat dengan transaksi daripada pengguna? Gunakan invoices API kita.

Permintaan Pembuatan Virtual Accounts

Contoh Permintaan Virtual Accounts

bash

curl https://api.xendit.co/callback_virtual_accounts -X POST \
   -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
   -d external_id=demo_virtual_account_1475459775872 \
   -d bank_code=BNI \
   -d name='Rika Sutanto'

JSON

{
   "external_id": "demo_virtual_account_1475459775872",
   "bank_code": "BNI",
   "name": "Rika Sutanto"
}
<?php
  require 'vendor/autoload.php';

  $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';

  $xenditPHPClient = new XenditClient\XenditPHPClient($options);

  $external_id = 'demo_1475459775872';
  $bank_code = 'BNI';
  $name = 'Rika Sutanto';

  $response = $xenditPHPClient->createCallbackVirtualAccount($external_id, $bank_code, $name);
  print_r($response);
?>
const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });

const { VirtualAcc } = x;
const vaSpecificOptions = {};
const va = new VirtualAcc(vaSpecificOptions);

const resp = await va.createFixedVA({
  externalID: 'demo_1475459775872',
  bankCode: 'BNI',
  name: 'Rika Sutanto',
});
console.log(resp);
Header Parameter 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 Deskripsi
external_id
required
string ID sesuai pilihan anda. Seringkali ID itu unik seperti nomor telepon, email or ID transaction. Panjang maksimum yang diperbolehkan adalah 1000 karakter.

Karakter Spesial dan alfanumerik
Panjang minimal 1 karakter
bank_code
required
string Kode bank virtual account yang anda mau buat.
Note: Kami sangat menyarankan untuk mengarahkan pelanggan anda untuk membayar ke BNI virtual account untuk transfer antar bank

Kode bank yang tesedia: MANDIRI, BNI, BRI, PERMATA, BCA
name
required
string Nama pengguna/virtual account, nama ini yang akan ditampilkan pada tampilan para pengguna, misalkan pada layar konfirmasi mesin ATM.Perlu diperhatikan bahwa kolom ini hanya dapat berisi huruf dan spasi dan tidak memiliki batasan (meskipun bank akan hanya menampilkan nama virtual account sesuai jumlah batasan dari sisi bank)

Karakter Hanya huruf
Panjang minimal 1 karakter
virtual_account_number
optional
string Nomor virtual akun yang ingin anda tetapkan. Jika anda tidak menetapkan nomor virtual account yang ingin anda buat, sistem kami akan memilih secara acak.
Note: Jangan sertakan merchat code (4 atau 5 digit pertama pada yang ada di keseluruhan nomor virtual account)

standar: string acak
suggested_amount
optional
integer positive Nominal yang disarankan yang ingin anda tetapkan.
Note:Pengguna dapat melihat nominal yang di sarankan akan tetapi tetap dapat memasukan nominal diluar dari yang di sarankan (Untuk nominal yang disarankan hanya tersedia pada Mandiri dan BRI)

standar: tidak ada
is_closed
optional
boolean Ketika diatur menjadi true, virtual account hanya akan menerima pembayaran sesuai nominal yang ditentukan dalam expected_amount

standar: false
expected_amount
optional
integer positive Nominal yang diharapkan oleh virtual account ketika is_closed diatur menjadi true

standar: tidak ada
expiration_date
optional
ISO 8601 Date Waktu kedaluwarsa virtual account

zona waktu: UTC
standar: Tanggal kedaluwarsa akan 30 tahun sejak VA dihasilkan
is_single_use
optional
boolean Ketika diatur menjadi true, status virtual account akan menjadi inactive setelah dibayar

standar: false
description
optional
string Deskripsi tentang virtual account yang di buat. Ini hanya tersedia untuk bank BRI

Karakter spesial dan alfanumerik
Panjang minimal 1 Karakter
standar: tidak ada

Respon Pembuatan Virtual Accounts

Contoh Respon Pembuatan Virtual Accounts

{
   "owner_id":"57b4e5181473eeb61c11f9b9",
   "external_id":"demo-1475804036622",
   "bank_code":"BNI",
   "merchant_code":"8808",
   "name":"Rika Sutanto",
   "account_number":"8808999939380502",
   "is_closed": false,
   "id":"57f6fbf26b9f064272622aa6",
   "is_single_use": true,
   "status": "ACTIVE"
}

Contoh Respon Pembuatan Virtual Accounts dengan bank code BRI

{
  "owner_id": "5de8d83cafcf47000f8e76bc",
  "external_id": "1576132512",
  "bank_code": "BRI",
  "merchant_code": "26215",
  "name": "rezki",
  "account_number": "262159999857807",
  "expected_amount": 700000,
  "is_single_use": false,
  "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
  "currency": "IDR",
  "status": "ACTIVE",
  "expiration_date": "2050-12-11T17:00:00.000Z",
  "is_closed": false,
  "id": "5df1dfa06c3736110078f9a1"
}
Parameter Dekripsi
owner_id
required
string ID pengguna anda
external_id
required
string ID pilihan anda yang anda berikan saat melakukan permintaan
bank_code
required
string Kode bank yang bersangkutan, misal, BNI.
merchant_code
required
string Merchant code adalah 4-5 angka awalan dari nomor akun virtual. contoh: 01234 + nomor anda
name
required
string Nama virtual account
account_number
required
string Nomor lengkap virtual account (termasuk 5 angka didepan). Nomor ini yang perlu pengguna gunakan saat melakukan pembayaran melaluin ATM atau Internet/mobile banking.
is_closed
required
boolean Nilai yang menentukan apakah virtual account hanya dapat dibayarkan sesuai nominal yang telah ditentukan pada expected_amount atau tidak.
id
required
string ID unik untuk virtual account. ID ini dapat digunakan untuk membuat invoice agar terhubung dengan virtual account.
is_single_use
required
boolean Nilai yang menentukan apakah virtual account akan menjadi inactive setelah dibayar
status
required
string Status virtual account yang menentukan apakah itu PENDING, ACTIVE atau INACTIVE.
  • Status PENDING jika pembuatan virtual account sedang di proses oleh bank.
  • Status INACTIVE dikarenakan virtual account adalah virtual account sekali bayar atau virtual account telah expired.
  • Dan jika status ACTIVE virtual account dapat di gunakan oleh pengguna.
  • suggested_amount
    optional
    string Nominal yang diharapkan untuk pembuatan virtual account
    expected_amount
    optional
    string Nominal yang diharapkan saat is_closed diubah menjadi true
    description
    optional
    string deskripsi dari virtual account yang mana akan di tampilkan ketika melakukan pembayaran. Hanya tersedia untuk bank BRI.

    Kesalahan Pembuatan Virtual Account

    Pesan Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Input menggagalkan validasi. Terdapat detail kolom yang menggagalkan validasi pada kolom error.
    INVALID_JSON_FORMAT
    400
    Bukan format JSON yang valid.
    VIRTUAL_ACCOUNT_NUMBER_OUTSIDE_RANGE
    400
    Nomor virtual account yang anda mau tidak tersedia. Anda bisa cek panjang VA yang bisa dibuat disini Virtual Accounts Settings
    BANK_NOT_SUPPORTED_ERROR
    400
    Kode bank ini tidak tersedia. Anda bisa melihat bank apa yang tersedia di Bank yang tersedia untuk Virtual Account.
    EXPIRATION_DATE_NOT_SUPPORTED_ERROR
    400
    Tanggl kedaluwarsa untuk virtual account saat ini tidak tersedia.
    EXPIRATION_DATE_INVALID_ERROR
    400
    Bukan tanggal kedaluwarsa yang valid karena lebih awal dari waktu saat ini.
    SUGGESTED_AMOUNT_NOT_SUPPORTED_ERROR
    400
    Nominal yang diharapkan untuk virtual saat ini tidak dapat digunakan.
    EXPECTED_AMOUNT_REQUIRED_ERROR
    400
    Nominal yang diharapkan wajib diisi ketika is_closed diubah menjadi true.
    CLOSED_VA_NOT_SUPPORTED_ERROR
    400
    Nilai is_closeduntuk pilihan ini tidak tersedia untuk virtual account.
    DUPLICATE_CALLBACK_VIRTUAL_ACCOUNT_ERROR
    400
    Nomor virtual account yang anda mau buat sudah digunakan
    MINIMUM_EXPECTED_AMOUNT_ERROR
    400
    Nominal yang diharapkan The expected amount hanya bisa lebih dari nol
    MAXIMUM_EXPECTED_AMOUNT_ERROR
    400
    Nominal yang diharapkan hanya bisa kurang dari Rp.1000000000
    CALLBACK_VIRTUAL_ACCOUNT_NAME_NOT_ALLOWED_ERROR
    400
    Nama virtual account tidak boleh mengandung nama bank atau institusi
    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.

    Bank yang tersedia untuk Virtual Account

    Endpoint: Mendapatkan bank yang tersedia untuk virtual accounts

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

    Contoh Permintaan mendapatkan bank yang tersedia untuk virtual accounts

    curl https://api.xendit.co/available_virtual_account_banks -X GET \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $response = $xenditPHPClient->getVirtualAccountBanks();
      print_r($response);
    ?>

    Respon saat mendapatkan Ketersediaan Bank untuk Virtual Account

    Contoh respon saat mendapatkan bank yang tersediua untuk virtual accounts

    {
      "name": "Bank Negara Indonesia",
      "code": "BNI"
    }
    Parameter Deskripsi
    name
    required
    Nama bank
    code
    required
    Kode bank, yang berkaitan saat pembuatan virtual account

    Mendapatkan Virtual Account

    Endpoint: Mendapatkan Informasi Virtual Account

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

    Contoh Permintaan Mendapatkan Informasi Virtual Account

    curl https://api.xendit.co/callback_virtual_accounts/:id -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:

    Terkadang, anda perlu mengetahui detail dari virtual account anda. Endpoint ini dapat digunakan untuk mendapatkan detail informasi terbaru dari virtual account anda.

    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { VirtualAcc } = x;
    const vaSpecificOptions = {};
    const va = new VirtualAcc(vaSpecificOptions);
    
    const resp = await va.getFixedVA({ id: '59e03a976fab8b1850fdf347' });
    console.log(resp);

    Terkadang, anda perlu mengetahui detail dari fixed virtual account anda. Endpoint ini dapat digunakan untuk mendapatkan detail informasi terbaru dari fixed virtual account anda.

    Permintaan Mendapatkan Informasi Virtual Account

    Parameter Deskripsi
    id
    required
    string ID virtual account yang ingin anda gunakan

    Respon Mendapatkan Informasi Virtual Account

    Contoh Respon Mendapatkan Informasi Virtual Account

    {
        "owner_id": "58cd618ba0464eb64acdb246",
        "external_id": "va-1507867286",
        "bank_code": "BRI",
        "merchant_code": "26215",
        "name": "Steve Wozniak",
        "account_number": "262151000393993",
        "is_single_use": false,
        "status": "ACTIVE",
        "expiration_date": "2048-10-12T17:00:00.000Z",
        "is_closed": false,
        "id": "59e03a976fab8b1850fdf347"
    }
    Parameter Deskripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat pembuatan virtual account
    bank_code
    required
    string Kode bank dari nomor virtual account
    merchant_code
    required
    string 4 atau 5 angka didepan sebelum nomor lengkap virtual account
    name
    required
    string Nama virtual account
    account_number
    required
    string Nomor akun dari virtual account
    expiration_date
    required
    string Tanggal kedaluwarsa virtual account
    is_closed
    required
    boolean Nilai yang mendifinisikan virtual account harus dibayar sesuai nominal yang diharapkan atau tidak
    id
    required
    string ID virtual account
    is_single_use
    required
    boolean Nilai yang mendefinisikan virtual account hanya bisa digunakan satu kali atau berulang-ulang
    status
    required
    string Status virtual account yang menentukan apakah itu PENDING, ACTIVE atau INACTIVE.
  • Status PENDING jika pembuatan virtual account sedang di proses oleh bank.
  • Status INACTIVE dikarenakan virtual account adalah virtual account sekali bayar atau virtual account telah expired.
  • Dan jika status ACTIVE virtual account dapat di gunakan oleh pengguna.
  • Kesalahan Mendapatkan Informasi Pembayaran Virtual Account

    Pesan Kesalahan Deskripsi
    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.
    CALLBACK_VIRTUAL_ACCOUNT_NOT_FOUND_ERROR
    404
    Tidak dapat menemukan virtual account ini

    Pembaruan Virtual Accounts

    Endpoint: Pembaruan Virtual Account (VA)

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

    Virtual Account sangat mudah digunakan, dan itu tergantung kebutuhan anda. Oleh karena itu, kami menyediakan endpoint yang sangat mudah digunakan untuk memperbarui virtual account sesuai yang anda mau.

    Note: Closed virtual accounts tidak dapat di ubah menjadi open virtual accounts begitu pula sebaliknya.

    Permintaan Pembaruan Virtual Accounts

    Contoh Permntaan Pembaruan Fixed Virtual Account

    curl https://api.xendit.co/callback_virtual_accounts/57f6fbf26b9f064272622aa6 -X PATCH \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d expected_amount=100000
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { VirtualAcc } = x;
    const vaSpecificOptions = {};
    const va = new VirtualAcc(vaSpecificOptions);
    
    const resp = await va.updateFixedVA({
      id: '57f6fbf26b9f064272622aa6',
      expectedAmt: 1000000,
    })
    {
        "expiration_date": "2019-11-12T23:46:00.000Z",
        "expected_amount": 6000
    }
    Parameter Deskripsi
    suggested_amount
    optional
    integer positive Nominal yang disarankan yang ingin anda tetapkan.
    expected_amount
    optional
    integer positive Nominal yang diharapkan saat is_closed diubah menjadi true
    expiration_date
    optional
    ISO 8601 Date Waktu ketika virtual account akan kedaluwarsa. Anda dapat mengaturnya ke hari-hari sebelumnya untuk segera mengubah virtual account itu menjadi kedaluwarsa

    zona waktu: UTC
    standar: Tanggal kedaluwarsa akan 30 tahun sejak VA dihasilkan
    is_single_use
    optional
    boolean Ketika diubah menjadi true, virtual account akan menjadi inactive setelah dibayar

    standar: false
    description
    optional
    string Deskripsi tentang virtual account yang di buat. Ini hanya tersedia untuk bank BRI

    Karakter spesial dan alfanumerik
    Panjang minimal 1 Karakter
    standar: tidak ada

    Respon Pembaruan Virtual Accounts

    Contoh Respon Pembaruan Virtual Accounts

    {
        "owner_id": "5de8d83cafcf47000f8e76bc",
        "external_id": "demo_virtual_account_1475459775872",
        "bank_code": "BNI",
        "merchant_code": "8808",
        "name": "Rika Sutanto",
        "account_number": "8808999947012640",
        "is_single_use": false,
        "expected_amount": 6000,
        "currency": "IDR",
        "status": "PENDING",
        "expiration_date": "2019-11-12T23:46:00.000Z",
        "is_closed": false,
        "id": "5df745b92b50911700f37e86"
    }
    Parameter Deskripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    bank_code
    required
    string Kode bank yang bersangkutan, misal, BNI.
    merchant_code
    required
    string 4 atau 5 angka didepan sebelum nomor lengkap virtual account
    name
    required
    string Nama virtual account
    account_number
    required
    string Nomor lengkap virtual account (termasuk 5 angka didepan). Nomor ini yang perlu pengguna gunakan saat melakukan pembayaran melaluin ATM atau Internet/mobile banking.
    id
    required
    string ID unik untuk virtual account. ID ini dapat digunakan untuk membuat invoice agar terhubung dengan virtual account.
    is_closed
    required
    boolean Nilai yang menentukan apakah virtual account hanya dapat dibayarkan sesuai nominal yang telah ditentukan pada expected_amount atau tidak.
    is_single_use
    required
    boolean Nilai yang menentukan apakah virtual account akan menjadi inactive setelah dibayar.
    status
    required
    string Status virtual account yang menentukan apakah itu PENDING, ACTIVE atau INACTIVE.
  • Status PENDING jika pembuatan virtual account sedang di proses oleh bank.
  • Status INACTIVE dikarenakan virtual account adalah virtual account sekali bayar atau virtual account telah expired.
  • Dan jika status ACTIVE virtual account dapat di gunakan oleh pengguna.
  • suggested_amount
    optional
    string Nominal yang diharapkan dari virtual account yang diperbarui
    expected_amount
    optional
    string Nominal yang diharapkan saat is_closed diubah menjadi true
    description
    optional
    string deskripsi dari virtual account yang mana akan di tampilkan ketika melakukan pembayaran. Hanya tersedia untuk bank BRI.

    Kesalahan Pembaruan Virtual Accounts

    Pesan Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Input menggagalkan validasi. Terdapat detail kolom yang menggagalkan validasi pada kolom error.
    INVALID_JSON_FORMAT
    400
    Bukan format JSON yang valid.
    VIRTUAL_ACCOUNT_NUMBER_OUTSIDE_RANGE
    400
    Nomor virtual account yang anda mau tidak tersedia. Anda bisa cek panjang VA yang bisa dibuat disini Virtual Accounts Settings
    BANK_NOT_SUPPORTED_ERROR
    400
    Kode bank ini tidak tersedia. Anda bisa melihat bank apa yang tersedia di Bank yang tersedia untuk Virtual Account.
    SUGGESTED_AMOUNT_NOT_SUPPORTED_ERROR
    400
    Nominal yang diharapkan untuk virtual saat ini tidak dapat digunakan
    EXPECTED_AMOUNT_REQUIRED_ERROR
    400
    Nominal yang diharapkan wajib diisi ketika is_closed diubah menjadi true.
    CLOSED_VA_NOT_SUPPORTED_ERROR
    400
    Nilai is_closeduntuk pilihan ini tidak tersedia untuk virtual account..
    INACTIVE_VIRTUAL_ACCOUNT_ERROR
    400
    Nomor virtual account yang anda mau perbarui inactive.
    MINIMUM_EXPECTED_AMOUNT_ERROR
    400
    Nominal yang diharapkan The expected amount hanya bisa lebih dari nol
    MAXIMUM_EXPECTED_AMOUNT_ERROR
    400
    Nominal yang diharapkan hanya bisa kurang dari Rp.1000000000
    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.

    Notifikasi Pembayaran Virtual Account

    Endpoint: Notifikasi Pembayaran Virtual Account

    POST https://yourcompany.com/virtual_account_paid_callback_url

    Ketika seseorang membayar ke virtual account anda, API untuk notifikasi kami akan mengirimkan notifikasi URL anda yang telah ada atur dalam dashboard. API notifikasi kami juga akan mengirimkan notifikasi ke URL anda untuk pembuatan virtual account dan pembaruan virtual account. Silahkan liatPembuatan Virtual Accounts untuk lebih detail. Untuk informasi lebih lanjut mengenai notikasi silahhkan bacadocs.

    Contoh ini hanya digunakan untuk menampilkan isi parameter yang dikirimkan dari API Xendit ke URL notifikasi anda dan tidak dapat dicoba disini. Jika anda menginginkan untuk mencoba permintaan notifikasi ini, gunakan fitur di dashboard dan pilih Callbacks settings.

    Permintaan Notifikasi Pembayaran Virtual Account

    Header Parameter Description
    x-callback-token
    required
    string Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut

    Contoh Permintaan Notifikasi Pembayaran Virtual Account Payment

    bash

    curl --include \
         --request POST \
         --header "Content-Type: application/json" \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --data-binary "{
        id: \"57fb4e076fa3fa296b7f5a97\",
        payment_id: \"demo-1476087608948_1476087303080\",
        callback_virtual_account_id: \"57fb4df9af86ce19778ad359\",
        owner_id: \"57b4e5181473eeb61c11f9b9\",
        external_id: \"demo-1476087608948\",
        account_number: \"8808999939380502\",
        bank_code: \"BNI\",
        amount: 99000,
        transaction_timestamp: \"2016-10-10T08:15:03.080Z\",
        merchant_code: \"8808\",
        updated: \"2016-10-10T08:15:03.404Z\",
        created: \"2016-10-10T08:15:03.404Z\"
    }" \
    'https://api.xendit.co/virtual_account_paid_callback_url'

    JSON

    {
        "id": "57fb4e076fa3fa296b7f5a97",
        "payment_id": "demo-1476087608948_1476087303080",
        "callback_virtual_account_id": "57fb4df9af86ce19778ad359",
        "owner_id": "57b4e5181473eeb61c11f9b9",
        "external_id": "demo-1476087608948",
        "account_number": "8808999939380502",
        "bank_code": "BNI",
        "amount": 99000,
        "transaction_timestamp": "2016-10-10T08:15:03.080Z",
        "merchant_code": "8808",
        "updated": "2016-10-10T08:15:03.404Z",
        "created": "2016-10-10T08:15:03.404Z"
    }
    Parameter Deskripsi
    payment_id
    required
    string Dalam sistem internal kami disebut dengan payment ID
    callback_virtual_account_id
    required
    string Nilai kolom id didapatkan dari respon saat virtual account berhasil dibuat. Lihat Pembuatan Virtual Accounts
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    account_number
    required
    string Nomor lengkap virtual account (tanpa 5 angka didepan). Nomor ini yang perlu pengguna gunakan saat melakukan pembayaran melaluin ATM atau Internet/mobile banking.
    bank_code
    required
    string Kode bank yang bersangkutan, misal, BNI.
    amount
    required
    integer positive Jumlah yang dibayar
    merchant_code
    required
    string 5 angka didepan sebelum nomor lengkap virtual account, e.g 01234 your_number
    id
    required
    string ID dari pembayaran virtual account
    transaction_timestamp
    required
    string Tanggal dan waktu pembayaran virtual account

    Permintaan Notifikasi untuk Pembuatan Virtual Account / Pembaruan Virtual Acccount

    Contoh Permintaan Notifikasi untuk Pembuatan Virtual Account / Pembaruan Virtual Acccount

    bash

    curl --include \
         --request POST \
         --header "Content-Type: application/json" \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --data-binary "{
        id: \"57fb4e076fa3fa296b7f5a97\",
        owner_id: \"5824128aa6f9f9b648be9d76\",
        external_id: \"va-1487156410\",
        merchant_code: \"88608\",
        account_number: \"886081000123456\",
        bank_code: \"MANDIRI\",
        name: \"John Doe\",
        is_closed: false,    
        is_single_use: false,
        status: \"ACTIVE\",
        expiration_date: \"2048-02-15T11:01:52.722Z\",
        updated: \"2016-10-10T08:15:03.404Z\",
        created: \"2016-10-10T08:15:03.404Z\"
    }" \
    'https://api.xendit.co/virtual_account_created_callback_url'

    JSON

    {
        "id": "57fb4e076fa3fa296b7f5a97",
        "owner_id": "5824128aa6f9f9b648be9d76",
        "external_id": "va-1487156410",
        "merchant_code": "88608",
        "account_number": "886081000123456",
        "bank_code": "MANDIRI",
        "name": "John Doe",
        "is_closed": false,    
        "is_single_use": false,
        "status": "ACTIVE",
        "expiration_date": "2048-02-15T11:01:52.722Z",
        "updated": "2016-10-10T08:15:03.404Z",
        "created": "2016-10-10T08:15:03.404Z"
    }
    Parameter Deskripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    bank_code
    required
    string Kode bank yang bersangkutan, misal, BNI.
    merchant_code
    required
    string 5 angka didepan sebelum nomor lengkap virtual account
    name
    required
    string Nama virtual account
    account_number
    required
    string Nomor lengkap virtual account (termasuk 5 angka didepan). Nomor ini yang perlu pengguna gunakan saat melakukan pembayaran melaluin ATM atau Internet/mobile banking.
    suggested_amount
    optional
    string Nominal yang disarankan untuk membuat virtual account
    is_closed
    required
    boolean Nilai yang menentukan apakah virtual account hanya dapat dibayarkan sesuai nominal yang telah ditentukan pada expected_amount atau tidak.
    expected_amount
    optional
    string Nominal yang diharapkan saat is_closed diubah menjadi true
    id
    required
    string ID unik untuk virtual account. ID ini dapat digunakan untuk membuat invoice agar terhubung dengan virtual account.
    is_single_use
    required
    boolean Nilai yang menentukan apakah virtual account akan menjadi inactive setelah dibayar.
    status
    required
    string Status virtual account yang menentukan apakah itu PENDING, ACTIVE atau INACTIVE.
  • Status PENDING jika pembuatan virtual account sedang di proses oleh bank.
  • Status INACTIVE dikarenakan virtual account adalah virtual account sekali bayar atau virtual account telah expired.
  • Dan jika status ACTIVE virtual account dapat di gunakan oleh pengguna.
  • Kesalahan Notifikasi Virtual Account

    Perlu diperhatikan pada kasus ini kita tidak mendapatkan respon sukses dari server anda pada percobaan pertama, kami akan mencoba lagi sebanyak 2 kali dengan jeda 30 detik disetiap percobaan. Setelah 3 kali mendapatkan respon gagal, kami akan mendapatkan peringatan bahwa notifikasi itu telah gagal. Tim kami akan menghubungin anda untuk menyelesaikan masalah ini.

    Mendapatkan Pembayaran Virtual Account

    Endpoint: Permintaan Mendapatkan Pembayaran Virtual Account

    GET https://api.xendit.co/callback_virtual_account_payments/payment_id={payment_id}

    Contoh Permintaan Mendapatkan Pembayaran Virtual Account

    curl https://api.xendit.co/callback_virtual_account_payments/payment_id={payment_id} -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { VirtualAcc } = x;
    const vaSpecificOptions = {};
    const va = new VirtualAcc(vaSpecificOptions);
    
    const resp = await va.getVAPayment({
      paymentID: '598d91b1191029596846047f',
    });
    console.log(resp);

    Ketika anda menerima notifikasi di URL anda, anda dapat memverifikasi notifikasi yang anda terima berasal dari kami.

    Permintaan Mendapatkan Pembayaran Virtual Account

    Parameter Deskripsi
    payment_id
    required
    string ID pembayaran yang ingin anda gunakan

    Respon Mendapatkan Pembayaran Virtual Account

    Contoh Respon Pembayaran Mendapatkan Virtual Account

    {
        "id": "598d91b1191029596846047f",
        "payment_id": "1502450097080",
        "callback_virtual_account_id": "598d5f71bf64853820c49a18",
        "external_id": "demo-1502437214715",
        "merchant_code": "77517",
        "account_number": "1000016980",
        "bank_code": "BNI",
        "amount": 5000,
        "transaction_timestamp": "2017-08-11T11:14:57.080Z"
    }
    Parameter Deskripsi
    id
    required
    string ID pembayaran virtual account
    payment_id
    required
    string Dalam sistem internal kami disebut dengan payment ID
    callback_virtual_account_id
    required
    string ID dari virtual account yang telah dibayar
    external_id
    required
    string External ID pembayaran virtual account
    merchant_code
    required
    string 5 angka didepan sebelum nomor lengkap virtual account
    account_number
    required
    string Nomor akun dari virtual account
    bank_code
    required
    string Kode bank dari nomor virtual account
    amount
    required
    integer positive Jumlah yang dibayarkan ke virtual account ini
    transaction_timestamp
    required
    string Tanggal dan waktu bahwa virtual account telah dibayar

    Kesalahan Mendapatkan Pembayaran Virtual Account

    Pesan Kesalahan Deskripsi
    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.
    CALLBACK_VIRTUAL_ACCOUNT_PAYMENT_NOT_FOUND_ERROR
    404
    Tidak dapat menemukan notofi kasi pembayaran virtual account berdasarkan payment id

    Retail Outlets

    Pembuatan Fixed Payment Code

    Endpoint: Pembuatan Fixed Payment Code (FPC)

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

    Salah satu cara bagi pelanggan Anda untuk membayar melalui Outlet Ritel adalah dengan memberi mereka Fixed Payment Code. Fixed Payment Code adalah kode pembayaran khusus dengan nama yang Anda pilih, mis. 'Perusahaan Anda - Becca Salim'. Anda akan menerima panggilan balik setiap kali Fixed Payment Code ini dibayarkan.

    Pembuatan Permintaan Fixed Payment Code

    Contoh Permintaan Pembuatan Fixed Payment Code

    bash

    curl https://api.xendit.co/fixed_payment_code -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d external_id=demo_fixed_payment_code_123 \
       -d retail_outlet_name=ALFAMART \
       -d name='Rika Sutanto' \
       -d expected_amount=10000

    JSON

    {
      "external_id": "demo_fixed_payment_code_123",
      "retail_outlet_name": "ALFAMART",
      "name": "Rika Sutanto",
      "expected_amount": 10000
    }
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RetailOutlet } = x;
    const retailOutletSpecificOptions = {};
    const ro = new RetailOutlet(retailOutletSpecificOptions);
    
    const resp = await ro.createFixedPaymentCode({
      externalID: 'demo_fixed_payment_code_123',
      retailOutletName: 'ALFAMART',
      name: 'Rika Sutanto',
      expectedAmt: 10000,
    });
    console.log(resp);
    Parameter Deskripsi
    external_id
    required
    string ID pilihan Anda. Seringkali pengenal unik seperti nomor telepon, email atau transaksi ID. Panjang maksimum yang diijinkan adalah 1000 karakter.

    Karakter spesial dan alfanumerik
    Panjang minimal 1 karakter
    retail_outlet_name
    required
    string Nama Fixed Payment Code yang ingin Anda buat

    Nama Retail Outlest yang tersedia: ALFAMART dan INDOMARET
    name
    required
    string Nama pengguna - data ini dapat digunakan oleh kasir Toko Outlet untuk memvalidasi pengguna akhir

    Karakter Hanya huruf
    Panjang minimal 1 karakter
    expected_amount
    optional
    integer positive Jumlah yang diharapkan akan dibayarkan oleh pengguna akhir
  • minimal Rp 10,000 dan maksimal Rp 5,000,000 untuk Alfamart
  • minimal Rp 11,000 dan maksimal Rp 5,000,000 untuk Indomaret
  • payment_code
    optional
    string Fixed Payment Code yang ingin Anda tetapkan, contohnya 12345. Jika Anda tidak mengirimkan, maka akan dipilih secara acak

    standar: string acak
    expiration_date
    optional
    ISO 8601 Date Waktu yang ditentukan ketika Fixed Payment Code akan kedaluwarsa

    zona waktu: UTC
    standar: Tanggal kedaluwarsa akan 30 tahun sejak VA dihasilkan
    is_single_use
    optional
    boolean Jika disetel ke true, Fixed Payment Code tidak akan aktif setelah dibayarkan

    standar: false

    Respon Pembuatan Fixed Payment Code

    Contoh Respon Pembuatan Fixed Payment Code

    {
       "owner_id": "5b614aa8e79f9214007244d4",
       "external_id": "123",
       "retail_outlet_name": "ALFAMART",
       "prefix": "TEST",
       "name": "Rika Sutanto",
       "payment_code": "TEST123456",
       "type": "USER",
       "expected_amount": 10000,
       "is_single_use": true,
       "expiration_date": "2049-07-31T17:00:00.000Z",
       "id": "5b61881e6cc2770f00117f73"
    }
    Parameter Dekripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    retail_outlet_name
    required
    string Nama Retail Outlet yang digunakan, misalnya ALFAMART atau INDOMARET
    prefix
    required
    string 3-6 karakter yang membedakan Fixed Payment Code Anda dari yang lain
    name
    required
    string Nama untuk Fixed Payment Code anda
    payment_code
    required
    string kode lengkap pembayaran tetap (termasuk prefix). Kode inilah yang harus dilakukan pengguna untuk memberi tahu kepada kasir Outlet Ritel
    expected_amount
    required
    integer positive Nominal yang diharapkan akan dibayarkan oleh pengguna akhir
  • minimal Rp 10,000 dan maksimal Rp 5,000,000 untuk Alfamart
  • minimal Rp 11,000 dan maksimal Rp 5,000,000 untuk Indomaret
  • is_single_use
    required
    boolean Nilai yang menentukan apakah Fixed Payment Code akan aktif setelah dibayar atau tidak
    expiration_date
    required
    ISO 8601 Date Waktu ketika Fixed Payment Code akan kedaluarsa
    id
    required
    string Kode unik untuk Fixed Payment Code

    Kesalahan Pembuatan Fixed Payment Code

    Kode Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Input gagal divalidasi. Kesalahan field berisi rincian tentang fields yang melanggar validasi.
    INVALID_JSON_FORMAT
    400
    Permintaan tidak sesuai dengan format JSON yang valid
    PAYMENT_CODE_OUTSIDE_RANGE
    400
    Fixed Payment Code yang Anda inginkan berada di luar rentang Anda. Untuk melakukan pengecekan rentang yang sesuai bisa dilakukan di Retail Outlets Settings
    RETAIL_OUTLET_NOT_SUPPORTED_ERROR
    400
    Retail Outlet yang digunakan saat ini tidak didukung.
    DUPLICATE_PAYMENT_CODE_ERROR
    400
    Kode pembayaran yang ingin anda buat sudah digunakan.
    EXPIRATION_DATE_INVALID_ERROR
    400
    Tanggal kadaluarsa yang anda inginkan tidak valid dikarenakan lebih awal dari waktu saat ini.
    MINIMUM_EXPECTED_AMOUNT_ERROR
    400
    Ekspektasi nominal hanya bisa lebih dari atau sama dengan Rp 10,000.
    MAXIMUM_EXPECTED_AMOUNT_ERROR
    400
    Ekspektasi nominal hanya bisa kurang dari atau sama dengan Rp 5,000,000.
    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.

    Pembaruan Fixed Payment Code

    Endpoint: Pembaruan Fixed Payment Code

    PATCH https://api.xendit.co/fixed_payment_code/{fixed_payment_code_id}

    Contoh Permintaan Pembaruan Fixed Payment Code

    curl https://api.xendit.co/fixed_payment_code/{fixed_payment_code_id} -X PATCH \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d expected_amount=20000
       -d name='Joe Contini'
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RetailOutlet } = x;
    const retailOutletSpecificOptions = {};
    const ro = new RetailOutlet(retailOutletSpecificOptions);
    
    const resp = await ro.updateFixedPaymentCode({
      id: '5b61881e6cc2770f00117f73',
      name: 'Joe Contini',
      expectedAmt: 20000,
    });
    console.log(resp);

    Permintaan Pembaruan Fixed Payment Code (Money-in write permission)

    Fixed Payment Code sangat mudah disesuaikan, dan semuanya didasarkan pada kebutuhan Anda. Oleh karena itu, kami memberikan Anda endpoint ini untuk dengan mudah memperbarui Fixed Payment Code Anda yang Anda inginkan.

    Permintaan Pembaruan Fixed Payment Code

    Contoh Permintaan Pembaruan Fixed Payment Code

    bash

    curl https://api.xendit.co/fixed_payment_code/{fixed_payment_code_id} -X PATCH \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d expected_amount=20000
       -d name='Joe Contini'

    JSON

    {
      "expected_amount": 20000,
      "name": "Joe Contini"
    }
    Parameter Deskripsi
    name
    optional
    string Nama untuk Fixed Payment Code

    Karakter Hanya huruf
    Panjang minimal 1 karakter
    expected_amount
    optional
    integer positive Nominal yang diharapkan akan dibayar oleh pengguna akhir
  • minimal Rp 10,000 dan maksimal Rp 5,000,000 untuk Alfamart
  • minimal Rp 11,000 dan maksimal Rp 5,000,000 untuk Indomaret
  • expiration_date
    optional
    ISO 8601 Date Waktu yang ditentukan untuk tanggal kadaluarsa Fixed Payment Code. Anda dapat menetapkannya sebagai hari di masa lalu agar segera berakhir Fixed Payment Code

    zona waktu: UTC
    standar: Tanggal kedaluwarsa akan 30 tahun sejak VA dihasilkan

    Respon Pembaruan Fixed Payment Code

    Contoh Respon Pembaruan Fixed Payment Code

    {
       "owner_id": "5b614aa8e79f9214007244d4",
       "external_id": "123",
       "retail_outlet_name": "INDOMARET",
       "prefix": "TEST",
       "name": "Joe Contini",
       "payment_code": "TEST123456",
       "type": "USER",
       "expected_amount": 10000,
       "is_single_use": true,
       "expiration_date": "2049-07-31T17:00:00.000Z",
       "id": "5b61881e6cc2770f00117f73"
    }
    Parameter Deskripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    retail_outlet_name
    required
    string Nama Retail Outlet yang digunakan, misalnya ALFAMART atau INDOMARET
    prefix
    required
    string 3-6 karakter yang membedakan Fixed Payment Code Anda dari yang lain
    name
    required
    string Nama untuk Fixed Payment Code anda
    payment_code
    required
    string kode lengkap pembayaran tetap (termasuk prefix). Kode inilah yang harus dilakukan pengguna untuk memberi tahu kepada kasir Outlet Ritel
    expected_amount
    required
    integer positive Nominal yang diharapkan akan dibayarkan oleh pengguna akhir
  • minimal Rp 10,000 dan maksimal Rp 5,000,000 untuk Alfamart
  • minimal Rp 11,000 dan maksimal Rp 5,000,000 untuk Indomaret
  • is_single_use
    required
    boolean Nilai yang menentukan apakah Fixed Payment Code akan aktif setelah dibayar atau tidak
    expiration_date
    required
    ISO 8601 Date Waktu ketika Fixed Payment Code akan kedaluarsa
    id
    required
    string Kode unik untuk Fixed Payment Code

    Kesalahan Pembaruan Fixed Payment Code

    Kode Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Input gagal divalidasi. Kesalahan field berisi rincian tentang fields yang melanggar validasi.
    INVALID_JSON_FORMAT
    400
    Permintaan tidak sesuai dengan format JSON yang valid
    PAYMENT_CODE_OUTSIDE_RANGE
    400
    Fixed Payment Code yang Anda inginkan berada di luar rentang Anda. Untuk melakukan pengecekan rentang yang sesuai bisa dilakukan di Retail Outlets Settings
    RETAIL_OUTLET_NOT_SUPPORTED_ERROR
    400
    Retail Outlet yang digunakan saat ini tidak didukung.
    DUPLICATE_PAYMENT_CODE_ERROR
    400
    Kode pembayaran yang ingin anda buat sudah digunakan.
    EXPIRATION_DATE_INVALID_ERROR
    400
    Tanggal kadaluarsa yang anda inginkan tidak valid dikarenakan lebih awal dari waktu saat ini.
    MINIMUM_EXPECTED_AMOUNT_ERROR
    400
    Ekspektasi nominal hanya bisa lebih dari atau sama dengan Rp 10,000.
    MAXIMUM_EXPECTED_AMOUNT_ERROR
    400
    Ekspektasi nominal hanya bisa kurang dari atau sama dengan Rp 5,000,000.
    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.

    Mendapatkan Fixed Payment Code

    Endpoint: Mendapatkan Fixed Payment Code

    GET https://api.xendit.co/fixed_payment_code/{fixed_payment_code_id}

    Contoh Permintaan Mendapatkan Fixed Payment Code

    curl https://api.xendit.co/fixed_payment_code/{fixed_payment_code_id} -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RetailOutlet } = x;
    const retailOutletSpecificOptions = {};
    const ro = new RetailOutlet(retailOutletSpecificOptions);
    
    const resp = await ro.getFixedPaymentCode({
      id: '5b61881e6cc2770f00117f73',
    });
    console.log(resp);

    Terkadang anda harus mengetahui detil dari Fixed Payment Code anda. Endpoint ini dapat digunakan untuk mendapatkan detil terakhir dari Fixed Payment Code anda.

    Permintaan Mendapatkan Fixed Payment Code

    Parameter Deskripsi
    fixed_payment_code_id
    required
    string ID Fixed Payment Code yang akan diambil

    Mendapatkan Respon Fixed Payment Code

    Contoh Respon Mendapatkan Fixed Payment Code

    {
       "owner_id": "5b614aa8e79f9214007244d4",
       "external_id": "123",
       "retail_outlet_name": "ALFAMART",
       "prefix": "TEST",
       "name": "Joe Contini",
       "payment_code": "TEST123456",
       "type": "USER",
       "expected_amount": 20000,
       "is_single_use": true,
       "expiration_date": "2049-07-31T17:00:00.000Z",
       "id": "5b61881e6cc2770f00117f73"
    }
    Parameter Deskripsi
    owner_id
    required
    string ID pengguna anda
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    retail_outlet_name
    required
    string Nama Retail Outlet yang digunakan, misalnya ALFAMART atau INDOMARET
    prefix
    required
    string 3-6 karakter yang membedakan Fixed Payment Code Anda dari yang lain
    name
    required
    string Nama untuk Fixed Payment Code anda
    payment_code
    required
    string kode lengkap pembayaran tetap (termasuk prefix). Kode inilah yang harus dilakukan pengguna untuk memberi tahu kepada kasir Outlet Ritel
    expected_amount
    required
    integer positive Nominal yang diharapkan akan dibayarkan oleh pengguna akhir
  • minimal Rp 10,000 dan maksimal Rp 5,000,000 untuk Alfamart
  • minimal Rp 11,000 dan maksimal Rp 5,000,000 untuk Indomaret
  • is_single_use
    required
    boolean Nilai yang menentukan apakah Fixed Payment Code akan aktif setelah dibayar atau tidak
    expiration_date
    required
    ISO 8601 Date Waktu ketika Fixed Payment Code akan kedaluarsa
    id
    required
    string Kode unik untuk Fixed Payment Code

    Kesalahan Mendapatkan Fixed Payment Code

    Kode Kesalahan Deskripsi
    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.
    FIXED_PAYMENT_CODE_NOT_FOUND_ERROR
    404
    Fixed Payment Code tidak dapat ditemukan

    Notifikasi Pembayaran Fixed Payment Code

    Endpoint: Notifikasi Pembayaran Fixed Payment Code

    POST https://yourcompany.com/fixed_payment_code_paid_callback_url

    Ketika seseorang membayar ke Fixed Payment Code Anda, API callback kami akan mengenai URL Anda yang sudah Anda setel di dasbor.

    Contoh ini hanya digunakan untuk menunjukkan parameter yang mengirim dari API Xendit ke URL callback Anda dan tidak dapat diuji di sini. Jika anda menginginkan untuk mencoba permintaan notifikasi ini, gunakan fitur di dashboard dan pilih Callbacks settings.

    Header Parameter Description
    x-callback-token
    required
    string Token unik yang di dapat dari Xendit untuk memverifikasi asal dari panggilan balik tersebut

    Permintaan Notifikasi Pembayaran Fixed Payment Code

    Contoh Permintaan Notifikasi Pembayaran Fixed Payment Code

    bash

    curl --include \
         --request POST \
         --header "Content-Type: application/json" \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --data-binary "{
        fixed_payment_code_payment_id: \"5b61ffc470f7f3470165e7b3\",
        owner_id: \"5b614aa8e79f9214007244d4\",
        fixed_payment_code_id: \"5b61f49e6cc2770f00117f82\",
        payment_id:\"1533149124896\",
        external_id: \"123\",
        payment_code: \"TEST123456\",
        prefix: \"TEST\",
        retail_outlet_name: 'INDOMARET',
        amount: 20000,
        name: 'Joe Contini',
        transaction_timestamp: \"2018-07-31T08:15:03.080Z\",
        updated: \"2016-10-10T08:15:03.404Z\",
        created: \"2016-10-10T08:15:03.404Z\"
    }" \
    'https://api.xendit.co/fixed_payment_code_paid_callback_url'
    Parameter Deskripsi
    fixed_payment_code_payment_id
    required
    string ID unik untuk pembayaran Fixed Payment Code
    owner_id
    required
    string ID pengguna anda
    fixed_payment_code_id
    required
    string ID unik untuk Fixed Payment Code
    payment_id
    required
    string ID pembayaran sistem internal kami yang dapat digunakan sebagai referensi pembayaran
    external_id
    required
    string ID pilihan anda yang anda berikan saat melakukan permintaan
    payment_code
    required
    string kode lengkap pembayaran tetap (termasuk prefix). Kode inilah yang harus dilakukan pengguna untuk memberi tahu kepada kasir Outlet Ritel
    prefix
    required
    string 3-6 karakter yang membedakan Fixed Payment Code Anda dari yang lain
    retail_outlet_name
    required
    string Nama Retail Outlet yang digunakan, misalnya ALFAMART atau INDOMARET
    amount
    required
    integer positive Nominal yang telah dibayarkan
    name
    required
    string Nama untuk Fixed Payment Code
    transaction_timestamp
    required
    ISO 8601 Date Tanggal saat Fixed Payment Code dibayarkan

    Kesalahan Permintaan Notifikasi Pembayaran Fixed Payment Code

    Perhatikan bahwa dalam kasus di mana kami tidak mendapatkan respons yang berhasil dari server Anda pada percobaan pertama, kami akan mencoba lagi 2 kali lebih lama dengan penundaan 30 detik antara setiap percobaan. Setelah 3 kegagalan, kami mendapat peringatan internal bahwa callback telah gagal. Tim kami kemudian akan menghubungi Anda untuk menyelesaikan masalah.

    Invoice

    Pembuatan Invoice

    Endpoint: Pembuatan Invoice

    POST https://api.xendit.co/v2/invoices

    Invoice memungkinkan pengguna untuk membayar melalui berbagai macam metode pembayaran. Setelah pembayaran dilakukan, sebuah notifikasi akan dikirimkan tanpa memperhatikan metode pembayaran yang digunakan.

    Untuk mengetahui lebih lanjut tentang invoice, Anda dapat membuka tautan dokumentasi kami.

    Permintaan Pembuatan Invoice (Money-in write permission)

    Contoh Permintaan Pembuatan Invoice

    curl https://api.xendit.co/v2/invoices -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d external_id=demo_1475801962607 \
       -d payer_email=sample_email@xendit.co \
       -d description='Trip to Bali' \
       -d amount=230000
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $external_id = 'demo_1475801962607';
      $amount = 230000;
      $payer_email = 'sample_email@xendit.co';
      $description = 'Trip to Bali';
    
      $response = $xenditPHPClient->createInvoice($external_id, $amount, $payer_email, $description);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Invoice } = x;
    const invoiceSpecificOptions = {};
    const i = new Invoice(invoiceSpecificOptions);
    
    const resp = await i.createInvoice({
      externalID: 'demo_1475801962607',
      amount: 230000,
      payerEmail: 'sample_email@xendit.co',
      description: 'Trip to Bali',
    });
    console.log(resp);
    Header Parameter 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 Deskripsi
    external_id
    required
    string ID unik yang berfungsi sebagai tanda pengenal sebuah invoice di dalam sistem Anda
    payer_email
    required
    string Email pengguna yang akan membayar
    description
    required
    string Deskripsi invoice
    amount
    required
    number Jumlah tagihan yang harus dibayar. Jumlah tagihan minimum untuk pembuatan invoice adalah 11000.
    should_send_email
    optional

    default: false
    boolean Memastikan pengguna untuk mendapat email mengenai status invoice saat dibuat, dibayar, atau kedaluwarsa
    callback_virtual_account_id
    optional
    string Memungkinkan metode pembayaran melalui Fixed Virtual Account, masukkan nilai id yang didapatkan dari respons saat pembuatan fixed virtual account. Lihat Pembuatan Fixed Virtual Account
    invoice_duration
    optional
    number durasi waktu yang dimiliki pengguna akhir untuk membayar tagihan sebelum kadaluwarsa (dalam detik)
    success_redirect_url
    optional
    string Tautan yang diarahkan pengguna setelah pembayaran tagihan berhasil dibayarkan
    Contoh : https://yourcompany.com/example_item/10/success_page
    failure_redirect_url
    optional
    string Tautan yang diarahkan apabila tagihan telah kedaluwarsa
    Contoh : https://yourcompany.com/example_item/10/failed_checkout
    payment_methods
    optional
    array of strings pilihan metode pembayaran yang tersedia di akun Anda. biarkan kolom ini kosong jika semua saluran pembayaran diharapkan tersedia dalam invoice ini.
    Contoh : ["BCA", "BRI", "MANDIRI", "BNI", "PERMATA",
    "ALFAMART", "INDOMARET", "CREDIT_CARD", "OVO"]
    mid_label
    optional
    string MID label yang dapat Anda gunakan saat Anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator.
    currency
    optional
    string mata uang yang Anda gunakan untuk nominal penagihan invoice Anda
    example : "IDR"
    fixed_va
    optional

    default: false
    boolean Isi parameter ini dengan true untuk menggunakan satu nomor VA yang sama untuk beberapa XenInvoice yang anda berikan untuk pelanggan Anda.
    reminder_time
    optional
    integer positive Waktu pengingat invoice sebelum kedaluwarsa. Nilai yang diizinkan adalah 1, 3, 7, 15, atau 30 hari sebelum kedaluwarsa

    Respon Pembuatan Invoice

    Contoh Respon Pembuatan Invoice

    {
      "id": "579c8d61f23fa4ca35e52da4",
      "user_id": "5781d19b2e2385880609791c",
      "external_id": "invoice_123124123",
      "status": "PENDING",
      "merchant_name": "Xendit",
      "merchant_profile_picture_url": "https://xnd-companies.s3.amazonaws.com/prod/1493610897264_473.png",
      "amount": 50000,
      "payer_email": "albert@xendit.co",
      "description": "This is a description",
      "invoice_url": "https://invoice.xendit.co/web/invoices/595b6248c763ac05592e3eb4",
      "expiry_date": "2016-08-01T11:20:01.017Z",
      "available_banks": [
        {
          "bank_code": "BCA",
          "collection_type": "POOL",
          "bank_account_number": 1000008,
          "transfer_amount": 54000
        }
      ],
      "available_retail_outlets": [
          {
              "retail_outlet_name": "ALFAMART",
              "payment_code": "ALFA123456",
              "transfer_amount": 54000
          }
      ],
      "should_exclude_credit_card": false,
      "should_send_email": false,
      "created": "2017-06-12T14:00:00.306Z",
      "updated": "2017-06-12T14:00:00.306Z",
      "mid_label": "test-mid",
      "currency": "IDR",
      "fixed_va":true
    }
    Parameter Deskripsi
    id ID invoice yang didapatkan dari Xendit
    user_id ID bisnis Xendit Anda
    external_id ID invoice yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah invoice antara sistem kami dan sistem Anda
    status PENDING Invoice masih belum dibayar
    merchant_name Nama perusahaan atau situs Anda
    merchant_profile_picture_url Tautan ke gambar profil perusahaan Anda
    amount Jumlah tagihan invoice
    payer_email Email pembayar, didapatkan dari permintaan API Anda
    description Deskripsi invoice, didapatkan dari permintaan API Anda
    invoice_url Tautan untuk mengakses tampilan invoice, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    expiry_date Tanggal dan waktu invoice kedaluwarsa dalam standar ISO dengan default 24 jam.
    available_banks Metode pembayaran melalui bank yang tersedia berdasarkan konfigurasi
    bank_code BCA / MANDIRI / BNI / BRI / PERMATA
    collection_type POOL Tipe nonfixed virtual account
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    available_retail_outlets Metode pembayaran melalui outlet ritel berdasarkan konfigurasi
    retail_outlet_name Nama outlet ritel
    payment_code Kode unik identifikasi pembayaran
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    should_exclude_credit_card Setingan untuk menyertakan metode pembayaran kartu kredit di dalam invoice
    should_send_email Setingan untuk membuat pembayar dapat menerima email mengenai status invoice, apakah sudah dibuat, sudah dibayar, atau sudah kedaluwarsa
    created Waktu ISO yang tercatat saat invoice dibuat
    updated Waktu ISO yang tercatat saat invoice diperbarui
    mid_label MID label yang dapat anda gunakan saat anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator. Anda akan mendapatkan response ini jika anda menggunakan mid_label sebagai parameter anda saat menggunakan API pembuatan invoice
    currency Mata uang yang anda gunakan untuk nominal penagihan invoice Anda. Anda akan mendapatkan response ini jika anda menggunakan currency sebagai parameter anda saat menggunakan API pembuatan invoice
    fixed_va Parameter ini akan bernilai true jika Anda menggunakan satu nomor VA yang sama untuk beberapa XenInvoice yang anda berikan untuk satu pelanggan yang sama.
    reminder_date
    optional
    ISO8601 Waktu yang ditentukan oleh merchant dalam format ISO untuk mengingatkan pelanggan terkait pembayaran invoice (saat pengguna mengirim reminder_time pada waktu pembuatan invoice).

    Timezone: GMT+0

    Kesalahan Dalam Pembuatan Invoice

    Kode Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Masukan tidak lolos validasi. Pesan kesalahan mengandung detail masukan yang tidak lolos validasi.
    INVALID_JSON_FORMAT
    400
    Request body bukan format JSON yang valid.
    MINIMAL_TRANSFER_AMOUNT_ERROR
    400
    Tidak dapat membuat invoice karena jumlah tagihan di bawah Rp11000.
    MAXIMUM_TRANSFER_AMOUNT_ERROR
    400
    Tidak dapat membuat invoice karena jumlah tagihan di atas Rp1000000000.
    NO_COLLECTION_METHODS_ERROR
    400
    Akun Anda belum memiliki konfigurasi metode pembayaran (virtual account, kartu kredit, outlet ritel). Silakan kontak customer support kami untuk pengkonfigurasian.
    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.
    UNIQUE_ACCOUNT_NUMBER_UNAVAILABLE_ERROR
    404
    Tidak ada virtual account yang tersedia di dalam rentang non-fixed virtual account akun Anda.
    CALLBACK_VIRTUAL_ACCOUNT_NOT_FOUND_ERROR
    404
    ID Fixed virtual account yang dimaksud tidak valid.
    AVAILABLE_PAYMENT_CODE_NOT_FOUND_ERROR
    404
    Tidak ada payment code yang tersedia di dalam rentang outlet ritel akun Anda.
    INVALID_REMINDER_TIME
    400
    Nilai reminder_time tidak sesuai dengan standar yang diizinkan.

    Mendapatkan invoice

    Endpoint: Mendapatkan Invoice

    GET https://api.xendit.co/v2/invoices/{invoice_id}

    Permintaan Mendapatkan Invoice (Money-in read permission)

    Contoh Permintaan Mendapatkan Invoice

    curl https://api.xendit.co/v2/invoices/{invoice_id} -X GET \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $invoice_id = '587cc7b4863f2b462beb31f6';
    
      $response = $xenditPHPClient->getInvoice($invoice_id);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Invoice } = x;
    const invoiceSpecificOptions = {};
    const i = new Invoice(invoiceSpecificOptions);
    
    const resp = await i.getInvoice({
      invoiceID: '587cc7b4863f2b462beb31f6',
    });
    console.log(resp);
    Parameter Deskripsi
    invoice_id
    required
    string ID invoice yang ingin didapatkan

    Respon Mendapatkan Invoice

    Contoh Respon Mendapatkan Invoice

    {
      "id": "579c8d61f23fa4ca35e52da4",
      "user_id": "5781d19b2e2385880609791c",
      "external_id": "invoice_123124123",
      "status": "PENDING",
      "merchant_name": "Xendit",
      "merchant_profile_picture_url": "https://xnd-companies.s3.amazonaws.com/prod/1493610897264_473.png",
      "amount": 50000,
      "payer_email": "albert@xendit.co",
      "description": "This is a description",
      "invoice_url": "https://invoice.xendit.co/web/invoices/595b6248c763ac05592e3eb4",
      "expiry_date": "2016-08-01T11:20:01.017Z",
      "available_banks": [
        {
          "bank_code": "BCA",
          "collection_type": "POOL",
          "bank_account_number": 1000008,
          "transfer_amount": 54000
        }
      ],
      "available_retail_outlets": [
          {
              "retail_outlet_name": "ALFAMART",
              "payment_code": "ALFA123456",
              "transfer_amount": 54000
          }
      ],
      "should_exclude_credit_card": false,
      "should_send_email": false,
      "created": "2017-06-12T14:00:00.306Z",
      "updated": "2017-06-12T14:00:00.306Z",
      "mid_label": "test-mid",
      "currency": "IDR",
      "paid_at": "2017-06-13T11:00:00.306Z",
      "credit_card_charge_id": "579c8d61f23fa4ca35e52eas",
      "payment_method": "BANK_TRANSFER",
      "payment_channel": "BCA",
      "payment_destination": "10002233222294375",
      "success_redirect_url": "www.xendit.co",
      "failure_redirect_url": "www.xendit.co",
      "fixed_va":true
    }



    Parameter Deskripsi
    id ID invoice yang didapatkan dari Xendit
    user_id ID bisnis Xendit Anda
    external_id ID invoice yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah invoice antara sistem kami dan sistem Anda
    status PENDING invoice belum dibayar
    PAID invoice sudah berhasil dibayar
    SETTLED dana yang dibayarkan sudah masuk ke saldo
    EXPIRED invoice sudah kedaluwarsa
    merchant_name Nama perusahaan atau situs Anda
    merchant_profile_picture_url Tautan ke gambar profil perusahaan Anda
    amount Jumlah tagihan invoice
    payer_email Email pembayar, didapatkan dari permintaan API Anda
    description Deskripsi invoice, didapatkan dari permintaan API Anda
    invoice_url Tautan untuk mengakses tampilan invoice, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    expiry_date Tanggal dan waktu invoice kedaluwarsa dalam standar ISO dengan default 24 jam.
    available_banks Metode pembayaran melalui bank yang tersedia berdasarkan konfigurasi
    bank_code BCA / MANDIRI / BNI / BRI / PERMATA
    collection_type POOL Tipe nonfixed virtual account
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    available_retail_outlets Metode pembayaran melalui outlet ritel berdasarkan konfigurasi
    retail_outlet_name Nama outlet ritel
    payment_code Kode unik identifikasi pembayaran
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    should_exclude_credit_card

    Setingan untuk menyertakan metode pembayaran kartu kredit di dalam invoice

    should_send_email

    Setingan untuk membuat pembayar dapat menerima email mengenai status invoice, apakah sudah dibuat, sudah dibayar, atau sudah kedaluwarsa

    updated

    Waktu ISO yang tercatat saat invoice diperbarui

    created

    Waktu ISO yang tercatat saat invoice dibuat

    mid_label MID label yang dapat anda gunakan saat anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator. Anda akan mendapatkan response ini jika anda menggunakan mid_label sebagai parameter anda saat menggunakan API pembuatan invoice
    currency Mata uang yang anda gunakan untuk nominal penagihan invoice Anda. Anda akan mendapatkan response ini jika anda menggunakan currency sebagai parameter anda saat menggunakan API pembuatan invoice
    success_redirect_url Tautan yang diarahkan pengguna setelah pembayaran tagihan berhasil dibayarkan. Anda akan menerima response ini ketika anda menggunakan success_redirect_url sebagai salah satu optional parameter Anda dalam pembuatan invoice melalui API.
    failure_redirect_url Tautan yang diarahkan apabila tagihan telah kedaluwarsa. Anda akan menerima response ini ketika anda menggunakan failure_redirect_url sebagai salah satu optional parameter Anda dalam pembuatan invoice melalui API
    paid_at Data tanggal dan waktu ketika pelanggan Anda melakukan pembayaran. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    credit_card_charge_id Credit card charge ID ketika pelanggan Anda membayar invoice Anda degan kartu kredit. Anda akan mendapatkan response ini ketika invoice anda telah terbayar melalui kartu kredit.
    payment_method Metode pembayaran yang digunakan ketika pelanggan Anda membayar invoice Anda. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    Contoh : ["BANK_TRANSFER", "CREDIT_CARD", "RETAIL_OUTLET",
    "EWALLET"]
    payment_channel Channel pembayaran yang digunakan oleh pelanggan ketika membayar invoice anda. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    Contoh : ["BCA", "BRI", "MANDIRI",
    "BNI", "PERMATA", "ALFAMART",
    "OVO", "CREDIT_CARD"]
    payment_destination Nomor Virtual Account atau kode pembayaran Retail Outlet yang digunakan untuk membayar invoice(tidak akan ditunjukkan saat pembayaran invoice menggunakan kartu kredit atau e-wallet). Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    fixed_va Parameter ini akan bernilai true jika Anda menggunakan satu nomor VA yang sama untuk beberapa XenInvoice yang anda berikan untuk satu pelanggan yang sama.

    Kesalahan Dalam Mendapatkan Invoice

    Kode Kesalahan Deskripsi
    INVALID_JSON_FORMAT
    400
    Request body bukan format JSON yang 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.
    INVOICE_NOT_FOUND_ERROR
    404
    ID invoice yang dicari tidak valid

    Penutupan invoice

    Endpoint: Penutupan Invoice

    POST https://api.xendit.co/invoices/{invoice_id}/expire!

    Anda bisa menutup sebuah invoice secara langsung menggunakan endpoint ini.

    Catatan:

    1. Dengan menutup invoice, metode pembayaran yang tersedia melalui invoice tersebut juga akan tertutup: Non-fixed Virtual Account, Outlet Ritel, dan Kartu Kredit, tapi tidak untuk Fixed Virtual Account.
    2. Penutupan sebuah invoice yang terhubung dengan Fixed Virtual Account hanya akan memutus hubungan di antara keduanya sehingga pembayaran yang masuk ke Fixed Virtual Account ini akan selanjutnya dideteksi sebagai pembayaran Virtual Account dan bukan sebagai pembayaran invoice. Penutupan Fixed Virtual Account dapat dilakukan dengan mengubah expiration_date menggunakan Endpoint Perbarui Fixed Virtual Account .

    Permintaan Penutupan Invoice (Money-in write permission)

    Contoh Permintaan Penutupan Invoice

    curl https://api.xendit.co/invoices/{invoice_id}/expire! -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Invoice } = x;
    const invoiceSpecificOptions = {};
    const i = new Invoice(invoiceSpecificOptions);
    
    const resp = await i.expireInvoice({
      invoiceID: '587cc7b4863f2b462beb31f6',
    });
    console.log(resp);
    Parameter Deskripsi
    invoice_id
    required
    string ID invoice yang ingin ditutup

    Respon Penutupan Invoice

    Contoh Respon Penutupan Invoice

    {
      "id": "579c8d61f23fa4ca35e52da4",
      "user_id": "5781d19b2e2385880609791c",
      "external_id": "invoice_123124123",
      "status": "EXPIRED",
      "merchant_name": "Xendit",
      "merchant_profile_picture_url": "https://xnd-companies.s3.amazonaws.com/prod/1493610897264_473.png",
      "amount": 50000,
      "payer_email": "albert@xendit.co",
      "description": "This is a description",
      "invoice_url": "https://invoice.xendit.co/web/invoices/595b6248c763ac05592e3eb4",
      "expiry_date": "2016-08-01T11:20:01.017Z",
      "available_banks": [
        {
          "bank_code": "BCA",
          "collection_type": "POOL",
          "bank_account_number": 1000008,
          "transfer_amount": 54000
        }
      ],
      "available_retail_outlets": [
          {
              "retail_outlet_name": "ALFAMART",
              "payment_code": "ALFA123456",
              "transfer_amount": 54000
          }
      ],
      "should_exclude_credit_card": false,
      "should_send_email": false,
      "created": "2017-06-12T14:00:00.306Z",
      "updated": "2017-06-12T14:00:00.306Z"
    }
    Parameter Deskripsi
    id ID invoice yang didapatkan dari Xendit
    user_id ID bisnis Xendit Anda
    external_id ID invoice yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah invoice antara sistem kami dan sistem Anda
    status EXPIRED invoice sudah kedaluwarsa
    merchant_name Nama perusahaan atau situs Anda
    merchant_profile_picture_url Tautan ke gambar profil perusahaan Anda
    amount Jumlah tagihan invoice
    payer_email Email pembayar, didapatkan dari permintaan API Anda
    description Deskripsi invoice, didapatkan dari permintaan API Anda
    invoice_url Tautan untuk mengakses tampilan invoice, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    expiry_date Tanggal dan waktu invoice kedaluwarsa dalam standar ISO dengan default 24 jam.
    available_banks Metode pembayaran melalui bank yang tersedia berdasarkan konfigurasi
    bank_code BCA / MANDIRI / BNI / BRI / PERMATA
    collection_type POOL Tipe nonfixed virtual account
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    available_retail_outlets Metode pembayaran melalui outlet ritel berdasarkan konfigurasi
    retail_outlet_name Nama outlet ritel
    payment_code Kode unik identifikasi pembayaran
    bank_account_number Akun bank tujuan pembayaran
    transfer_amount (DEPRECATED) Jumlah tagihan yang harus dibayar
    bank_branch Tipe akun bank yang digunakan
    account_holder_name Nama pemegang akun
    should_exclude_credit_card

    Setingan untuk menyertakan metode pembayaran kartu kredit di dalam invoice

    should_send_email

    Setingan untuk membuat pembayar dapat menerima email mengenai status invoice, apakah sudah dibuat, sudah dibayar, atau sudah kedaluwarsa

    updated

    Waktu ISO yang tercatat saat invoice diperbarui

    created

    Waktu ISO yang tercatat saat invoice dibuat

    Kesalahan Dalam Penutupan Invoice

    Kode Kesalahan Deskripsi
    INVALID_JSON_FORMAT
    400
    Request body bukan format JSON yang 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.
    INVOICE_NOT_FOUND_ERROR
    404
    ID invoice tidak valid

    Notifikasi Invoice

    Endpoint: Notifikasi Invoice

    POST https://yourcompany.com/invoice_callback_url

    Saat sebuah invoice dibayar, sistem kami akan mengirimkan notifikasi ke URL notifikasi yang sudah dikonfigurasi di dasbor. Untuk instruksi lebih lanjut mengenai notifikasi dapat dilihat dalam dokumentasi invoice.

    Contoh di bawah ini hanya digunakan untuk memperlihatkan parameter notifikasi yang dikirimkan oleh API Xendit ke URL notifikasi Anda. Jika Anda ingin mengetes notifikasi ini, dapat menggunakan fitur pengetesan di dasbor dengan pergi ke Pengaturan > Developer > Callbacks.

    Permintaan Notifikasi Invoice

    Contoh Permintaan Notifikasi Invoice untuk Pembayaran Melalui Bank

    curl --include \
         --request POST \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --header "Content-Type: application/json" \
         --data-binary "{
          id: \"593f4ed1c3d3bb7f39733d83\",
          external_id: \"testing-invoice\",
          user_id: \"5848fdf860053555135587e7\",
          is_high: false,
          payment_method: \"BANK_TRANSFER\",
          status: \"PAID\",
          merchant_name: \"Xendit\",
          amount: 2000000,
          paid_amount: 2000000,
          bank_code: \"MANDIRI\",
          paid_at: \"2017-06-14T02:32:50.912Z\",
          payer_email: \"test@xendit.co\",
          description: \"Invoice callback test\",
          adjusted_received_amount: 1995000,
          fees_paid_amount: 5000,
          created: \"2017-06-13T02:32:49.827Z\",
          updated: \"2017-06-13T02:32:50.912Z\",
          currency: \"IDR\",
          payment_channel: \"MANDIRI\",
          payment_destination: \"8458478548758748\",
    }" \
    '{{your_company_domain}}/{{callback_url}}'

    Contoh Permintaan Notifikasi Invoice untuk Pembayaran Melalui Outlet Ritel

    curl --include \
         --request POST \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --header "Content-Type: application/json" \
         --data-binary "{
          id: \"593f4ed1c3d3bb7f39733d83\",
          external_id: \"testing-invoice\",
          user_id: \"5848fdf860053555135587e7\",
          is_high: false,
          payment_method: \"RETAIL_OUTLET\",
          status: \"PAID\",
          merchant_name: \"Xendit\",
          amount: 2000000,
          paid_amount: 2000000,
          paid_at: \"2017-06-14T02:32:50.912Z\",
          payer_email: \"test@xendit.co\",
          description: \"Invoice callback test\",
          adjusted_received_amount: 1995000,
          fees_paid_amount: 5000,
          created: \"2017-06-13T02:32:49.827Z\",
          updated: \"2017-06-13T02:32:50.912Z\",
          currency: \"IDR\",
          payment_channel: \"ALFAMART\",
          payment_destination: \"TEST815\",
    }" \
    '{{your_company_domain}}/{{callback_url}}'



    Parameter Deskripsi
    id ID invoice yang didapatkan dari Xendit
    user_id ID bisnis Xendit Anda
    external_id ID invoice yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah invoice antara sistem kami dan sistem Anda
    merchant_name Nama perusahaan atau situs Anda
    amount Jumlah tagihan invoice
    fees_paid_amount Biaya Xendit diambil langsung dari pembayaran invoice - terima kasih karena sudah mendukung dunia pembayaran yang lebih baik :)
    status PAID invoice sudah dibayar
    EXPIRED invoice sudah kedaluwarsa. Notifikasi invoice kedaluwarsa secara umum tidak diaktifkan. Jika Anda ingin mengaktifkannya untuk bisnis Anda, Anda dapat melakukannya di Xendit Dashboard
    payer_email Email pembayar, didapatkan dari permintaan API Anda
    description Deskripsi invoice, didapatkan dari permintaan API Anda
    adjusted_received_amount Jumlah netto uang yang masuk ke saldo Anda setelah dipotong biaya. Terima kasih karena sudah menggunakan jasa kami :)
    payment_method Metode pembayaran yang dipakai
    POOL Tipe nonfixed virtual account
    CREDIT_CARD Tipe kartu kredit
    bank_code Kode bank yang digunakan untuk menerima pembayaran jika metode pembayaran yang dipakai adalah POOL
    retail_outlet_name Kode outlet ritel yang digunakan untuk menerima pembayaaran jika metode pembayaran yang dipakai adalah RETAIL_OUTLET
    paid_amount Jumlah tagihan yang dibayar
    updated Waktu ISO yang tercatat saat invoice diperbarui
    created Waktu ISO yang tercatat saat invoice dibuat
    mid_label MID label yang dapat anda gunakan saat anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator. Anda akan mendapatkan response ini jika anda menggunakan mid_label sebagai parameter anda saat menggunakan API pembuatan invoice
    currency Mata uang yang anda gunakan untuk nominal penagihan invoice Anda. Anda akan mendapatkan response ini jika anda menggunakan currency sebagai parameter anda saat menggunakan API pembuatan invoice
    success_redirect_url Tautan yang diarahkan pengguna setelah pembayaran tagihan berhasil dibayarkan. Anda akan menerima response ini ketika anda menggunakan success_redirect_url sebagai salah satu optional parameter Anda dalam pembuatan invoice melalui API.
    failure_redirect_url Tautan yang diarahkan apabila tagihan telah kedaluwarsa. Anda akan menerima response ini ketika anda menggunakan failure_redirect_url sebagai salah satu optional parameter Anda dalam pembuatan invoice melalui API
    paid_at Data tanggal dan waktu ketika pelanggan Anda melakukan pembayaran. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    credit_card_charge_id Credit card charge ID ketika pelanggan Anda membayar invoice Anda degan kartu kredit. Anda akan mendapatkan response ini ketika invoice anda telah terbayar melalui kartu kredit.
    payment_method Metode pembayaran yang digunakan ketika pelanggan Anda membayar invoice Anda. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    Contoh : ["BANK_TRANSFER", "CREDIT_CARD", "RETAIL_OUTLET",
    "EWALLET"]
    payment_channel Channel pembayaran yang digunakan oleh pelanggan ketika membayar invoice anda. Anda akan mendapatkan response ini ketika invoice anda telah terbayar.
    Contoh : ["BCA", "BRI", "MANDIRI",
    "BNI", "PERMATA", "ALFAMART",
    "OVO", "CREDIT_CARD"]
    payment_destination Nomor Virtual Account atau kode pembayaran Retail Outlet yang digunakan untuk membayar invoice(tidak akan ditunjukkan saat pembayaran invoice menggunakan kartu kredit atau e-wallet). Anda akan mendapatkan response ini ketika invoice anda telah terbayar.

    Kesalahan Dalam Notifikasi Invoice

    Jika kami tidak mendapat respon sukses dari server Anda, kami akan mencoba lagi untuk mengirimkan notifikasi sebanyak 2 kali dengan jeda waktu 30 detik untuk setiap percobaan. Setelah 3 kali gagal, kami akan mendapatkan peringatan internal mengenai pengiriman notifikasi yang gagal. Tim kami akan segera mengontak Anda untuk menyelesaikan isu ini.

    Pembayaran Recurring

    Membuat Pembayaran Recurring

    Endpoint: Membuat Pembayaran Recurring

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

    Pembayaran Recurring membantu Anda untuk menagih pelanggan Anda menggunakan sistem kami.

    Request Pembuatan Recurring

    Contoh: Request Pembuatan Recurring

    curl https://api.xendit.co/recurring_payments -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d external_id=recurring_31451441 \
       -d payer_email=sample_email@xendit.co \
       -d interval=MONTH \
       -d interval_count=1 \
       -d description='Monthly room cleaning service' \
       -d amount=125000
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $external_id = 'recurring_31451441';
      $amount = 125000;
      $payer_email = 'sample_email@xendit.co';
      $interval = 'MONTH';
      $interval_count = 1;
      $description = 'Monthly room cleaning service';
    
      $response = $xenditPHPClient->createRecurringPayment($external_id, $amount, $payer_email, $interval, $interval_count, $description);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.createPayment({
      externalID: 'recurring_31451441',
      amount: 125000,
      payerEmail: 'sample_email@xendit.co',
      interval: RecurringPayment.Interval.Month,
      intervalCount: 1,
      description: 'Monthly room cleaning service',
    });
    console.log(resp);
    Header Parameter 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 Deskripsi
    external_id
    required
    string ID pilihan Anda yang berfungsi sebagai tanda pengenal sebuah Recurring dalam sistem Anda
    payer_email
    required
    string Email yang dimiliki oleh pelanggan yang Anda maksudkan untuk membayar tagihan Recurring Anda
    description
    required
    string Deskripsi pembayaran atau tagihan Recurring Anda
    amount
    required
    number Nominal harga per Invoice per interval.
    Nominal paking kecil untuk membuat Recurring adalah IDR 10,0000. Nominal maksimum adalah IDR 1,000,000,000
    interval
    required
    string Frekuensi pembayaran Recurring Anda dimana datanya salah satu di antaraDAY, WEEK, MONTH.
    interval_count
    required
    number Jarak antara pembayaran Recurring untuk pelanggan Anda. Sebagai contoh, interval=MONTH and interval_count=3 pelanggan Anda akan ditagihkan setiap 3 bulan sekali.
    total_recurrence
    optional
    number Total berapa kali anda akan menagih pelanggan Anda. Jika anda menginput angka 3, maka Xendit akan menagih pelanggan Anda sebanyak 3 kali. Jika anda menginput total_recurrence dengan angka 3, interval_count dengan angka 1 dan interval dengan DAY, Xendit akan menagih pelanggan Anda sebanyak 3 kali dalam 3 hari setelah Anda membuat Recurring melalui API.
    invoice_duration
    optional
    number Jumlah detik yang dibutuhkan oleh pelanggan Anda untuk membayar invoice yang ditagihkan kepada pelanggan Anda. Jika tidak diisi, invoice_duration akan mengikuti durasi default yang disediakan oleh Xendit.
    should_send_email
    optional

    default: false
    boolean Gunakan true agar pelanggan anda mendapatkan email notifikasi ketika invoice dibuat, dibayar dan kedaluwarsa
    missed_payment_action
    optional

    default: IGNORE
    string Gunakan IGNORE, jika Anda ingin meneruskan penagihan Recurring Anda saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu. Gunakan STOP, jika Anda ingin menghentikan penagihan Recurring secara otomatis saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu
    credit_card_token
    optional
    string Token ID yang Anda dapatkan setelah anda melakukan tokenisasi pada kartu kredit pelanggan Anda. Gunakan multiple_use dengan nilai true saat tokenisasi untuk mengaktifkan autocharge pada kartu kredit pelanggan Anda. Jika parameter ini kosong, autocharge tidak akan diaktifkan untuk Recurring ini. Harap mengikuti halaman tokenisasi kartu kredit untuk menggunakan multiple use token.
    start_date
    optional
    string (ISO 8601) Tanggal dimana penagihan Recurring pertama kali ditagihkan ke pelanggan Anda.
    success_redirect_url
    optional
    string Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda telah terbayar
    Contoh : https://yourcompany.com/example_item/10/success_page
    failure_redirect_url
    optional
    string Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda tidak terbayar hingga kedaluwarsa
    Contoh : https://yourcompany.com/example_item/10/failed_checkout
    recharge
    optional
    default: true
    boolean Isi parameter ini dengan true ketika Anda ingin mengaktifkan auto-charge dan mendapatkan informasi kartu kredit melalui XenInvoice.
    charge_immediately
    optional

    boolean Gunakan true jika Anda ingin melakukan penagihan pertama sebelum penagihan yang akan dilakukan pada start_date,
    Invoice selanjutnya yang akan ditagihkan ke pelanggan akan dibuat pada start_date. Dan waktu pembuatan untuk invoice selanjutnya lagi akan jatuh pada
    interval*interval_count + start_date

    Response Pembuatan Pembayaran Recurring

    Contoh: Response Pembuatan Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "ACTIVE",
        "amount": 125000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "MONTH",
        "interval_count": 1,
        "recurrence_progress": 1,
        "should_send_email": false,
        "missed_payment_action": "IGNORE",
        "last_created_invoice_url": "https://invoice-staging.xendit.co/web/invoices/5d520f19f24af434094c9fa9",
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2017-06-12T14:00:00.306Z",
        "start_date": "2017-07-12T14:00:00.306Z",
        "recharge": true
    }
    Parameter Deskripsi
    id ID dari Recurring Anda yang diberikan dari Xendit
    user_id Xendit Business ID Anda
    external_id ID pilihan Anda yang berfungsi sebagai tanda pengenal sebuah Recurring dalam sistem Anda
    status ACTIVE Tagihan Recurring Anda ber-status aktif
    STOPPED Tagihan Recurring Anda telah dihentikan dari sistem Xendit
    PAUSED Tagihan Recurring Anda dihentikan untuk sementara waktu. Harap untuk melanjutkan tagihan Recurring Anda dengan Resume Recurring API
    payer_email
    required
    Email yang dimiliki oleh pelanggan yang Anda maksudkan untuk membayar tagihan Recurring Anda
    last_created_invoice_url URL yang disediakan oleh Xendit untuk penagihan recurring
    description
    required
    Deskripsi pembayaran atau tagihan Recurring Anda
    amount
    required
    Nominal harga per Invoice per interval.
    Nominal paling kecil untuk membuat Recurring adalah IDR 10,0000. Nominal maksimum adalah IDR 1,000,000,000
    interval
    required
    Frekuensi pembayaran Recurring Anda dimana datanya salah satu di antaraDAY, WEEK, MONTH.
    interval_count
    required
    Jarak antara pembayaran Recurring untuk pelanggan Anda. Sebagai contoh, interval=MONTH and interval_count=3 pelanggan Anda akan ditagihkan setiap 3 bulan sekali.
    total_recurrence
    optional
    Total berapa kali anda akan menagih pelanggan Anda. Jika anda menginput angka 3, maka Xendit akan menagih pelanggan Anda sebanyak 3 kali. Jika anda menginput total_recurrence dengan angka 3, interval_count dengan angka 1 dan interval dengan DAY, Xendit akan menagih pelanggan Anda sebanyak 3 kali dalam 3 hari setelah Anda membuat Recurring melalui API.
    invoice_duration
    optional
    Jumlah detik yang dibutuhkan oleh pelanggan Anda untuk membayar invoice yang ditagihkan kepada pelanggan Anda. Jika tidak diisi, invoice_duration akan mengikuti durasi default yang disediakan oleh Xendit.
    should_send_email
    optional

    default: false
    Gunakan true agar pelanggan anda mendapatkan email notifikasi ketika invoice dibuat, dibayar dan kedaluwarsa
    missed_payment_action
    optional

    default: IGNORE
    Gunakan IGNORE, jika Anda ingin meneruskan penagihan Recurring Anda saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu. Gunakan STOP, jika Anda ingin menghentikan penagihan Recurring secara otomatis saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu
    credit_card_token
    optional
    Token ID yang Anda dapatkan setelah anda melakukan tokenisasi pada kartu kredit pelanggan Anda. Gunakan multiple_use dengan nilai true saat tokenisasi untuk mengaktifkan autocharge pada kartu kredit pelanggan Anda. Jika parameter ini kosong, autocharge tidak akan diaktifkan untuk Recurring ini. Harap mengikuti halaman tokenisasi kartu kredit untuk menggunakan multiple use token.
    start_date
    optional
    Tanggal dimana penagihan Recurring pertama kali ditagihkan ke pelanggan Anda.
    success_redirect_url
    optional
    Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda telah terbayar
    Contoh : https://yourcompany.com/example_item/10/success_page
    failure_redirect_url
    optional
    Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda tidak terbayar hingga kedaluwarsa
    Contoh : https://yourcompany.com/example_item/10/failed_checkout
    created Sebuah ISO timestamp saat tagihan Recurring dibuat
    updated Sebuah ISO timestamp saat tagihan Recurring terakhir kali diubah
    recharge Disaat nilai dari parameter ini adalah true, berarti Anda ingin mengaktifkan auto-charge dan mengambil informasi kartu kredit melalui XenInvoice.
    charge_immediately
    optional

    boolean Disaat nilai dari parameter ini adalah true, berarti invoice pertama telah dibuat sebelum pembuatan invoice pada start_date

    Eror dalam Pembuatan Pembayaran Recurring

    Error Code Description
    API_VALIDATION_ERROR
    400
    Data yang di berikan tidak melewati validasi kami dengan baik. Variabel yang mengalami kesalahan ditampilkan di pesan kesalahan yang dibalikkan oleh Xendit.
    INVALID_JSON_FORMAT
    400
    bukan format JSON yang valid.
    INVALID_CREDIT_CARD_TOKEN_ERROR
    400
    Token kartu kredit tidak valid.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini

    Mendapatkan Sebuah Data Pembayaran Recurring

    Endpoint: Mendapatkan Sebuah Data Pembayaran Recurring

    GET https://api.xendit.co/recurring_payments/{id}

    Request untuk Mendapatkan Sebuah Data Pembayaran Recurring

    Contoh Request untuk Mendapatkan Sebuah Data Pembayaran Recurring

    curl https://api.xendit.co/recurring_payments/{id} \
      -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.getPayment({ id: '579c8d61f23fa4ca35e52da3' });
    console.log(resp);
    Parameter Deskripsi
    id ID dari Recurring Anda yang diberikan dari Xendit

    Response dari Mendapatkan Sebuah Data Pembayaran Recurring

    Contoh Response dari Mendapatkan Sebuah Data Pembayaran Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "ACTIVE",
        "amount": 125000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "MONTH",
        "interval_count": 1,
        "recurrence_progress": 1,
        "should_send_email": true,
        "missed_payment_action": "IGNORE",
        "last_created_invoice_url": "https://invoice-staging.xendit.co/web/invoices/5d520f19f24af434094c9fa9",
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2018-06-12T14:00:00.306Z",
        "start_date": "2017-07-12T14:00:00.306Z",
        "recharge":true
    }
    Parameter Deskripsi
    id ID dari Recurring Anda yang diberikan dari Xendit
    user_id Xendit Business ID Anda
    external_id ID pilihan Anda yang berfungsi sebagai tanda pengenal sebuah Recurring dalam sistem Anda
    status ACTIVE Tagihan Recurring Anda ber-status aktif
    STOPPED Tagihan Recurring Anda telah dihentikan dari sistem Xendit
    PAUSED Tagihan Recurring Anda dihentikan untuk sementara waktu. Harap untuk melanjutkan tagihan Recurring Anda dengan Resume Recurring API
    payer_email
    required
    Email yang dimiliki oleh pelanggan yang Anda maksudkan untuk membayar tagihan Recurring Anda
    description
    required
    Deskripsi pembayaran atau tagihan Recurring Anda
    amount
    required
    Nominal harga per Invoice per interval.
    Nominal paking kecil untuk membuat Recurring adalah IDR 10,0000. Nominal maksimum adalah IDR 1,000,000,000
    interval
    required
    Frekuensi pembayaran Recurring Anda dimana datanya salah satu di antaraDAY, WEEK, MONTH.
    interval_count
    required
    Jarak antara pembayaran Recurring untuk pelanggan Anda. Sebagai contoh, interval=MONTH and interval_count=3 pelanggan Anda akan ditagihkan setiap 3 bulan sekali.
    total_recurrence
    optional
    Total berapa kali anda akan menagih pelanggan Anda. Jika anda menginput angka 3, maka Xendit akan menagih pelanggan Anda sebanyak 3 kali. Jika anda menginput total_recurrence dengan angka 3, interval_count dengan angka 1 dan interval dengan DAY, Xendit akan menagih pelanggan Anda sebanyak 3 kali dalam 3 hari setelah Anda membuat Recurring melalui API.
    invoice_duration
    optional
    Jumlah detik yang dibutuhkan oleh pelanggan Anda untuk membayar invoice yang ditagihkan kepada pelanggan Anda. Jika tidak diisi, invoice_duration akan mengikuti durasi default yang disediakan oleh Xendit.
    should_send_email
    optional

    default: false
    Gunakan true agar pelanggan anda mendapatkan email notifikasi ketika invoice dibuat, dibayar dan kedaluwarsa
    missed_payment_action
    optional

    default: IGNORE
    Gunakan IGNORE, jika Anda ingin meneruskan penagihan Recurring Anda saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu. Gunakan STOP, jika Anda ingin menghentikan penagihan Recurring secara otomatis saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu
    credit_card_token
    optional
    Token ID yang Anda dapatkan setelah anda melakukan tokenisasi pada kartu kredit pelanggan Anda. Gunakan multiple_use dengan nilai true saat tokenisasi untuk mengaktifkan autocharge pada kartu kredit pelanggan Anda. Jika parameter ini kosong, autocharge tidak akan diaktifkan untuk Recurring ini. Harap mengikuti halaman tokenisasi kartu kredit untuk menggunakan multiple use token.
    start_date
    optional
    Tanggal dimana penagihan Recurring pertama kali ditagihkan ke pelanggan Anda.
    success_redirect_url
    optional
    Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda telah terbayar
    Contoh : https://yourcompany.com/example_item/10/success_page
    failure_redirect_url
    optional
    Pelanggan Anda akan di-arahkan ke URL yang Anda input di parameter ini saat pembayaran invoice pelanggan Anda tidak terbayar hingga kedaluwarsa
    Contoh : https://yourcompany.com/example_item/10/failed_checkout
    created Sebuah ISO timestamp saat tagihan Recurring dibuat
    updated Sebuah ISO timestamp saat tagihan Recurring terakhir kali diubah
    last_created_invoice_url URL yang disediakan oleh Xendit untuk penagihan recurring
    recharge Disaat nilai dari parameter ini adalah true, berarti Anda ingin mengaktifkan auto-charge dan mengambil informasi kartu kredit melalui XenInvoice.
    charge_immediately
    optional

    boolean Disaat nilai dari parameter ini adalah true, berarti invoice pertama telah dibuat sebelum pembuatan invoice pada start_date

    Eror dalam Mengambil Pembayaran Recurring

    Error Code Description
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini
    NOT_FOUND_ERROR
    404
    Tidak dapat menemukan Recurring dengan ID.

    Mengubah Pembayaran Recurring

    Jika anda ingin mengubah pembayaran Recurring Anda, Anda dapat mengakses API berikut untuk mengubah amount, interval, interval_count, should_send_email, missed_payment_action atau credit_card_token

    Endpoint: Mengubah Pembayaran Recurring

    PATCH https://api.xendit.co/recurring_payments/{id}

    Request Mengubah Pembayaran Recurring

    Contoh: Request Mengubah Pembayaran Recurring

    curl https://api.xendit.co/recurring_payments/579c8d61f23fa4ca35e52da3 \
       -X PATCH \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d amount=80000 \
       -d interval=WEEK \
       -d interval_count=2 \
       -d should_send_email=true \
       -d missed_payment_action=STOP \
       -d credit_card_token=522f0ba2ab70de5d2b409eee \
    
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.editPayment({
      id: '579c8d61f23fa4ca35e52da3',
      amount: 80000,
      interval: RecurringPayment.Interval.Week,
      intervalCount: 2,
      shouldSendEmail: true,
      missedPaymentAction: RecurringPayment.Action.Stop,
      creditCardToken: '522f0ba2ab70de5d2b409eee',
    });
    console.log(resp);
    Parameter Description
    id
    required
    string ID dari Recurring Anda yang diberikan dari Xendit
    amount
    optional
    number Nominal harga per Invoice per interval.
    Nominal paking kecil untuk membuat Recurring adalah IDR 10,0000. Nominal maksimum adalah IDR 1,000,000,000
    credit_card_token
    optional
    string Token ID yang Anda dapatkan setelah anda melakukan tokenisasi pada kartu kredit pelanggan Anda. Gunakan multiple_use dengan nilai true saat tokenisasi untuk mengaktifkan autocharge pada kartu kredit pelanggan Anda. Jika parameter ini kosong, autocharge tidak akan diaktifkan untuk Recurring ini. Harap mengikuti halaman tokenisasi kartu kredit untuk menggunakan multiple use token.
    interval
    optional
    string Frekuensi pembayaran Recurring Anda dimana datanya salah satu di antaraDAY, WEEK, MONTH.
    interval_count
    optional
    number Jarak antara pembayaran Recurring untuk pelanggan Anda. Sebagai contoh, interval=MONTH and interval_count=3 pelanggan Anda akan ditagihkan setiap 3 bulan sekali.
    should_send_email
    optional
    boolean Gunakan true agar pelanggan anda mendapatkan email notifikasi ketika invoice dibuat, dibayar dan kedaluwarsa
    invoice_duration
    optional
    number Jumlah detik yang dibutuhkan oleh pelanggan Anda untuk membayar invoice yang ditagihkan kepada pelanggan Anda. Jika tidak diisi, invoice_duration akan mengikuti durasi default yang disediakan oleh Xendit.
    missed_payment_action
    optional
    string Gunakan IGNORE, jika Anda ingin meneruskan penagihan Recurring Anda saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu. Gunakan STOP, jika Anda ingin menghentikan penagihan Recurring secara otomatis saat pelanggan Anda tidak membayar tagihan Recurring pada siklus pembayaran tertentu

    Response Mengubah Pembayaran Recurring

    Contoh: Response Mengubah Pembayaran Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "ACTIVE",
        "amount": 80000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "WEEK",
        "interval_count": 2,
        "recurrence_progress": 1,
        "should_send_email": true,
        "missed_payment_action": "STOP",
        "recharge": true,
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2017-06-12T14:00:00.306Z",
        "start_date": "2017-06-19T14:00:00.306Z"
    }

    Semua response akan sama dengan Get Recurring

    Eror dalam Mengubah Pembayaran Recurring

    Error Code Description
    NOT_FOUND_ERROR
    404
    Tidak dapat menemukan Recurring dengan ID.
    API_VALIDATION_ERROR
    400
    Data yang di berikan tidak melewati validasi kami dengan baik. Variabel yang mengalami kesalahan ditampilkan di pesan kesalahan yang dibalikkan oleh Xendit.
    INVALID_JSON_FORMAT
    400
    bukan format JSON yang valid.
    INVALID_CREDIT_CARD_TOKEN_ERROR
    400
    Token kartu kredit tidak valid.
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini

    Menghentikan Pembayaran Recurring

    Anda dapat menghentikan pembayaran Recurring Anda dengan API berikut.

    Endpoint: Menghentikan Pembayaran Recurring

    POST https://api.xendit.co/recurring_payments/{id}/stop!

    Request Menghentikan Pembayaran Recurring

    Contoh: Request Menghentikan Pembayaran Recurring

    curl https://api.xendit.co/recurring_payments/{id}/stop! -X POST \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $id = '579c8d61f23fa4ca35e52da3';
    
      $response = $xenditPHPClient->stopRecurring($id);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.stopPayment({ id: '579c8d61f23fa4ca35e52da3' });
    console.log(resp);
    Parameter Deskripsi
    id
    required
    string ID dari Recurring Anda yang diberikan dari Xendit

    Response Menghentikan Pembayaran Recurring

    Contoh: Response Menghentikan Pembayaran Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "STOPPED",
        "amount": 125000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "MONTH",
        "interval_count": 1,
        "recurrence_progress": 1,
        "should_send_email": true,
        "missed_payment_action": "IGNORE",
        "recharge": true,
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2018-06-12T14:00:00.306Z",
        "start_date": "2017-07-12T14:00:00.306Z"
    }

    Semua response akan sama dengan Get Recurring

    Eror dalam Menghentikan Pembayaran Recurring

    Error Code Description
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini
    NOT_FOUND_ERROR
    404
    Tidak dapat menemukan Recurring dengan ID

    Menghentikan Sementara Pembayaran Recurring

    Endpoint: Menghentikan Sementara Pembayaran Recurring

    POST https://api.xendit.co/recurring_payments/{id}/pause!

    Request Menghentikan Sementara Pembayaran Recurring

    Contoh Request Menghentikan Sementara Pembayaran Recurring

    curl https://api.xendit.co/recurring_payments/{id}/pause!
      -X POST \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.pausePayment({ id: '579c8d61f23fa4ca35e52da3' });
    console.log(resp);
    Parameter Deskripsi
    id
    required
    string ID dari Recurring Anda yang diberikan dari Xendit

    Response Menghentikan Sementara Pembayaran Recurring

    Contoh: Response Menghentikan Sementara Pembayaran Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "PAUSED",
        "amount": 125000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "MONTH",
        "interval_count": 1,
        "recurrence_progress": 1,
        "should_send_email": true,
        "missed_payment_action": "IGNORE",
        "recharge": true,
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2018-06-12T14:00:00.306Z",
        "start_date": "2017-07-12T14:00:00.306Z"
    }

    Semua response akan sama dengan Get Recurring

    Eror Menghentikan Sementara Pembayaran Recurring

    Error Code Description
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini
    NOT_FOUND_ERROR
    404
    Tidak dapat menemukan Recurring dengan ID

    Melanjutkan Pembayaran Recurring

    Endpoint: Melanjutkan Pembayaran Recurring

    POST https://api.xendit.co/recurring_payments/{id}/resume!

    Request Melanjutkan Pembayaran Recurring

    Anda dapat melanjutkan pembayaran Recurring yang dihentikan sementara dengan API berikut.

    Contoh: Request Melanjutkan Pembayaran Recurring

    curl https://api.xendit.co/recurring_payments/{id}/resume!
      -X POST \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { RecurringPayment } = x;
    const rpSpecificOptions = {};
    const rp = new RecurringPayment(rpSpecificOptions);
    
    const resp = await rp.resumePayment({ id: '579c8d61f23fa4ca35e52da3' });
    console.log(resp);
    Parameter Deskripsi
    id
    required
    string ID dari Recurring Anda yang diberikan dari Xendit

    Response Melanjutkan Pembayaran Recurring

    Contoh: Response Melanjutkan Pembayaran Recurring

    {
        "id": "579c8d61f23fa4ca35e52da3",
        "user_id": "5781d19b2e2385880609791c",
        "external_id": "recurring_31451441",
        "status": "ACTIVE",
        "amount": 125000,
        "payer_email": "sample_email@xendit.co",
        "description": "Monthly room cleaning service",
        "interval": "MONTH",
        "interval_count": 1,
        "recurrence_progress": 1,
        "should_send_email": true,
        "missed_payment_action": "IGNORE",
        "recharge": true,
        "created": "2017-06-12T14:00:00.306Z",
        "updated": "2018-06-12T14:00:00.306Z",
        "start_date": "2017-07-12T14:00:00.306Z"
    }

    Semua response akan sama dengan Get Recurring

    Eror Melanjutkan Pembayaran Recurring

    Error Code Description
    REQUEST_FORBIDDEN_ERROR
    403
    API key yang digunakan tidak memiliki hak akses untuk melakukan request ini. Dimohon untuk menggunakan hak akses yang tepat untuk key tersebut. Pelajari lebih dalam di sini
    NOT_FOUND_ERROR
    404
    Tidak dapat menemukan Recurring dengan ID

    Recurring Callback

    Xendit akan memberikan notifikasi mengenai pembayaran Recurring Anda melalui Invoice Callback. Response tambahan dari Invoice Callback jika Invoice Anda dihasilkan oleh pembayaran Recurring:

    Parameter Deskripsi
    recurring_payment_id string ID dari Recurring Anda yang diberikan dari Xendit

    Mendapatkan Daftar Pembayaran Recurring

    Untuk mendapatkan daftar pembayaran Recurring, Anda dapat melakukannya melalui List all invoices dan menggunakan parameter tambahan. Berikut parameter tambahan yang harus dimasukkan:

    Parameter Deskripsi
    recurring_payment_id string ID dari Recurring Anda yang diberikan dari Xendit

    Payouts

    Memudahkan pengiriman dana ke pelanggan Anda, menggunakan UI yang kami sediakan ke berbagai channel pembayaran.

    Pembuatan Payout

    Endpoint: Pembuatan Payouts

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

    Permintaan Pembuatan Payout

    Contoh Permintaan Pembuatan Payout

    curl https://api.xendit.co/payouts -X POST \
    -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
    -d external_id=demo_2392329329 \
    -d amount=23000 \
    -d email=demo@xendit.co
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Payout } = x;
    const payoutSpecificOptions = {};
    const p = new Payout(payoutSpecificOptions);
    
    const resp = await p.createPayout({
      externalID: 'demo_2392329329',
      amount: 23000,
      email: 'demo@xendit.co'
    });
    console.log(resp);
    Parameter Deskripsi
    external_id
    required
    string ID unik yang berfungsi sebagai tanda pengenal sebuah payout di dalam sistem Anda.

    Maksimal: 200 karakter
    amount
    required
    integer positive Jumlah tagihan yang akan dibayarkan. Jumlah tagihan maksimal tergantung pada saldo Anda.
    email
    optional
    string Alamat email yang ingin Anda kirimkan notifikasi.

    Respon Pembuatan Payout

    Contoh Respon Pembuatan Payout

    {
      "id": "67f1b30c-0262-4955-8777-95aa0478c2fc",
      "external_id": "demo_2392329329",
      "amount": 23000,
      "passcode": "827995",
      "merchant_name": "First Business",
      "status": "ISSUED",
      "expiration_timestamp": "2019-12-10T06:13:21.637Z",
      "created": "2019-12-09T06:13:20.363Z",
      "payout_url": "https://payout.xendit.co/web/67f1b30c-0262-4955-8777-95aa0478c2fc"
    }
    Parameter Deskripsi
    id
    required
    string ID payout yang didapatkan dari Xendit.
    external_id
    required
    string ID payout yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah payout antara sistem kami dan sistem Anda.

    Maksimal: 200 karakter
    amount
    required
    integer positive Jumlah tagihan yang akan dibayarkan. Jumlah tagihan maksimal tergantung pada saldo Anda.
    passcode
    required
    string Kode yang secara acak diterbitkan untuk melakukan klaim pada jumlah tagihan.
    merchant_name
    optional
    string Nama perusahaan atau situs Anda.
    status
    required
    ISSUED string Payout telah diisukan (status pertama setelah sukses melakukan permintaan pembuatan payout).
    DISBURSING string Payout sedang dicairkan. Jumlah tagihan sedang dicairkan dari saldo Anda ke akun rekening tujuan.
    VOIDED string Payout telah dibatalkan. Status ini muncul karena payout telah kedaluwarsa atau di-kedaluwarsa-kan secara manual dengan melakukan permintaan pada endpoint void.
    LOCKED string Payout telah dikunci karena terlalu banyak (3) percobaan yang gagal.
    COMPLETED string Payout telah selesai.
    FAILED string Payout gagal. Daftar alasan kegagalan dijelaskan pada bagian failure_reason.
    expiration_timestamp
    optional
    ISO8601 Tanggal dan waktu payout kedaluwarsa dalam standar ISO dengan default 24 jam.

    Timezone: GMT+0
    created
    optional
    ISO8601 Tanggal dan waktu yang tercatat saat payout dibuat.

    Timezone: GMT+0
    payout_url
    optional
    string Tautan untuk mengakses tampilan payout, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    email
    optional
    string Email yang ingin Anda kirim notifikasi.
    bank_code
    optional
    string Kode bank yang digunakan untuk menerima pembayaran, selengkapnya disini
    account_holder_name
    optional
    stringNama pemegang akun.
    account_number
    optional
    string Akun bank tujuan pembayaran.
    disbursement_id
    optional
    string ID dari disbursement. Anda dapat menemukannya di sini
    failure_reason
    optional
    string Jika statusnya adalah FAILED, ini akan menjelaskan kegagalan tersebut.
    claimed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah diklaim.

    Timezone: GMT+0
    completed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah selesai.

    Timezone: GMT+0
    failed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah gagal.

    Timezone: GMT+0
    payment_id
    optional
    string ID pembayaran internal kami yang dapat digunakan sebagai referensi pembayaran.

    Kesalahan Dalam Pembuatan Payout

    Kode Kesalahan Deskripsi
    INSUFFICIENT_BALANCE
    400
    Saldo di akun Anda tidak cukup untuk membuat payout dengan jumlah yang diinginkan.
    DUPLICATE_PAYOUT_ERROR
    400
    Payout dengan external_id yang sama telah dibuat sebelumnya.
    UNAUTHORIZED_MERCHANT_ERROR
    403
    Merchant ini tidak diizinkan untuk melakukan permintaan tersebut.

    Mendapatkan Payout

    Endpoint: Mendapatkan Payout

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

    Permintaan Mendapatkan Payout

    Contoh Permintaan Mendapatkan Payout

    curl https://api.xendit.co/payouts/:id -X GET \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Payout } = x;
    const payoutSpecificOptions = {};
    const p = new Payout(payoutSpecificOptions);
    
    const resp = await p.getPayout({
        id: '67f1b30c-0262-4955-8777-95aa0478c2fc',
    });
    console.log(resp);
    Parameter Deskripsi
    id
    required
    string ID payout yang ingin didapatkan

    Respon Mendapatkan Payout

    Contoh Respon Mendapatkan Payout

    {
      "id": "00754a09-ad00-4475-b874-1dd97f83fc24",
      "external_id": "ext-121313",
      "amount": 20000,
      "passcode": "315820",
      "merchant_name": "First Business",
      "status": "ISSUED",
      "expiration_timestamp": "2019-12-10T06:45:30.041Z",
      "created": "2019-12-09T06:45:28.628Z",
      "payout_url": "https://payout.xendit.co/web/00754a09-ad00-4475-b874-1dd97f83fc24"
    }
    Parameter Deskripsi
    id
    required
    string ID payout yang didapatkan dari Xendit.
    external_id
    required
    string ID payout yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah payout antara sistem kami dan sistem Anda.

    Maksimal: 200 karakter
    amount
    required
    integer positive Jumlah tagihan yang akan dibayarkan. Jumlah tagihan maksimal tergantung pada saldo Anda.
    passcode
    required
    string Kode yang secara acak diterbitkan untuk melakukan klaim pada jumlah tagihan.
    merchant_name
    optional
    string Nama perusahaan atau situs Anda.
    status
    required
    ISSUED string Payout telah diisukan (status pertama setelah sukses melakukan permintaan pembuatan payout).
    DISBURSING string Payout sedang dicairkan. Jumlah tagihan sedang dicairkan dari saldo Anda ke akun rekening tujuan.
    VOIDED string Payout telah dibatalkan. Status ini muncul karena payout telah kedaluwarsa atau di-kedaluwarsa-kan secara manual dengan melakukan permintaan pada endpoint void.
    LOCKED string Payout telah dikunci karena terlalu banyak (3) percobaan yang gagal.
    COMPLETED string Payout telah selesai.
    FAILED string Payout gagal. Daftar alasan kegagalan dijelaskan pada bagian failure_reason.
    expiration_timestamp
    optional
    ISO8601 Tanggal dan waktu payout kedaluwarsa dalam standar ISO dengan default 24 jam.

    Timezone: GMT+0
    created
    optional

    ISO8601 Tanggal dan waktu yang tercatat saat payout dibuat.

    Timezone: GMT+0

    payout_url
    optional
    string Tautan untuk mengakses tampilan payout, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    email
    optional
    string Email yang ingin Anda kirim notifikasi.
    bank_code
    optional
    stringKode bank yang digunakan untuk menerima pembayaran, selengkapnya disini
    account_holder_name
    optional
    string Nama pemegang akun.
    account_number
    optional
    string Akun bank tujuan pembayaran.
    disbursement_id
    optional
    string ID dari disbursement. Anda dapat meneumkannya di sini
    failure_reason
    optional
    string Jika statusnya adalah FAILED, ini akan menjelaskan kegagalan tersebut.
    claimed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah diklaim.

    Timezone: GMT+0
    completed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah selesai.

    Timezone: GMT+0
    failed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah gagal.

    Timezone: GMT+0
    payment_id
    optional
    string ID pembayaran internal kami yang dapat digunakan sebagai referensi pembayaran.

    Kesalahan Dalam Mendapatkan Payout

    Kode Kesalahan Deskripsi
    PAYOUT_NOT_FOUND_ERROR
    404
    Payout tidak ditemukan di dalam sistem.
    UNAUTHORIZED_MERCHANT_ERROR
    403
    Merchant ini tidak diizinkan untuk melakukan permintaan tersebut.

    Penutupan Payout

    Endpoint: Penutupan Payout

    POST https://api.xendit.co/payouts/:id/void

    Anda bisa menutup sebuah payout secara langsung menggunakan endpoint ini.

    Permintaan Penutupan Payout

    Contoh Permintaan Penutupan Payout

    curl https://api.xendit.co/payouts/:id/void -X POST \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Payout } = x;
    const payoutSpecificOptions = {};
    const p = new Payout(payoutSpecificOptions);
    
    const resp = await p.voidPayout({
        id: '67f1b30c-0262-4955-8777-95aa0478c2fc',
    });
    console.log(resp);
    Parameter Description
    id
    required
    string ID of the payout to retrieve

    Void Payout Response

    Example Void Payout Response

    {
      "id": "00754a09-ad00-4475-b874-1dd97f83fc24",
      "external_id": "ext-121312",
      "amount": 20000,
      "passcode": "315820",
      "merchant_name": "First Business",
      "status": "VOIDED",
      "expiration_timestamp": "2019-12-10T06:45:30.041Z",
      "created": "2019-12-09T06:45:28.628Z"
    }
    Parameter Deskripsi
    id
    required
    string ID payout yang didapatkan dari Xendit.
    external_id
    required
    string ID payout yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah payout antara sistem kami dan sistem Anda.

    Maksimal: 200 karakter
    amount
    required
    integer positive Jumlah tagihan yang akan dibayarkan. Jumlah tagihan maksimal tergantung pada saldo Anda.
    passcode
    required
    string Kode yang secara acak diterbitkan untuk melakukan klaim pada jumlah tagihan.
    merchant_name
    optional
    string Nama perusahaan atau situs Anda.
    status
    required
    ISSUED string Payout telah diisukan (status pertama setelah sukses melakukan permintaan pembuatan payout).
    DISBURSING string Payout sedang dicairkan. Jumlah tagihan sedang dicairkan dari saldo Anda ke akun rekening tujuan.
    VOIDED string Payout telah dibatalkan. Status ini muncul karena payout telah kedaluwarsa atau di-kedaluwarsa-kan secara manual dengan melakukan permintaan pada endpoint void.
    LOCKED string Payout telah dikunci karena terlalu banyak (3) percobaan yang gagal.
    COMPLETED string Payout telah selesai.
    FAILED string Payout gagal. Daftar alasan kegagalan dijelaskan pada bagian failure_reason.
    expiration_timestamp
    optional
    ISO8601 Tanggal dan waktu payout kedaluwarsa dalam standar ISO dengan default 24 jam.

    Timezone: GMT+0
    created
    optional
    ISO8601 Tanggal dan waktu yang tercatat saat payout dibuat.

    Timezone: GMT+0
    payout_url
    optional
    string Tautan untuk mengakses tampilan payout, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    email
    optional
    string Email yang ingin Anda kirim notifikasi.
    bank_code
    optional
    string Kode bank yang digunakan untuk menerima pembayaran, selengkapnya disini
    account_holder_name
    optional
    string Nama pemegang akun.
    account_number
    optional
    string Akun bank tujuan pembayaran.
    disbursement_id
    optional
    string ID dari disbursement. Anda dapat menemukannya di sini
    failure_reason
    optional
    string Jika statusnya adalah FAILED, ini akan menjelaskan kegagalan tersebut.
    claimed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah diklaim.

    Timezone: GMT+0
    completed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah selesai.

    Timezone: GMT+0
    failed_timestamp
    optional
    ISO8601 Tanggal dan waktu yang mencatat saat payout telah gagal.

    Timezone: GMT+0
    payment_id
    optional
    string ID pembayaran internal kami yang dapat digunakan sebagai referensi pembayaran.

    Kesalahan Dalam Penutupan Payout

    Kode Kesalahan Deskripsi
    PAYOUT_NOT_FOUND_ERROR
    404
    Payout tidak ditemukan di dalam sistem.
    UNAUTHORIZED_MERCHANT_ERROR
    403
    Merchant ini tidak diizinkan untuk melakukan permintaan tersebut.

    Disbursement

    Dengan Xendit, anda dapat untuk mengirim dana ke bank manapun diseluruh Indonesia.

    Pembuatan Disbursement

    Endpoint: Pembuatan Disbursement

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

    Permintaan Pembuatan Disbursement (Money-out write permission)

    Contoh Permintaan Pembuatan Disbursement

    curl https://api.xendit.co/disbursements -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -H "X-IDEMPOTENCY-KEY: unique-id-12345" \
       -d external_id=demo_1475459775872 \
       -d bank_code=BCA \
       -d account_holder_name='Bob Jones' \
       -d account_number='1231241231' \
       -d description='Reimbursement untuk sepatu' \
       -d amount=17000
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $external_id = 'demo_1475459775872';
      $amount = 17000;
      $bank_code = 'BCA';
      $account_holder_name = 'Bob Jones';
      $account_number = '1231241231';
      $disbursement_options['description'] = 'Reimbursement for shoes';
    
      $response = $xenditPHPClient->createDisbursement($external_id, $amount, $bank_code, $account_holder_name, $account_number, $disbursement_options);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    
    const resp = await d.create({
      externalID: 'demo_1475459775872',
      amount: 17000,
      bankCode: 'BCA',
      accountHolderName: 'Bob Jones',
      accountNumber: '123124231',
      description: 'Reimbursement for shoes',
    });
    console.log(resp);
    Header Parameter Deskripsi
    X-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 Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    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 Deskripsi
    external_id
    required
    string ID disbursement pada sistem anda yang digunakan untuk merekonsiliasi disbursement

    Characters Spesial dan alfanumerik
    Panjang maksimum 1000 karakter maksimum
    Panjang minimum 1 karakter
    bank_code
    required
    string Kode bank tujuan

    Kode bank harus menurut daftar kode yang tertera disini here
    account_holder_name
    required
    string Nama pemegang rekening sesuai dengan catatan bank atau e-wallet. Digunakan untuk verifikasi dan skenario error / customer support.

    Characters Spesial dan alfanumerik
    Panjang maksimum Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    account_number
    required
    string Nomor rekening bank tujuan. Jika menggunakan e-wallet, nomor telfon yang terdaftar dengan akun e-wallet.

    Karakter Numerik dan hyphens
    Panjang untuk BCA10 karakter
    Panjang maksimum untuk bank lain Tidak ada karakter maksimum
    Panjang minimum untuk bank lain 1 karakter
    E-wallets Nomor telfon yang terdaftar pada e-wallet (Example: 0812XXXXXX)

    *** Kami melayani pengiriman dana ke rekening virtual bank-bank utama (BRI, BNI, Mandiri, CIMB Niaga, Permata, BTN, and NOBU Bank).
    *** Kami melayani pengiriman dana ke e-wallet ternama (GoPay, OVO, and Mandiri e-cash).

    description
    required
    string Deskripsi untuk dikirim beserta pengiriman dana

    Characters Spesial dan alfanumerik
    Panjang maksimum Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    amount
    required
    number Jumlah untuk di disburse

    Karakter Bilangan bulat numerik, tidak ada desimal
    Limit maksimal (BCA, Mandiri, BNI, BNI Syariah, BRI, Permata) Tidak ada limit***
    Batas minimum (BCA, Mandiri, BNI, BNI Syariah, BRI, Permata) Tidak ada batas
    Batas maksimum (bank lain) Rp 50.000.000
    Batas minimum (bank lain) Rp 10.000

    *** Walaupun secara teori tidak ada batasan transfer maksimum untuk transfer ke bank-bank ini, harap dicatat bahwa kami mungkin harus melaporkan semua jumlah transaksi di atas Rp 100.000.000 kepada otoritas keuangan di Indonesia bersama dengan dokumentasi pendukung mengenai transaksi yang mendasarinya

    Respon Pembuatan Disbursement

    Contoh Respon Pembuatan Disbursement

    {
      "user_id": "5785e6334d7b410667d355c4",
      "external_id": "12345",
      "amount": 1000,
      "bank_code": "BCA",
      "account_holder_name": "RAIDY WIJAYA",
      "disbursement_description": "Refunds Sepatu",
      "status": "PENDING",
      "id": "57f1ce05bb1a631a65eee662"
    }
    Parameter Deskripsi
    user_id
    required
    string Business ID Xendit Anda
    external_id
    required
    string Custom ID yang anda pilih untuk mengidentifikasi transaksi. Customer kami biasanya menggunakan nomor telfon, alamat email, atau ID transaksi/order.
    amount
    required
    number Jumlah disbursement
    bank_code
    required
    string Kode bank atau e-wallet tujuan. Lihat kode bank
    account_holder_name
    required
    string Nama pemegang rekening bank sesuai dengan catatan bank atau e-wallet. Digunakan untuk verifikasi dan skenario error / customer support.
    disbursement_description
    required
    Ini adalah deskripsi yang anda berikan untuk kami:)
    status
    required
    string
    PENDING Proses pengiriman sudah dimulai tetapi belum diselesaikan oleh bank.
    id
    required
    string Unique Disbursement ID

    Kesalahan Dalam Pembuatan Disbursement

    Kode Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Validasi input gagal. Field error merincikan field mana saja yang melanggar validasi
    INVALID_JSON_FORMAT
    400
    Body request tidak dalam format JSON yang valid.
    DISBURSEMENT_DESCRIPTION_NOT_FOUND_ERROR
    400
    Deskripsi disbursement belum di set di Pengaturan > Mengirim Uang > Pengiriman. Tambahkan deskripsi default sebelum mencoba kembali.
    DIRECT_DISBURSEMENT_BALANCE_INSUFFICIENT_ERROR
    400
    Saldo tidak cukup untuk disburse. Tambahkan saldo sebelum mencoba kembali.
    DUPLICATE_TRANSACTION_ERROR
    400
    Kunci Idempotency sudah pernah digunakan sebelumnya. Tambahkan kunci Idempotency dan tambahkan kembali.
    BANK_CODE_NOT_SUPPORTED_ERROR
    400
    Kode bank tujuan tidak supported.
    RECIPIENT_ACCOUNT_NUMBER_ERROR
    400
    Untuk transfer ke BCA, input account_number harus 10 digit. Cek ulang panjang nomor rekening sebelum mencoba kembali.
    RECIPIENT_AMOUNT_ERROR
    400
    Jumlah transfer yang diminta lebih rendah dari minimum yang ditentukan untuk bank tujuan yang dipilih. Ubah jumlah transfer sebelum mencoba ulang..
    MAXIMUM_TRANSFER_LIMIT_ERROR
    400
    Jumlah transfer yang diminta lebih tinggi dari maksimum yang ditentukan untuk bank tujuan yang dipilih. Ubah jumlah transfer sebelum mencoba ulang.
    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.
    SERVER_ERROR
    500
    Koneksi server error. Harap menggunakan API Get disbursement dengan menggunakan external_id untuk memeriksa apakah disbursement sudah dibuat. Jika Anda menerima DIRECT_DISBURSEMENT_NOT_FOUND_ERROR, artinya disbursement belum terbuat; Mohon untuk mencoba kembali dalam 1-2 jam.

    Mendapatkan Disbursement dengan ID

    Endpoint: Mendapatkan Disbursement dengan ID

    GET https://api.xendit.co/disbursements/{disbursement_id}

    Endpoint ini digunakan untuk query pengecekan status transaksi disbursement.

    Permintaan Mendapatkan Disbursement dengan ID (Money-out read permission)

    Contoh Permintaan Mendapatkan Disbursement dengan ID

    curl https://api.xendit.co/disbursements/57c9010f5ef9e7077bcb96b6 -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $disbursement_id = '587cc7ea77535fb94bb4e8eb';
    
      $response = $xenditPHPClient->getDisbursement($disbursement_id);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    
    const resp = await d.getByID({ disbursementID: '587cc7ea77535fb94bb4e8eb' });
    console.log(resp);
    Parameter Deskripsi
    disbursement_id
    required
    string ID disbursement yang akan diambil
    Disbursement_id harus cocok dengan Disbursement ID yang disediakan dalam response berhasilan kami pada saat disbursement

    Get Disbursement Response

    Respon Permintaan Disbursement dengan ID

    {
      "user_id": "5785e6334d7b410667d355c4",
      "external_id": "disbursement_12345",
      "amount": 500000,
      "bank_code": "BCA",
      "account_holder_name": "Rizky",
      "disbursement_description": "Custom description",
      "status": "PENDING",
      "id": "57c9010f5ef9e7077bcb96b6"
    }
    Parameter Deskripsi
    user_id Your Xendit Business ID
    external_id ID custom yang ditetapkan saat pembuatan disbursement. Customer kami sering menggunakan nomor telfon, alamat email, atau transaction/order ID
    amount Disburse amount
    bank_code Kode bank tujuan. Lihat kode bank
    account_holder_name Nama pemilik rekening bank sesuai bank records. Digunakan untuk verifikasi dan skenario error / customer support
    disbursement_description Ini adalah deskripsi yang Anda berikan kepada kami :)
    status PENDING Transfer dimulai.
    COMPLETED Bank telah mengkonfirmasi pengiriman dana.
    FAILED Bank menolak pencairan. Kami tidak akan mencoba lagi.
    id Unique disbursement ID

    Kesalahan Mendapatkan Disbursement dengan ID

    Kode Kesalahan Deskripsi
    INVALID_JSON_FORMAT
    400
    The request body tidak dalam JSON Format yang 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.
    DIRECT_DISBURSEMENT_NOT_FOUND_ERROR
    404
    Direct disbursement tidak ditemukan.

    Mendapatkan Disbursement dengan External ID

    Endpoint: Mendapatkan Disbursement dengan External ID

    GET https://api.xendit.co/disbursements?external_id={external_id}

    Endpoint ini digunakan untuk query status disbursement dengan external_id.

    Permintaan Mendapatkan Disbursement dengan External ID (Money-out read permission)

    Contoh Permintaan Mendapatkan disbursement dengan External ID

    curl https://api.xendit.co/disbursements?external_id=72655 -X GET \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $external_id = 'disbursement_12345';
    
      $response = $xenditPHPClient->getDisbursementByExternalId($external_id);
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    
    const resp = await d.getByExtID({ externalID: 'disbursement_12345' });
    console.log(resp);
    Query Description
    external_id
    required
    string Custom ID disbursement yang ditetapkan oleh customer saat pembuatan disbursement
    The external_id harus sama dengan external_id yang digunakan saat pembuatan disbursement

    Respon Permintaan Mendapatkan Disbursement dengan External ID

    Respon Permintaan Mendapatkan Disbursement dengan External ID

    [{
      "user_id": "5785e6334d7b410667d355c4",
      "external_id": "disbursement_12345",
      "amount": 500000,
      "bank_code": "BCA",
      "account_holder_name": "Rizky",
      "disbursement_description": "Contoh deskripsi",
      "status": "PENDING",
      "id": "57c9010f5ef9e7077bcb96b6"
    },{
      "user_id": "5785e6334d7b410667d355c4",
      "external_id": "disbursement_45678",
      "amount": 450000,
      "bank_code": "BNI",
      "account_holder_name": "Anita",
      "disbursement_description": "deskripsi",
      "status": "COMPLETED",
      "id": "5a963089fd5fe5b6508f0b7b"
    }]
    Parameter Deskripsi
    user_id Xendit Business ID Anda
    external_id Custom ID ditetapkan saat pembuatan disbursement. Customer kami sering menggunakan nomor telfon, alamat email, atau transaction/order ID
    amount Disburse amount
    bank_code Kode bank tujuan. Lihat kode bank
    account_holder_name Nama pemilik rekening bank sesuai bank records. Digunakan untuk verifikasi dan skenario error / customer support
    disbursement_description Ini adalah deskripsi yang Anda berikan kepada kami :)
    status PENDING Transfer sudah dimulai.
    COMPLETED Bank telah mengkonfirmasi pengiriman dana.
    FAILED Bank menolak disbursement. Kami tidak akan mencoba kembali.
    id Unique disbursement ID

    Kesalahan Mendapatkan Disbursement dengan External ID

    Kode Kesalahan Deskripsi
    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.
    DIRECT_DISBURSEMENT_NOT_FOUND_ERROR
    404
    Direct disbursement tidak ditemukan.

    Notifikasi Disbursement

    Endpoint: Notifikasi Disbursement

    POST https://yourcompany.com/disbursement_callback_url

    Ketika transaksi pencairan berhasil, API callback kami akan hit URL Anda yang sudah Anda atur di dashboard. Untuk informasi lebih lanjut tentang callback silakan baca [dokumen] ini (https://docs.xendit.co/xendisburse/).

    Contoh ini hanya digunakan untuk menampilkan parameter body yang dikirim dari API Xendit ke URL callback Anda. Jika Anda ingin menguji permintaan panggilan balik ini, gunakan fitur test di dasbor dan pilih Settings -> Configuration -> Disbursement.

    Permintaan Notifikasi Disbursement

    Contoh Permintaan Notifikasi Disbursement

    curl --include \
         --request POST \
         --header "Content-Type: application/json" \
         --header "X-CALLBACK-TOKEN: MuaJALKJSDK12LASHD123kSAKSDHzjahwUWjkasJSDSA12KSNAK21n==" \
         --data-binary "{
        \"id\": \"57e214ba82b034c325e84d6e\",
        \"user_id\": \"57c5aa7a36e3b6a709b6e148\",
        \"external_id\": \"disbursement_123124123\",
        \"amount\": 150000,
        \"bank_code\": \"BCA\",
        \"account_holder_name\": \"XENDIT\",
        \"disbursement_description\": \"Xendit disbursement\",
        \"failure_code\": \"INVALID_DESTINATION\",
        \"is_instant\": false,
        \"status\": \"FAILED\",
        \"updated\": \"2016-10-10T08:15:03.404Z\",
        \"created\": \"2016-10-10T08:15:03.404Z\"
    }" \
    'https://api.xendit.co/disbursement_callback_url'
    Parameter Deskripsi
    is_instant Menunjukkan apakah pencairan disalurkan secara instan
    user_id Your Xendit Business ID
    external_id Custom ID yang anda pilih untuk mengidentifikasi transaksi. Customer kami biasanya menggunakan nomor telfon, alamat email, atau ID transaksi/order.
    amount Disburse amount
    bank_code Kode bank tujuan. Lihat kode bank
    account_holder_name Nama pemegang rekening bank sesuai dengan catatan bank atau e-wallet. Digunakan untuk verifikasi dan skenario error / customer support.
    disbursement_description Ini adalah deskripsi yang Anda berikan kepada saya :)
    status COMPLETED Bank telah mengkonfirmasi pengiriman dana.
    FAILED Disbursement gagal karena failure code
    failure_code (optional) INSUFFICIENT_BALANCE Saldo di akun Anda tidak cukup untuk melakukan pencairan dalam jumlah yang diinginkan
    UNKNOWN_BANK_NETWORK_ERROR Jaringan bank telah mengembalikan error yang tidak diketahui kepada kami. Kami tidak dapat memprediksi apakah disbursement akan berhasil jika Anda mencoba kembali request disbursement yang sama.
    TEMPORARY_BANK_NETWORK_ERROR Jaringan bank sedang mengalami error sementara. Coba kembali disbursement dalam 1-3 jam
    INVALID_DESTINATION Bank telah melaporkan bahwa rekening tujuan tidak terdaftar atau diblokir. Jika tidak yakin tentang ini, silakan coba lagi atau hubungi bank tujuan langsung
    SWITCHING_NETWORK_ERROR Setidaknya salah satu jaringan switching sedang mengalami masalah. Coba lagi pencairan dalam 1-3 jam
    REJECTED_BY_BANK Bank telah menolak transaksi ini karena alasan yang tidak jelas. Kami tidak dapat memprediksi apakah pencairan akan berhasil jika Anda mencoba kembali permintaan pencairan yang sama.
    TRANSFER_ERROR Kami mengalami error fatal saat memproses pencairan ini. API field tertentu dalam request Anda mungkin tidak valid. Mohon untuk hubungi tim customer support untuk informasi lebih lanjut.
    TEMPORARY_TRANSFER_ERROR Kami mengalami masalah sementara saat memproses pencairan ini. Coba lagi disbursement dalam 1-2 jam

    Untuk informasi lebih detail mengenai berbagai error code diatas, silakan lihat Common Errors in Disbursements.
    id Unique disbursement ID

    Kesalahan Notifikasi Disbursement

    Dalam kasus di mana kami tidak mendapatkan response berhasil dari server Anda, kami akan melakukan retry sebanyak 2 kali, dengan waktu 30 detik antar setiap retry. Setelah 3 kegagalan, kami mendapat peringatan internal bahwa callback telah gagal. Tim kami kemudian akan menghubungi Anda untuk menyelesaikan masalah tersebut.

    Mendapatkan Ketersediaan Bank Disbursement

    Endpoint: Mendapatkan Ketersediaan Bank Disbursement

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

    Contoh Permintaan Mendapatkan Ketersediaan Bank Disbursement

    curl https://api.xendit.co/available_disbursements_banks -X GET \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $response = $xenditPHPClient->getAvailableDisbursementBanks();
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    
    const resp = await d.getBanks();
    console.log(resp);

    API endpoint ini akan memberikan Anda daftar bank yang kami support untuk disbursement. Kami mendukung transfer ke 140+ bank di Indonesia, termasuk beberapa BPD dan BPR, dan akun virtual bank-bank besar (BRI, BNI, Mandiri, CIMB Niaga, Permata, BTN, dan Bank NOBU). Kami juga mendukung pencairan untuk e-wallet utama (GoPay, OVO, dan Mandiri e-cash). Jika Anda ingin kami mendukung pembayaran ke tujuan tertentu, silakan hubungi kami di support@xendit.co.

    Mendapatkan Ketersediaan Bank Disbursement (Money-out read permission)

    Mendapatkan Ketersediaan Bank Disbursement

    [
      {
        "name": "Bank Mandiri",
        "code": "MANDIRI",
        "can_disburse": true,
        "can_name_validate": true
      },
      {
        "name": "Bank Rakyat Indonesia (BRI)",
        "code": "BRI",
        "can_disburse": true,
        "can_name_validate": true
      },
      {
        "name": "Bank Central Asia (BCA)",
        "code": "BCA",
        "can_disburse": true,
        "can_name_validate": true
      }
    ]
    Parameter Deskripsi
    name Nama lengkap bank atau e-wallet
    code Kode bank atau e-wallet tujuan disbursement

    Batch Disbursement

    Batch disbursements adalah sekumpulan petunjuk yang berisi perintah untuk disburse dana ke bank manapun di Indonesia

    Idempotency dapat menggunakan kunci X-IDEMPOTENCY-KEY.

    Pembuatan Batch Disbursement

    Dengan API endpoint ini anda dapat membuat sejumlah disbursement dalam waktu yang sama

    Endpoint: Pembuatan batch disbursement

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

    Permintaan Pembuatan Batch Disbursement (Money-out write permission)

    Contoh Permintaan Pembuatan Batch Disbursement

    curl https://api.xendit.co/batch_disbursements -X POST \
      -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
      -H "Content-Type: application/json" \
      -d '{
        "reference": "demo_123",
        "disbursements": [
          {
            "external_id": "demo_123_1",
            "bank_code": "BCA",
            "bank_account_name": "Stanley Nguyen",
            "bank_account_number": "12345678",
            "description": "Reimbursement for pair of shoes (1)",
            "amount": 20000
          }
        ]
      }'
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    const resp = await d.createBatch({
      reference: 'demo_123',
      disbursements: [
        {
          externalID: 'demo_123_1',
          bankCode: 'BCA',
          accountHolderName: 'Stanley Nguyen',
          accountNumber: '12345678',
          description: 'Reimbursement for pair of shoes (1)',
          amount: 20000,
        }
      ]
    });
    console.log(resp);
    Header Parameter Deskripsi
    X-IDEMPOTENCY-KEY
    optional
    string Unique key to mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh environment development & production
    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 Deskripsi
    reference
    required
    string ID batch disbursement pada sistem anda yang digunakan untuk merekonsiliasi disbursement
    required
    Disbursement Item[] List disbursement yang ada didalam batch

    Disbursement Item

    Parameter Deskripsi
    amount
    required
    number Nominal uang yang akan di transfer
    bank_code
    required
    string Kode bank penerima
    bank_account_name
    required
    string Nama pemilik rekening bank penerima
    bank_account_number
    required
    string Nomor rekening bank penerima
    description
    required
    string Catatan untuk disertai dalam transfer
    external_id
    optional
    string ID disbursement pada sistem Anda
    email_to
    optional
    string[] Alamat email yang menerima pemberitahuan disbursement setelah disbursement selesai
    email_cc
    optional
    string[] Alamat email yang menerima carbon copy email pemberitahuan disbursement setelah disbursement selesai
    email_bcc
    optional
    string[] Alamat email yang menerima blind carbon copy email pemberitahuan disbursement setelah disbursement selesai

    Respon Pembuatan Batch Disbursement

    Contoh Respon Pembuatan Batch Disbursement

    {
      "created": "2017-03-30T06:12:47.212Z",
      "reference": "qwerty1234",
      "total_uploaded_amount": 30000,
      "total_uploaded_count": 2,
      "status": "NEEDS_APPROVAL",
      "id": "58dca1dffee4228917d37336"
    }
    Parameter Deskripsi
    created
    required
    string Timestamp pembuatan batch disbursement creation dalam format ISO
    reference
    required
    string ID batch disbursement dalam sistem Anda yang digunakan untuk rekonsiliasi setelah disbursement selesai
    total_uploaded_count
    required
    number Jumlah disbursement count dalam batch
    total_uploaded_amount
    required
    number Jumlah disbursement amount dalam batch
    status
    required
    string
    NEEDS_APPROVAL Batch disbursement telah dibuat tapi butuh persetujuan sebelum diproses lebih lanjut
    id
    required
    string Unique ID batch disbursement pada sistem kami

    Kesalahan Dalam Pembuatan Batch Disbursement

    Kode Kesalahan Deskripsi
    API_VALIDATION_ERROR
    400
    Validasi input gagal. Field errors dalam response akan merincikan fields yang melanggar validasi.
    INVALID_JSON_FORMAT
    400
    Badan request tidak dalam format JSON yang valid.
    DUPLICATE_TRANSACTION_ERROR
    400
    Request gagal karena idempotency key sudah pernah digunakan sebelumnya.
    INVALID_API_KEY
    401
    API key yang digunakan salah.
    BATCH_DISBURSEMENT_MAXIMUM_ROWS_LIMIT_EXCEEDED_ERROR
    400
    Request gagal karena pencairan mengandung lebih dari 1000 item.
    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.

    Notifikasi Batch Disbursement

    Endpoint: Notifikasi Batch Disbursement

    POST https://yourcompany.com/disbursement_callback_url

    Setelah membuat batch disbursement melalui API, untuk menerima callback, Anda harus masuk ke Dashboard dan mengikuti langkah-langkah berikut:

    Ketika semua disbursement telah diproses, sistem kami akan hit URL callback yang telah Anda tetapkan. Kami juga akan memberi Anda callback jika batch disbursement telah dihapus di dashboard. Anda dapat menyetel konfigurasi notifikasi URL anda melalui Dashboard --> Settings --> Configuration --> Batch Disbursements.

    Permintaan Notifikasi Batch Disbursement

    Parameter Deskripsi
    created Timestamp pembuatan batch disbursement dalam format ISO
    updated Timestamp perubahan status batch disbursement terakhir dalam format ISO
    reference ID batch disbursement dalam sistem Anda, digunakan untuk merekonsiliasi disbursement setelah proses disbursement selesai
    total_uploaded_count Jumlah count seluruh disbursement dalam batch yang di request
    total_uploaded_amount Jumlah amount seluruh disbursement dalam batch yang Anda request
    approved_at Timestamp batch disbursement yang di approve dalam format ISO
    approver_id User ID user yang melakukan approval batch disbursement
    status COMPLETED Semua disbursement berhasil
    CHECK Sebagian disbursement berhasil dibayarkan
    DELETED Batch disbursement telah terhapus
    FAILED Seluruh disbursement gagal dibayarkan
    id Unique ID batch disbursement dalam sistem kami
    user_id Xendit Business ID Anda
    total_error_count Jumlah disbursement count dalam sistem yang gagal dibayarkan
    total_error_amount Jumlah amount disbursement yang gagal terbayar dalam batch
    total_disbursed_count Jumlah disbursement count yang berhasil terbayar dalam batch
    total_disbursed_amount Jumlah disbursement amount yang berhasil terbayar dalam batch
    disbursements Rincian setiap disbursement dalam batch, dijelaskan di bawah ini

    Respon Notifikasi Batch Disbursement

    Parameter Deskripsi
    created Timestamp pembuatan item batch disbursement dalam format ISO
    updated Timestamp status update batch disbursement terakhir dalam format ISO
    external_id ID disbursement dari sistem Anda
    amount Amount untuk di disburse
    bank_code Kode bank penerima. Lihat kode bank
    bank_account_number Nomor rekening bank penerima
    bank_account_name Nama pemilik rekening bank penerima
    description Deskripsi untuk menyertai disbursement
    email_to Alamat email yang mendapatkan notifikasi rincian disbursement setelah disbursement selesai
    email_cc Alamat email yang menerima carbon copy email pemberitahuan disbursement setelah disbursement selesai
    email_bcc Alamat email yang menerima blind carbon copy email pemberitahuan disbursement setelah disbursement selesai
    status COMPLETED Disbursement berhasil terbayar
    FAILED Disbursement gagal terbayar
    bank_reference Nomor referensi transaksi dari bank
    valid_name Nama pemegang rekening penerima yang valid sesuai dengan bank penerima
    failure_code Error code yang menyertai disbursement failure
    failure_message Error message yang menyertai disbursement failure
    id Unique ID batch disbursement item pada sistem kami

    Kesalahan Notifikasi Batch Disbursement

    Dalam kasus di mana kami tidak mendapatkan response berhasil dari server Anda, kami akan melakukan retry sebanyak 2 kali, dengan waktu 30 detik antar setiap retry. Setelah 3 kegagalan, kami mendapat peringatan internal bahwa callback telah gagal. Tim kami kemudian akan menghubungi Anda untuk menyelesaikan masalah tersebut.

    Mendapatkan Ketersediaan Bank Disbursement

    Endpoint: Mendapatkan Ketersediaan Bank Disbursement

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

    Contoh Panggilan Mendapatkan Ketersediaan Bank Disbursement

    curl https://api.xendit.co/available_disbursements_banks -X GET \
        -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:
    <?php
      require 'vendor/autoload.php';
    
      $options['secret_api_key'] = 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==';
    
      $xenditPHPClient = new XenditClient\XenditPHPClient($options);
    
      $response = $xenditPHPClient->getAvailableDisbursementBanks();
      print_r($response);
    ?>
    const x = require('xendit-node')({ secretKey: 'xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw==' });
    
    const { Disbursement } = x;
    const disbursementSpecificOptions = {};
    const d = new Disbursement(disbursementSpecificOptions);
    
    const resp = await d.getBanks();
    console.log(resp);

    API endpoint ini akan memberikan Anda daftar bank yang saat ini dapat mendukung disbursement. Daftar bank pendukung saat ini adalah > 140 untuk Indonesia, termasuk beberapa BPD dan BPR.

    Respon Mendapatkan Ketersediaan Bank Disbursement (Money-out read permission)

    Mendapatkan Respon Ketersediaan Bank Disbursement

    [
      {
        "name": "Bank Central Asia (BCA)",
        "code": "BCA"
      },
      {
        "name": "Bank Mandiri",
        "code": "MANDIRI"
      },
      {
        "name": "Bank Rakyat Indonesia (BRI)",
        "code": "BRI"
      }
    ]
    Parameter Deskripsi
    name Nama lengkap bank
    code Kode bank, relevan saat pembuatan Virtual Account

    xenPlatform

    Deskripsi

    xenPlatform adalah solusi untuk penyedia bisnis dengan mitra pihak ketiga. Penyedia bisnis menghadapi tantangan pembayaran yang rumit mulai dari mengintegrasikan partner, memindahkan uang, mengiriman uang, dan tagihan.

    Dengan xenPlatform, Anda bisa menerima pendaftaran, membuat akun untuk mitra bisnis, melakukan transaksi atas nama mitra, membagi pembayaran, mengawasi transaksi, dan menagihkan biaya pada mitra.

    Pendahuluan

    Ketika xenPlatform telah diaktifkan di akun anda, Anda bisa menggunakan Account API untuk membuat sub-account yang dihubungkan dengan master account.

    Setelah itu tambahkan for-user-id pada bagian header API Xendit standar untuk membuat transaksi pada akun tersebut.

    Akun dan transaksinya akan muncul pada tab xenPlatform pada dashboard Xendit Anda.

    Buat Akun

    Pembuatan akun memungkinkan akun Anda untuk membuat sub-account yang akan dihubungkan dengan akun Anda

    Pembuatan Akun API memperbolehkan akun xenPlatform anda untuk membuat sub-account yang dihubungkan dengan akun anda. Respons yang dihasilkan akan memiliki nilai user_id yang anda bisa simpan untuk membuat transaksi pada sub-account di masa depan.

    Ada dua jenis akun yang bisa di buat : STANDARD, dan CORE.

    Untuk akun STANDARD: ketika sebuah permintaan POST dibuat pada Create Account API dengan email yang valid pada bagian account_email, sebuah sub-account akan dibuat, dan sebuah email undangan sebagai sub-account akan dikirimkan untuk registrasi lebih lanjut. Melalui email pengiriman sub-account, mitra rekan anda bisa menyelesaikan proses pendaftaran untuk mendapatkan akses ke dashboard Xenditnya.

    Untuk akun CORE: akun ini tidak memiliki akses ke dashboard Xendit. Ketiak sebuah POST request dibuat sukses ke API Create Account dengan email yang valid pada bagian account_email, sebuah sub-account akan dibuat. Tidak ada email yang akan dikirimkan untuk pendaftaran lebih lanjut. Parameter business_name menjadi wajib untuk akun CORE.

    Endpoint: Buat Akun

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

    Example: Buat Akun

    curl https://api.xendit.co/accounts -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d account_email=angie@pinkpanther.com \
       -d type=CORE \
       -d business_profile[business_name]="Angie's lemonade stand" \
      <?php
          $url = 'https://api.xendit.co/accounts';
          $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
          $headers = [];
          $headers[] = 'Content-Type: application/json';
          $data = [
              'account_email' => 'angie@pinkpanther.com',
              'type' => 'CORE',
              'business_profile' => [
                'business_name' => 'Angie\'s lemonade stand'
              ]
          ];
    
          $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;
    Parameter Deskripsi
    account_email
    required
    string Email penanda untuk akun anda

    Panjang minimum 1 karakter
    Panjang maksimum Tidak ada maksimum karakter
    type
    required
    string Jenis akun yang anda buat

    Nilai yang tersedia: STANDARD, CORE
    business_profile
    di perlukan untuk STANDARD, yang lainnya optional
    object Informasi bisnis mengenai akun yang anda buat
    string business_name
    di perlukan untuk STANDARD, yang lainnya optional
    Nama bisnis

    Buat Akun Response

    Example: Respon Buat Akun

    {
        "created": "2019-01-01T08:51:44.484Z",
        "status": "SUCCESSFUL",
        "account_email": "angie@pinkpanther.com",
        "user_id": "57fb4e076fb3fa296b7f5a17",
        "type": "CORE"
    }
    Parameter Deskripsi
    created
    required
    string Tanda waktu ketika akun dibuat

    Zona Waktu: GMT+0
    status
    required
    string Status pembuatan akun

    Nilai yang tersedia: SUCCESSFUL
    account_email
    required
    string Email penanda untuk akun yang dibuat
    user_id
    required
    stringUser_id dari akun yang dibuat, gunakan ini untuk membuat transaksi atas nama merchant Anda.
    type
    required
    stringJenis akun yang dibuat

    Nilai yang tersedia: STANDARD, CORE

    Buat Invoice untuk Sub-account (Money-in write permission)

    Untuk membuat invoice atas nama sub-account, Anda dapat menambahkan parameter for-user-id di header ketika melakukan request API ke Xendit. Nilai yang ada pada bagian ini dapat ditambahkan pada user_id yang sebelumnya anda buat.

    Contoh berikut menampilkan bagaimana caranya membuat invoice untuk sub-account menggunakan API Create Invoice.

    Harap diketahui bahwa pada API Create Invoice, response nya akan memiliki informasi bahwa Invoice telah dibuat dengan user_id sub-account tertentu.

    Harap menggunakan API Reference Xendit untuk seluruh API yang didukung.

    Endpoint: Buat Invoice

    POST https://api.xendit.co/v2/invoices

    Buat Invoice Request

    Example: POST Buat Invoice Request

    curl https://api.xendit.co/v2/invoices -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -H for-user-id=57fb4e076fb3fa296b7f5a17 \
       -d external_id=lmnd_001 \
       -d description="1 order of Angie's lemonade" \
       -d amount=10000 \
       -d payer_email=inspector@jacques.com \
       -d should_send_email=true \
      <?php
          $url = 'https://api.xendit.co/v2/invoices';
          $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
          $headers = [];
          $headers[] = 'Content-Type: application/json';
          $headers[] = 'for-user-id: 57fb4e076fb3fa296b7f5a17'
          $data = [
              'external_id' => 'lmnd_001',
              'description' => '1 order of Angie\'s lemonade',
              'amount' => 10000,
              'payer_email' => 'inspector@jacques.com',
              'should_send_email' => true
          ];
    
          $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;
    Header Parameter 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.



    Body Parameter Deskripsi
    external_id
    required
    string ID unik yang berfungsi sebagai tanda pengenal sebuah invoice di dalam sistem Anda
    payer_email
    required
    string Email pengguna yang akan membayar
    description
    required
    string Deskripsi invoice
    amount
    required
    number Jumlah tagihan yang harus dibayar. Jumlah tagihan minimum untuk pembuatan invoice adalah 11000.
    should_send_email
    optional

    default: false
    boolean Memastikan pengguna untuk mendapat email mengenai status invoice saat dibuat, dibayar, atau kedaluwarsa
    callback_virtual_account_id
    optional
    string Memungkinkan metode pembayaran melalui Fixed Virtual Account, masukkan nilai id yang didapatkan dari respons saat pembuatan fixed virtual account. Lihat Pembuatan Fixed Virtual Account.
    invoice_duration
    optional
    number Durasi waktu yang dimiliki pengguna akhir untuk membayar tagihan sebelum kadaluwarsa (dalam detik)
    success_redirect_url
    optional
    string Tautan yang diarahkan pengguna setelah pembayaran tagihan berhasil dibayarkan
    Contoh : https://yourcompany.com/example_item/10/success_page
    failure_redirect_url
    optional
    string Tautan yang diarahkan apabila tagihan telah kedaluwarsa
    Contoh : https://yourcompany.com/example_item/10/failed_checkout
    payment_methods
    optional
    array of strings Pilihan metode pembayaran yang tersedia di akun Anda. biarkan kolom ini kosong jika semua saluran pembayaran diharapkan tersedia dalam invoice ini.
    Contoh : ["BCA", "BRI", "MANDIRI", "BNI",
    "PERMATA", "ALFAMART", "CREDIT_CARD",
    "OVO"]
    mid_label
    optional
    string MID label yang dapat Anda gunakan saat Anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator.
    currency
    optional
    string Mata uang yang Anda gunakan untuk nominal penagihan invoice Anda
    Contoh : "IDR"
    fixed_va
    optional

    default: false
    boolean Isi parameter ini dengan true untuk menggunakan satu nomor VA yang sama untuk beberapa XenInvoice yang anda berikan untuk pelanggan Anda.

    Buat Invoice Respon

    Example: Respon Buat Invoice

    {
      "id": "579c8d61f23fa4ca35e52da4",
      "user_id": "57fb4e076fb3fa296b7f5a17",
      "external_id": "lmnd_001",
      "status": "PENDING",
      "merchant_name": "Angie's lemonade stand",
      "merchant_profile_picture_url": "https://xnd-companies.s3.amazonaws.com/prod/1493610897264_473.png",
      "amount": 10000,
      "payer_email": "inspector@jacques.com",
      "description": "1 order of Angie's lemonade",
      "invoice_url": "https://invoice.xendit.co/web/invoices/595b6248c763ac05592e3eb4",
      "expiry_date": "2019-01-01T11:20:01.017Z",
      "available_banks": [
       {
                "bank_code": "MANDIRI",
                "collection_type": "POOL",
                "bank_account_number": "8860810000525",
                "transfer_amount": 10000,
                "bank_branch": "Virtual Account",
                "account_holder_name": "LANSUR13",
                "identity_amount": 0
            },
            {
                "bank_code": "BRI",
                "collection_type": "POOL",
                "bank_account_number": "2621510002426",
                "transfer_amount": 10000,
                "bank_branch": "Virtual Account",
                "account_holder_name": "LANSUR13",
                "identity_amount": 0
            },
            {
                "bank_code": "BNI",
                "collection_type": "POOL",
                "bank_account_number": "880810000689",
                "transfer_amount": 10000,
                "bank_branch": "Virtual Account",
                "account_holder_name": "LANSUR13",
                "identity_amount": 0
            }
      ],
      "available_retail_outlets": [
          {
              "retail_outlet_name": "ALFAMART",
              "payment_code": "ALFA123456",
              "transfer_amount": 10000
          }
      ],
      "should_exclude_credit_card": false,
      "should_send_email": false,
      "created": "2017-06-12T14:00:00.306Z",
      "updated": "2017-06-12T14:00:00.306Z",
      "mid_label": "test-mid",
      "currency": "IDR",
      "fixed_va":true
    }
    Parameter Deskripsi
    id
    required
    string ID invoice yang didapatkan dari Xendit
    user_id
    required
    string ID bisnis Xendit Anda
    external_id
    required
    string ID invoice yang digunakan di sistem Anda, ID ini dapat digunakan sebagai penghubung sebuah invoice antara sistem kami dan sistem Anda
    status
    required
    string

    PENDING Invoice masih belum dibayar
    merchant_name
    required
    string Nama perusahaan atau situs Anda
    merchant_profile_picture_url
    required
    string Tautan ke gambar profil perusahaan Anda
    amount
    required
    integer positive Jumlah tagihan invoice
    payer_email
    required
    string Email pembayar, didapatkan dari permintaan API Anda
    description
    required
    string Deskripsi invoice, didapatkan dari permintaan API Anda
    invoice_url
    required
    string Tautan untuk mengakses tampilan invoice, disediakan agar Anda dapat menggunakannya di laman situs Anda.
    expiry_date
    required
    string Tanggal dan waktu invoice kedaluwarsa dalam standar ISO dengan default 24 jam.
    available_banks
    required
    Metode pembayaran melalui bank yang tersedia berdasarkan konfigurasi
    string bank_code
    required
    BCA / MANDIRI / BNI / BRI / PERMATA
    string collection_type
    required
    POOL Tipe nonfixed virtual account
    string bank_account_number
    required
    Akun bank tujuan pembayaran
    integer positive transfer_amount
    required
    Jumlah tagihan yang harus dibayar
    string bank_branch
    required
    Tipe akun bank yang digunakan
    string account_holder_name
    required
    Nama pemegang akun
    available_retail_outlets
    required
    Metode pembayaran melalui outlet ritel berdasarkan konfigurasi
    string retail_outlet_name
    required
    string Nama outlet ritel
    string payment_code
    required
    Kode unik identifikasi pembayaran
    integer positive transfer_amount
    required
    Jumlah tagihan yang harus dibayar
    boolean should_exclude_credit_card
    required
    Setingan untuk menyertakan metode pembayaran kartu kredit di dalam invoice
    boolean should_send_email
    required
    Setingan untuk membuat pembayar dapat menerima email mengenai status invoice, apakah sudah dibuat, sudah dibayar, atau sudah kedaluwarsa
    string created
    required
    Waktu ISO yang tercatat saat invoice dibuat
    string updated
    required
    Waktu ISO yang tercatat saat invoice diperbarui
    string mid_label
    required
    MID label yang dapat anda gunakan saat anda menggunakan pembayaran kartu kredit dan menggunakan Xendit sebagai fasilitator. Anda akan mendapatkan response ini jika anda menggunakan mid_label sebagai parameter anda saat menggunakan API pembuatan invoice
    string currency
    required
    Mata uang yang anda gunakan untuk nominal penagihan invoice Anda. Anda akan mendapatkan response ini jika anda menggunakan currency sebagai parameter anda saat menggunakan API pembuatan invoice
    boolean fixed_va
    required
    Parameter ini akan bernilai true jika Anda menggunakan satu nomor VA yang sama untuk beberapa XenInvoice yang anda berikan untuk satu pelanggan yang sama.

    Buat Disbursement untuk Sub-account

    Anda juga bisa membuat permintaan Disbursement atas nama sub-account anda untuk mengirimkan dana dari saldo Cash pada sub-account Anda. Nilai pada bagian ini juga harus mengikuti user_id dari sebuah sub-account yang sebelumnya Anda buat,

    Contoh ini menunjukkan bagaimana untuk membuat sebuah disbursement pada sebuah sub-account dengan menggunakan Disbursement API.

    Ketika Anda membuat Disbursement API, respon yang anda terima akan memiliki disbursement yang dibuat dengan sub-account user_id yang dibuat

    Harap melihat API Reference Xendit untuk membuat API yang didukung.

    Endpoint: Create Disbursement

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

    Buat Disbursement

    Example: Buat Disbursement Request

    curl https://api.xendit.co/disbursements -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -H for-user-id=57fb4e076fb3fa296b7f5a17 \
       -d external_id=settlement_lmnd_001 \
       -d amount=7500 \
       -d bank_code="BCA" \
       -d account_holder_name="Pink Panther" \
       -d account_number="1231241231" \
       -d description="Settlement to Angie's Lemonade stand through FnB platform" \
      <?php
          $url = 'https://api.xendit.co/disbursements';
          $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
          $headers = [];
          $headers[] = 'Content-Type: application/json';
          $headers[] = 'for-user-id: 57fb4e076fb3fa296b7f5a17'
          $data = [
              'external_id' => 'settlement_lmnd_001',
              'amount' => 7500,
              'bank_code' => "BCA",
              'account_holder_name' => 'Angie Pink',
              'account_number' => '1231241231',
              'description' => 'Settlement to Angie\'s Lemonade stand through FnB platform'
          ];
    
          $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;
    Header Parameter 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.

    X-IDEMPOTENCY-KEY
    optional
    string Kode unik untuk mencegah request duplikat. Dapat berupa external_id atau GUID manapun. Harus unik di seluruh mode test & live.

    Karakter Spesial dan alfanumerik
    Panjang maksimum Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    Request Body Parameter Deskripsi
    external_id
    required
    string ID disbursement pada sistem anda yang digunakan untuk merekonsiliasi disbursement

    Characters Spesial dan alfanumerik
    Panjang maksimum 1000 karakter maksimum
    Panjang minimum 1 karakter
    bank_code
    required
    string Kode bank tujuan

    Kode bank harus menurut daftar kode yang tertera disini here
    account_holder_name
    required
    string Nama pemegang rekening sesuai dengan catatan bank atau e-wallet. Digunakan untuk verifikasi dan skenario error / customer support.

    Characters Spesial dan alfanumerik
    Panjang maksimum Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    account_number
    required
    string Nomor rekening bank tujuan. Jika menggunakan e-wallet, nomor telfon yang terdaftar dengan akun e-wallet.

    Karakter Numerik dan hyphens
    Panjang untuk BCA10 karakter
    Panjang maksimum untuk bank lain Tidak ada karakter maksimum
    Panjang minimum untuk bank lain 1 karakter
    E-wallets Nomor telfon yang terdaftar pada e-wallet (Example: 0812XXXXXX)

    *** Kami melayani pengiriman dana ke rekening virtual bank-bank utama (BRI, BNI, Mandiri, CIMB Niaga, Permata, BTN, and NOBU Bank).
    *** Kami melayani pengiriman dana ke e-wallet ternama (GoPay, OVO, and Mandiri e-cash).

    description
    required
    string Deskripsi untuk dikirim beserta pengiriman dana

    Characters Spesial dan alfanumerik
    Panjang maksimum Tidak ada karakter maksimum
    Panjang minimum 1 karakter
    amount
    required
    number Jumlah untuk di disburse

    Karakter Bilangan bulat numerik, tidak ada desimal
    Limit maksimal (BCA, Mandiri, BNI, BNI Syariah, BRI, Permata) Tidak ada limit***
    Batas minimum (BCA, Mandiri, BNI, BNI Syariah, BRI, Permata) Tidak ada batas
    Batas maksimum (bank lain) Rp 50.000.000
    Batas minimum (bank lain) Rp 10.000

    *** Walaupun secara teori tidak ada batasan transfer maksimum untuk transfer ke bank-bank ini, harap dicatat bahwa kami mungkin harus melaporkan semua jumlah transaksi di atas Rp 100.000.000 kepada otoritas keuangan di Indonesia bersama dengan dokumentasi pendukung mengenai transaksi yang mendasarinya

    email_to
    optional
    string[] Email addresses that get notified of disbursement details after the disbursement is completed.
    Maximum 3 email addresses accepted.
    email_cc
    optional
    string[] Email addresses that get notified as carbon copy receiver of disbursement details after the disbursement is completed.
    Maximum 3 email addresses accepted.
    Only allowed if email_to provided.
    email_bcc
    optional
    string[] Email addresses that get notified as blind carbon copy receiver of disbursement details after the disbursement is completed.
    Maximum 3 email addresses accepted.
    Only allowed if email_to provided.

    Buat Disbursement Respon

    Example: Respon Buat Disbursement

    {
      "user_id": "57fb4e076fb3fa296b7f5a17",
      "external_id": "settlement_lmnd_001",
      "amount": 7500,
      "bank_code": "BCA",
      "account_holder_name": "Angie Pink",
      "disbursement_description": "Settlement to Angie's Lemonade stand through FnB platform",
      "status": "PENDING",
      "id": "57f1ce05bb1a631a65eee662",
      "email_to": ["angie@pinkpanther.com"]
    }
    Parameter Deskripsi
    user_id
    required
    string Business ID Xendit Anda
    external_id
    required
    string Custom ID yang anda pilih untuk mengidentifikasi transaksi. Customer kami biasanya menggunakan nomor telfon, alamat email, atau ID transaksi/order.
    amount
    required
    number Jumlah disbursement
    bank_code
    required
    string Kode bank atau e-wallet tujuan. Lihat kode bank
    account_holder_name
    required
    string Nama pemegang rekening bank sesuai dengan catatan bank atau e-wallet. Digunakan untuk verifikasi dan skenario error / customer support.
    disbursement_description
    required
    Ini adalah deskripsi yang anda berikan untuk kami:)
    status
    required
    string
    PENDING Proses pengiriman sudah dimulai tetapi belum diselesaikan oleh bank.
    id
    required
    string Unique Disbursement ID
    email_to
    optional
    string[] Email addresses that get notified of disbursement details after the disbursement is completed.
    This response parameter is only returned if this field is filled.
    email_cc
    optional
    string[] Email addresses that get notified as carbon copy receiver of disbursement details after the disbursement is completed.
    This response parameter is only returned if this field is filled.
    email_bcc
    optional
    string[] Email addresses that get notified as blind carbon copy receiver of disbursement details after the disbursement is completed.
    This response parameter is only returned if this field is filled.

    Callback Pembaruan Akun

    Endpoint: Callback Pembaruan Akun

    POST https://yourcompany.com/xenplatform_callback_url

    Callback Pembaruan Akun dapat digunakan untuk memberi tahu sistem Anda kapan sub-akun Anda berhasil terdaftar dan pembayaran langsung diaktifkan.

    Contoh ini digunakan ketika parameter body yang digunakan pada API Xendit dikirimkan ke callback URL anda.

    Anda akan menerima callback dari Create Account API pada 2 titik ketika proses pembuatan sub-account:

    1. Ketika sub-account didaftarkan
    2. Ketika pembayaran Live telah diaktifkan untuk sub-account anda.

    Silahkan atur callback URL yang pada halaman setting pada Dasbor Xendit anda untuk menerima callback ini. Anda juga bisa melakukan tes callback pada halaman pengaturan yang sama"

    Callback Pembaruan Akun Request

    Example: Callback Pembaruan Akun Request

    curl https://yourcompany.com/xenplatform_callback_url -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d created="2019-01-01T10:51:44.484Z" \
       -d event_type="account.registered" \
       -d data[user_id]="57fb4e076fb3fa296b7f5a17" \
       -d data[account_info][payments_enabled]=false \
      <?php
          $url = 'https://yourcompany.com/xenplatform_callback_url';
          $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
          $headers = [];
          $headers[] = 'Content-Type: application/json';
          $data = [
              'created' => '2019-01-01T10:51:44.484Z',
              'event_type' => 'account.registered',
              'data' => [
                'user_id' => '57fb4e076fb3fa296b7f5a17',
                'account_info' => [
                  'payments_enabled' => false
                ]
              ]
          ];
    
          $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;
    Parameter Deskripsi
    string created
    required
    Waktu ketika callback dikirimkan
    string event_type
    required
    Jenis tindakan callback yang dikirimkan

    Nilai yang tersedia: account.registered, account.activated
    object data
    required
    Memiliiki metadada untuk jenis tindakan
    string user_id
    required
    User ID dari sub-account
    object account_info
    required
    Info metadata akun

    Account Info Metadata Object Parameters

    Parameter Deskripsi
    boolean payments_enabled
    required
    Nilai boolean yang menandakan ketika transaksi telah diaktifkan untuk sub-account

    Transfers

    Transfers API memudahkan Anda untuk mengirimkan dana dari sub-account ke master account dan sebaliknya. Gunakan ini untuk mengatur, atau membagi pembayaran dari platform Anda dan sub-account dalam lingkungan ekosistem Xendit.

    Kunjungi dashbor Xenplatform anda untuk melihat user_id dari akun dan sub-account Anda.

    Endpoint: Create Transfer

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

    Example: Create Transfer

    curl https://api.xendit.co/accounts -X POST \
       -u xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==: \
       -d reference=transfer001 \
       -d amount=10000 \
       -d source_user_id=54afeb170a2b18519b1b8768 \
       -d destination_user_id=5cafeb170a2b1851246b8768 \
      <?php
          $url = 'https://api.xendit.co/transfers';
          $apiKey = 'xnd_development_O46JfOtygef9kMNsK+ZPGT+ZZ9b3ooF4w3Dn+R1k+2fT/7GlCAN3jg==:';
          $headers = [];
          $headers[] = 'Content-Type: application/json';
          $data = [
              'reference' => 'transfer001',
              'amount' => 10000,
              'source_user_id' => '54afeb170a2b18519b1b8768',
              'destination_user_id' => '5cafeb170a2b1851246b8768'
          ];
    
          $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;

    Parameter Deskripsi
    reference
    required
    string Sebuah referensi unik untuk Transfer ini. Gunakan ini untuk rekonsiliasi transfer antar akun master dan sub-account.
    amount
    required
    number Nominal yang Anda ingin transfer.
    source_user_id
    required
    string Saldo akun yang Anda ingin jadikan sebagai sumber transfer. Ini bisa berasal dari platform Anda atau sub-account user_id.
    destination_user_id
    required
    stringSaldo akun yang Anda ingin jadikan sebagai tujuan transfer. Ini bisa berasal dari platform Anda atau sub-account user_id.

    Transfers Response

    Example: Transfers Response

    {
        "created": "2020-01-01T08:51:44.484Z",
        "transfer_id": "60b9d810-d9a3-456c-abbf-2786ec7a9651",
        "reference": "transfer001",
        "source_user_id": "54afeb170a2b18519b1b8768",
        "destination_user_id": "5cafeb170a2b1851246b8768",
        "status": "SUCCESSFUL",
        "amount": 10000
    }
    Parameter Description
    created
    required
    string Titik waktu dimana Transfer dibuat

    Zona Waktu: GMT+0
    transfer_id
    required
    string Sebuah referensi unik untuk Transfer ini yang dihasilkan oleh sistem Xendit
    reference
    required
    string Sebuah referensi unik untuk Transfer ini yang Anda tentukan ketika permintaan dibuat
    source_user_id
    required
    stringSumber dari transfer. Ini adalah user_id dari master atau sub-account Anda
    destination_user_id
    required
    stringTujuan dari transfer. Ini adalah user_id dari master atau sub-account Anda
    status
    required
    string Status dari Transfer

    Nilai yang tersedia: SUCCESSFUL
    amount
    required
    string Nominal yang telah di transfer