Nyaur Docs

Checkout links dan sessions

Checkout session lewat API, checkout link yang bisa dibagikan, metode bayar QRIS dan VA.

Ada dua cara menagih pembeli: checkout link (halaman hosted yang dibagikan) dan checkout session (dibuat lewat API).

Checkout link adalah URL tetap untuk satu produk dan satu harga: https://nyaur.id/checkout/<slug>. Cocok untuk README, landing page, atau DM. Link dibuat dan dikelola dari dashboard, Checkout links.

OpsiKeterangan
productId, priceIdWajib. Harga harus milik produk itu.
slugOpsional, huruf kecil, harus unik. Bila kosong, dibuat dari nama produk. Slug yang sudah dipakai ditolak (CONFLICT).
discountIdOpsional, terapkan diskon.
allowPromoCodesIzinkan pembeli memasukkan kode promo.

Halaman checkout menampilkan baris PPN dan keterangan bahwa pembayaran diproses oleh PT Joyo Digitama Solusi. Pembeli memilih QRIS atau virtual account (BCA, BNI, BRI).

Checkout session lewat API

POST /v1/checkouts

curl -X POST https://api.nyaur.id/v1/checkouts \
  -H "Authorization: Bearer $NYAUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "prd_xxx",
    "priceId": "prc_xxx",
    "customerEmail": "pembeli@example.com",
    "customerName": "Dewi",
    "locale": "id",
    "metadata": { "userId": "u_123" }
  }'
FieldKeterangan
productIdWajib.
priceIdOpsional. Tanpa ini dipakai harga default yang aktif.
customerEmailOpsional. Customer dibuat atau dipakai ulang berdasarkan email.
localeid atau en. Default mengikuti organisasi.

Respons 201 memuat id, status, mode, subtotal, ppn, total, dan expiresAt.

  • Sesi berlaku 60 menit. Setelah itu GET /v1/checkouts/{id} melaporkan expired.
  • status: open, paid, expired, failed, cancelled.
  • total = subtotal + PPN. Contoh: subtotal Rp100.000 menjadi total Rp111.000.
  • mode mengikuti token. Lihat Sandbox vs live.

Jangan polling status. Dengarkan webhook checkout.paid dan order.paid, lalu ambil order lewat GET /v1/orders/{id}.

Event

EventKapan
checkout.createdSesi dibuat.
checkout.paidPembeli lunas.
checkout.expiredSesi kedaluwarsa tanpa pembayaran.
order.paidOrder dan invoice sudah ada.

Orders dan customers

  • GET /v1/orders dan GET /v1/orders/{id}: order sesuai mode token. Field penting: status (pending, paid, refunded, partially_refunded, disputed), subtotal, ppnAmount, total, platformFee, creatorCredit, invoiceNumber, refundedAmount.
  • GET /v1/customers, POST /v1/customers, GET /v1/customers/{id}: email wajib, name, externalId, dan metadata opsional.

On this page