Dokumentasi / Payment (QRIS) Beta

Payment API (QRIS)

Host https://api.larika.id. Kirim API key workspace di header x-api-key atau Authorization: Bearer. Batas 120 permintaan per menit untuk tiap key. Jawaban berbentuk { success, data } atau { success: false, error }.

Alur satu pembayaran

  1. App Anda memanggil Buat tagihan dengan amount dan ref pesanan.
  2. Tampilkan payload sebagai QR dan minta pelanggan membayar tepat payAmount.
  3. Bank mengirim email notifikasi. Larika membacanya dan menandai tagihan PAID.
  4. App Anda menanyakan status tiap beberapa detik sampai bukan PENDING.

Tagihan (QR langsung)

POST/v1/qris/chargesBuat tagihan

Membuat satu tagihan untuk satu pesanan. Merchant QRIS: tampilkan payload sebagai kode QR dan minta pelanggan membayar tepat payAmount (jumlah dikurangi kode unik 1–999). Merchant transfer bank: payload kosong, bank berisi rekening tujuan, dan payAmount adalah jumlah ditambah kode unik 1–999. Kode unik membuat email bank menyebut tagihan ini lewat nominalnya. ref yang sama mengembalikan tagihan yang sama (HTTP 200, tidak membuat baru). Tiap tagihan baru memotong kredit.

ParameterDiTipeKeterangan
amount *bodyintegerRupiah utuh, 1.000 sampai 10.000.000.
refbodystringNomor pesananmu, maks 100 karakter. Unik per merchant.
expiresInbodyintegerMasa berlaku QR dalam menit, 5–1440. Bawaan: pengaturan merchant.
Contoh
curl -X POST 'https://api.larika.id/v1/qris/charges' \
  -H 'x-api-key: $LARIKA_KEY' \
  -H 'content-type: application/json' \
  -d '{"amount":150000,"ref":"INV-1024","expiresIn":30}'
Jawaban
201
{
  "success": true,
  "data": {
    "id": "cm2q0x1…",
    "ref": "INV-1024",
    "amount": 150000,
    "uniqueCode": 237,
    "payAmount": 149763,
    "payload": "00020101021226…6304A1B2",
    "status": "PENDING",
    "expiresAt": "2026-10-03T08:45:00.000Z",
    "paidAt": null,
    "createdAt": "2026-10-03T08:15:00.000Z"
  }
}
GET/v1/qris/charges/{id}Lihat tagihan

Status satu tagihan. status: PENDING (menunggu bayar), PAID (lunas, paidAt terisi), EXPIRED, CANCELLED. Tanyakan ulang tiap beberapa detik sampai bukan PENDING.

ParameterDiTipeKeterangan
id *pathstringId tagihan dari Buat tagihan.
Contoh
curl -X GET 'https://api.larika.id/v1/qris/charges/{id}' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2q0x1…",
    "ref": "INV-1024",
    "amount": 150000,
    "uniqueCode": 237,
    "payAmount": 149763,
    "payload": "00020101021226…6304A1B2",
    "status": "PAID",
    "expiresAt": "2026-10-03T08:45:00.000Z",
    "paidAt": "2026-10-03T08:21:07.000Z",
    "createdAt": "2026-10-03T08:15:00.000Z"
  }
}
GET/v1/qris/chargesCari lewat ref

Tagihan milikmu dengan ref ini. Berguna kalau id-nya belum tersimpan di aplikasimu.

ParameterDiTipeKeterangan
ref *querystringRef yang dikirim saat membuat tagihan.
Contoh
curl -X GET 'https://api.larika.id/v1/qris/charges' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2q0x1…",
    "ref": "INV-1024",
    "amount": 150000,
    "uniqueCode": 237,
    "payAmount": 149763,
    "payload": "00020101021226…6304A1B2",
    "status": "PENDING",
    "expiresAt": "2026-10-03T08:45:00.000Z",
    "paidAt": null,
    "createdAt": "2026-10-03T08:15:00.000Z"
  }
}
POST/v1/qris/charges/{id}/cancelBatalkan tagihan

Membatalkan tagihan yang masih PENDING. Tagihan yang sudah lunas, kedaluwarsa, atau dibatalkan menjawab HTTP 409. Kredit yang sudah terpotong tidak dikembalikan.

ParameterDiTipeKeterangan
id *pathstringId tagihan.
Contoh
curl -X POST 'https://api.larika.id/v1/qris/charges/{id}/cancel' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2q0x1…",
    "ref": "INV-1024",
    "amount": 150000,
    "uniqueCode": 237,
    "payAmount": 149763,
    "payload": "00020101021226…6304A1B2",
    "status": "CANCELLED",
    "expiresAt": "2026-10-03T08:45:00.000Z",
    "paidAt": null,
    "createdAt": "2026-10-03T08:15:00.000Z"
  }
}

Invoice

GET/v1/qris/methodsDaftar metode bayar

Metode bayar milik workspace-mu (QRIS dan transfer bank) beserta kesehatannya. available: false berarti metode itu sedang gangguan (email notifikasinya tidak terbaca), dan reason menjelaskan kenapa. Halaman bayar menyembunyikan metode yang sedang gangguan. Pakai id di sini untuk memilih methods saat membuat invoice.

