API

Untuk memulai integrasi Paylater menggunakan API, kunjungi halaman Pengaturan > API Keys pada Dasbor Anda untuk membuat API key baru.

  1. Masukkan nama API key untuk referensi Anda
  2. Pilih izin WRITE dalam Produk menerima pembayaran
  3. Klik Buat key
INFO

Untuk environment testing, buat API key di Test Mode. Setelah melakukan tes, Anda dapat membuat API key baru di Live Mode untuk menerima pembayaran asli.

Tips integrasi:

  1. Untuk informasi lebih lanjut mengenai integrasi API, kunjungi Panduan Mulai Langsung.
  2. Ikuti panduan Referensi API untuk rincian mengenai API kami.
  3. Gunakan Collection Postman kami untuk melihat contoh request dan response.

Garis Besar Alur API

Membuat Customer

Customer object dibuat untuk menghubungkan transaksi dengan metode pembayaran untuk customer dengan mudah.

INFO

Penyedia PayLater mengharuskan Anda untuk memasukkan rincian yang akurat mengenai customer karena data tersebut akan digunakan untuk menganalisis risiko kredit, pengembalian dana atau penolakan pembayaran.

  • Kirimkan request untuk Membuat Customer API (Versi API 2020-10-31) menggunakan parameter-parameter berikut ini:
    • given_names
    • surname
    • mobile_phone
    • email
    • addresses
    • country
    • street_line1
    • city
    • postal_code
  • Dalam Respon yang Anda dapatkan, akan ada customer id yang dikembalikan bersama dengan rincian customer yang telah Anda buat.
INFO

Anda hanya perlu membuat customer satu kali untuk menghubungkan berbagai transaksi di Xendit (termasuk untuk charge PayLater, eWallet, Direct Debit, dll.)

Contoh request pembuatan customer

{
  "reference_id" : "Gryffindor-student-003",
  "given_names" : "Harry",
  "surname" : "Potter",
  "email" : "harry@hogwarts.co",
  "mobile_number" :  "+629991234567",
  "addresses": [
    {
      "country": "ID",
      "province": "Daerah Khusus Ibukota Jakarta",
      "street_line1": "Jalan Makan",
      "city": "Jakarta Pusat",
      "postal_code": "12160"
    }
  ]
}

Contoh respon pembuatan customer

{
    "id": "e296f81b-074c-44ef-9977-d0ace6c6df1f",
    "reference_id": "Gryffindor-student-003",
    "given_names": "Harry",
    "email": "harry@hogwarts.co",
    "mobile_number": "+628234567890",
    "description": null,
    "middle_name": null,
    "surname": "Potter",
    "phone_number": null,
    "nationality": null,
    "date_of_birth": null,
    "metadata": null,
    "employment": null,
    "addresses": [
        {
            "category": "",
            "country": "ID",
            "state": "",
            "province": "Daerah Khusus Ibukota Jakarta",
            "city": "Jakarta Pusat",
            "postal_code": "12160",
            "street_line1": "Jalan Makan",
            "street_line2": "",
            "is_preferred": false
        }
    ]
}

Membuat Plan Paylater

Pemilihan plan PayLater memungkinkan customer Anda untuk melihat informasi mengenai pilihan tenor cicilan dari penyedia PayLater yang dipilih, termasuk jumlah dan jangka waktunya.

Langkah-langkah untuk mengajukan plan PayLater:

  1. Kirimkan request POST ke API Inisiasi PayLater Plans beserta parameter yang dibutuhkan. Gunakan customer id yang Anda dapatkan dari API Create Customer.
  2. Pada saat menerima respon, Anda akan melihat plan PayLater yang diberikan oleh penyedia PayLater. Jangka waktu akan tergantung pada nominal yang Anda masukkan pada request. Anda juga akan mendapatkan plan id yang akan Anda gunakan di langkah selanjutnya.

Contoh Request Plan PayLater

