Paymenku Docs

Payment link

Tautan checkout di mana pelanggan memilih sendiri kanal pembayarannya.

Tautan checkout. Berbeda dari membuat transaksi: merchant tidak memilih kanal — pelanggan yang memilih di halaman pembayaran.

Hanya untuk kunci live

Payment link melahirkan transaksi nyata, sehingga kunci sandbox (sk_test_*) ditolak dengan 403.

Membuat tautan

POST /payment-link/create

curl https://paymenku.com/api/v1/payment-link/create \
  --request POST \
  --header 'Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{
    "amount": 150000,
    "title": "Invoice #1024",
    "customer_name": "Budi Santoso",
    "customer_email": "budi@example.com",
    "return_url": "https://tokoanda.com/selesai",
    "order_items": [{ "name": "Paket Internet 30 Hari", "quantity": 1 }]
  }'
FieldWajibKeterangan
amountYaNominal, minimum Rp 1.000
customer_nameYaNama pelanggan
customer_emailYaEmail pelanggan
titleTidakBila kosong, memakai nama item pertama atau "Pembayaran"
descriptionTidakMaksimal 1.000 karakter
return_urlTidakTujuan redirect setelah pembayaran
expires_in_minutesTidak5 menit–30 hari, bawaan 1.440 menit (24 jam)
is_single_useTidakBawaan true — tautan mati setelah satu pembayaran berhasil
order_itemsTidakMaksimal 100 baris

Respons 201:

{
  "status": "success",
  "message": "Payment link berhasil dibuat",
  "data": {
    "link_id": "PLAB12CD34EF56",
    "payment_url": "https://paymenku.com/link/PLAB12CD34EF56",
    "title": "Invoice #1024",
    "description": null,
    "amount": 150000,
    "items": [{ "name": "Paket Internet 30 Hari", "quantity": 1 }],
    "status": "active",
    "is_single_use": true,
    "expires_at": "2026-10-28T09:00:00+07:00",
    "expires_in_minutes": 1440,
    "customer_name": "Budi Santoso",
    "customer_email": "budi@example.com",
    "return_url": "https://tokoanda.com/selesai",
    "created_at": "2026-10-27T09:00:00+07:00"
  }
}

Bagikan payment_url kepada pelanggan.

Galat sandbox

{
  "status": "error",
  "message": "Payment Link belum tersedia untuk kunci uji (sk_test_*). Gunakan kunci live."
}

Detail tautan

GET /payment-link/{linkId} mengembalikan detail tautan beserta tersedia (masih bisa dibayar atau tidak) dan transaksi yang sudah lahir dari tautan ini.

{
  "status": "success",
  "data": {
    "link_id": "PLAB12CD34EF56",
    "payment_url": "https://paymenku.com/link/PLAB12CD34EF56",
    "title": "Invoice #1024",
    "amount": 150000,
    "status": "active",
    "is_single_use": true,
    "expires_at": "2026-10-28T09:00:00+07:00",
    "tersedia": true,
    "transaksi": {
      "trx_id": "IDP202610271040123456",
      "status": "pending",
      "paid_at": null
    }
  }
}

Tautan yang tidak ada — atau milik merchant lain — dibalas 404:

{ "status": "error", "message": "Payment link tidak ditemukan." }
  • Menagih pelanggan lewat WhatsApp atau email tanpa membangun halaman checkout.
  • Nominal tetap, tetapi kanal pembayaran bebas dipilih pelanggan.
  • Butuh tautan sekali pakai yang kedaluwarsa otomatis.

Untuk pembayaran yang kanalnya Anda tentukan sendiri, pakai Buat Transaksi.

On this page