Contoh
curl -X GET 'https://api.larika.id/v1/qris/methods' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": [
    {
      "id": "cm2m0a…",
      "kind": "QRIS",
      "label": "QRIS",
      "available": true
    },
    {
      "id": "cm2m0b…",
      "kind": "TRANSFER",
      "label": "Transfer BNI",
      "bank": {
        "name": "BNI",
        "accountNumber": "0123456789",
        "accountName": "Depati Digital"
      },
      "available": false,
      "reason": "Kotak email notifikasi sedang gangguan"
    }
  ]
}
POST/v1/qris/invoicesBuat invoice

Membuat satu invoice dan halaman bayarnya: arahkan pelanggan ke checkoutUrl. Di halaman itu pelanggan memilih salah satu metode yang aktif dan sedang berfungsi, lalu melihat QR atau rekening tujuan dan nominal yang harus dibayar (jumlah dikurangi kode unik untuk QRIS, ditambah kode unik untuk transfer). Halaman berubah sendiri saat lunas. Data pelanggan opsional. Biaya satu kali per invoice, saat metode pertama dipilih; ganti metode tidak menambah biaya. ref yang sama mengembalikan invoice yang sama. Gagal 503 kalau semua metode yang diminta sedang gangguan.

ParameterDiTipeKeterangan
amount *bodyintegerRupiah utuh, 1.000 sampai 10.000.000.
refbodystringNomor pesananmu, maks 100 karakter. Unik per merchant.
methodsbodystring[]Metode yang diizinkan: id dari Daftar metode bayar, atau qris / transfer untuk semua metode jenis itu. Kosong = semua.
customerbodyobjectOpsional: name, phone, email, address. Tampil di halaman bayar dan tersimpan di invoice.
expiresInbodyintegerMasa berlaku invoice dalam menit, 5–1440. Bawaan: pengaturan merchant (30).
returnUrlbodystringAlamat http(s) tokomu: tombol Kembali ke toko di halaman bayar.
Contoh
curl -X POST 'https://api.larika.id/v1/qris/invoices' \
  -H 'x-api-key: $LARIKA_KEY' \
  -H 'content-type: application/json' \
  -d '{"amount":150000,"ref":"INV-1024","methods":["qris","transfer"],"customer":{"name":"Budi Santoso","phone":"081234567890","email":"[email protected]","address":"Jl. Merdeka 1, Sungaipenuh"},"returnUrl":"https://tokoanda.com/pesanan/1024"}'
Jawaban
201
{
  "success": true,
  "data": {
    "id": "cm2i0x…",
    "ref": "INV-1024",
    "amount": 150000,
    "status": "PENDING",
    "methods": [
      "cm2m0a…",
      "cm2m0b…"
    ],
    "customer": {
      "name": "Budi Santoso",
      "phone": "081234567890",
      "email": "[email protected]",
      "address": "Jl. Merdeka 1, Sungaipenuh"
    },
    "expiresAt": "2026-10-03T08:45:00.000Z",
    "paidAt": null,
    "paidWith": null,
    "checkoutUrl": "https://panel.larika.id/pay/eyJpZCI6ImNtMmkw…",
    "createdAt": "2026-10-03T08:15:00.000Z"
  }
}
GET/v1/qris/invoices/{id}Lihat invoice

Status invoice: PENDING, PAID (lunas, paidAt dan paidWith terisi), EXPIRED, atau CANCELLED. Tanyakan ulang tiap beberapa detik sampai bukan PENDING.

ParameterDiTipeKeterangan
id *pathstringId invoice dari Buat invoice.
Contoh
curl -X GET 'https://api.larika.id/v1/qris/invoices/{id}' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2i0x…",
    "ref": "INV-1024",
    "amount": 150000,
    "status": "PAID",
    "paidAt": "2026-10-03T08:21:07.000Z",
    "paidWith": "cm2m0a…"
  }
}
GET/v1/qris/invoicesCari invoice lewat ref

Invoice milikmu dengan ref ini.

ParameterDiTipeKeterangan
ref *querystringRef yang dikirim saat membuat invoice.
Contoh
curl -X GET 'https://api.larika.id/v1/qris/invoices' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2i0x…",
    "ref": "INV-1024",
    "amount": 150000,
    "status": "PENDING"
  }
}
POST/v1/qris/invoices/{id}/cancelBatalkan invoice

Membatalkan invoice yang masih PENDING, beserta tagihan yang sedang terbuka. Halaman bayarnya menampilkan pembayaran dibatalkan. Invoice yang sudah lunas, kedaluwarsa, atau dibatalkan menjawab HTTP 409.

ParameterDiTipeKeterangan
id *pathstringId invoice.
Contoh
curl -X POST 'https://api.larika.id/v1/qris/invoices/{id}/cancel' \
  -H 'x-api-key: $LARIKA_KEY'
Jawaban
200
{
  "success": true,
  "data": {
    "id": "cm2i0x…",
    "status": "CANCELLED"
  }
}