{
    "customer_id": "e296f81b-074c-44ef-9977-d0ace6c6df1f",
    "channel_code": "ID_KREDIVO",
    "currency": "IDR",
    "amount": 10000,
    "order_items": [{
        "type": "PHYSICAL_PRODUCT",
        "reference_id": "SKU_backtoschool-promotion123",
        "name": "Nymbus twothousand",
        "net_unit_amount": 10000,
        "quantity": 1,
        "url": "https://www.wzardingworld.com/nymbus",
        "category": "Sports",
        "subcategory": "Equipment",
        "description": "Sports equipment for quidditch"
    }]
}

Contoh Respon Plan PayLater

{
    "id" : "plp_49915991-a7a8-4c21-9ae1-de9b95f5cb3d",
    "customer_id": "e296f81b-074c-44ef-9977-d0ace6c6df1f",
    "channel_code": "ID_KREDIVO",
    "currency": "IDR",
    "amount": 10000,
    "order_items": [
        {
            "type": "PHYSICAL_PRODUCT",
            "reference_id": "SKU_backtoschool-promotion123",
            "name": "Nymbus twothousand",
            "net_unit_amount": 10000,
            "quantity": 1,
            "url": "https://www.wzardingworld.com/nymbus",
            "category": "Sports",
            "subcategory": "Equipment",
            "description": "Sports equipment for quidditch",
            "metadata": null
        }
    ],
    "options": [
        {
            "total_amount": 11000,
            "installment_amount": 11000,
            "interval": "MONTH",
            "interval_count": 1,
            "total_recurrence": 1,
            "interest_rate": 0,
            "description": "Bayar dalam 30 hari"
        }
    ],
    "created": "2021-11-01T02:40:47.896Z"
}

Kami merekomendasikan Anda untuk memberikan plan cicilan yang terinci seperti contoh di atas untuk membantu customer Anda memilih penyedia PayLater hingga menyelesaikan pembayaran. Customer Anda akan memilih plan Paylater sesuai dengan preferensi mereka dan konfirmasi jumlah akhir pembayaran lewat platform penyedia PayLater.

INFO

Pilihan cicilan PayLater hanya ditujukan sebagai referensi. Jumlah tersebut adalah estimasi yang dihitung oleh penyedia PayLater berdasarkan rincian pesanan yang terdapat di request API Anda.

Order Item

Mohon mencatat bahwa parameter order_items bersifat wajib. Bagian ini harus berisi seluruh informasi dari keranjang belanja customer. Rincian yang tidak lengkap akan menyebabkan eror.

Jenis barang

  • DIGITAL_PRODUCT
  • PHYSICAL_PRODUCT
  • DIGITAL_SERVICE
  • PHYSICAL_SERVICE
  • FEE
  • DISCOUNT (tidak berlaku untuk Akulaku)

Parameter wajib

  • reference_id
  • name
  • net_unit_amount
  • quantity
  • url
  • category

Berikut adalah ilustrasi pengisian order_items berdasarkan keranjang belanja customer:

Pembuatan Charge PayLater (One-Time Payments)

INFO

Anda perlu mengatur URL callback di dashboard Xendit Anda (baik mode Test maupun Live) untuk menerima notifikasi status pembayaran dan menghindari eror.

Request ini akan membuat transaksi kepada customer untuk menyelesaikan pembayaran di platform penyedia PayLater yang dipilih. Dalam request ini, Anda juga dapat mengatur URL redirection ke customer ketika transaksi sukses atau gagal.

  1. Kirim request POST untuk Membuat Charge PayLater beserta parameter yang dibutuhkan. Gunakan plan id yang Anda dapatkan dari API Inisiasi Plan PayLater.
  2. Dalam respose, Anda akan melihat detail dengan status PENDING, beserta charge id dan URL checkout di mana customer dapat menyelesaikan pembayaran.
  3. Xendit akan mengirimkan callback ke URL callback yang telah dimasukkan ketika status pembayaran sudah terkonfirmasi sebagai SUCCEEDED

Contoh request Charge PayLater

{
    "plan_id": "plp_c0df725d-4997-461d-8530-f2cc661f7e14",
    "reference_id": "order_id_456",
    "checkout_method": "ONE_TIME_PAYMENT",
    "success_redirect_url": "https://https://www.wzardingworld.com/successful-payments",
    "failure_redirect_url": "https://https://www.wzardingworld.com/failed-payments"
}

Contoh response Charge PayLater

{
    "id" : "plc_b7b2669e-0e3d-4cbd-8b36-cf16be78606c",
    "business_id": "59ed61db656f544f3ca5v6f6",
    "reference_id": "order_id_456",
    "customer_id": "6a55adf8-1520-4651-8a05-9d04e0a4c48d",
    "plan_id": "plp_c0df725d-4997-461d-8530-f2cc661f7e14",
    "currency": "IDR",
    "amount": 5000000,
    "channel_code": "ID_KREDIVO",
    "checkout_method": "ONE_TIME_PAYMENT",
    "status": "PENDING",
    "actions": {
        "desktop_web_checkout_url": "https://pay-sandbox.kredivo.com/signIn?tk=c115175b-cf9c-445e-be24-3091a87e6316",
        "mobile_web_checkout_url": "https://pay-sandbox.kredivo.com/signIn?tk=c115175b-cf9c-445e-be24-3091a87e6316"
    },
    "success_redirect_url": "https://www.wzardingworld.com/successful-payments",
    "failure_redirect_url": "https://www.wzardingworld.com/failed-payments",
    "callback_url": "https://webhook.site/5b30c7db-1873-4afd-b651-0ebaa16c4eee",
    "created": "2021-10-29T06:50:57.877Z",
    "updated": "2021-10-29T06:50:58.213Z",
    "order_items": [
        {
            "type": "PHYSICAL_PRODUCT",
            "reference_id": "SKU_123-456-789",
            "name": "Nymbus 2000",
            "net_unit_amount": 5000000,
            "quantity": 1,
            "url": "https://www.website.com/nymbus-2000",
            "category": "Sports equipment",
            "subcategory": "Quidditch",
            "description": null,
            "metadata": null
        }
    ],
    "voided_at": null,
    "payment_method_id": null,
    "metadata": null,
    "channel_reference": "5cf2bf8a-b705-419a-9d2d-ad7cdf5363e2"
}

Refund Transaksi PayLater

Xendit akan mengirimkan Anda callback/webhook untuk pembayaran PayLater yang berhasil dari pembuatan charge PayLater. Pastikan Anda sudah mengatur URL Callback di Dashboard Xendit untuk PayLater untuk dapat menerimanya. Customer Anda akan mendapatkan limit kredit mereka kembali di platform PayLater provider mereka.

INFO

Pengembalian dana PayLater hanya dapat dilakukan jika customer telah menyelesaikan pembayaran. Hanya berlaku bagi KREDIVO, AKULAKU, dan INDODANA.

INFO

API pengembalian dana kami dapat bermanfaat pula untuk diintegrasikan ke dashboard operasional tim Anda.

  1. Kirimkan POST untuk ke API Pengembalian Dana PayLater. Gunakan charge id pembayaran yang ingin dikembalikan dananya.
  2. Pada response, Anda akan melihat rincian transaksi dan statusnya, serta Anda akan melihat refund id.

Contoh request Refund Transaksi PayLater

{
    "amount": 1000,
    "reason": "DEFECTIVE_ITEM"
}

Contoh response Refund Transaksi PayLater

{
    "id" : "plr_2f2aa47f-2764-4b42-8712-c3fb1270b09e",
    "charge_id" : "plc_8cb12305-9bcf-4441-a087-ee0d446e297b",
    "channel_code" : "ID_KREDIVO",
    "currency" : "IDR",
    "amount" : 1000,
    "reason" : "DEFECTIVE_ITEM",
    "status" : "PENDING",
    "created" : "2021-04-20T16:23:52Z",
    "updated" : null
}

Last Updated on 2023-05-23