Changelog
September 2026
10 September
Formulir HTML kini mengirim kontainer yang ditandatangani. Menggantikan field tagihan yang terpisah—data (base64url dari JSON) dan signature (HMAC-SHA256 dari string data). Endpoint berubah dari invoices/createFromForm menjadi invoices/form. Formulir lama tidak lagi bekerja dan harus dibangun ulang: lihat Tanda tangan formulir HTML.
8 September
Field numerik di isi webhook kini berupa angka. Enam field yang dulu dikirim sebagai string kini dikirim sebagai angka: project.commissionRate, invoice.commissionFiatUSD, invoice.amountFiatUSD, invoice.amountFiat, invoice.calcAmountFiat, payment.amount. Susunan field, namanya, dan urutannya tidak berubah.
Perlu diingat: nol di belakang dibuang, sehingga jumlah 10.00 tiba sebagai 10. Jumlah di bawah 0.0001 tiba dalam notasi eksponensial, misalnya 1.0e-6—penguraian JSON standar mengembalikan angka yang benar; hanya penguraian string manual yang rusak.
Notifikasi yang dibentuk sebelum peluncuran dan belum terkirim tiba dalam format lama. Penerima harus menerima kedua varian sampai antreannya habis—ini memakan waktu tidak lebih dari dua hari.
6 September
Field numerik di respons API kini berupa angka. Berlaku untuk invoices/list, payments/list, dan invoices/create.
| Field | Sebelum | Sesudah |
|---|---|---|
commissionFiatUSD | "0.10" | 0.1 |
amountFiatUSD | "10.00" | 10 |
amountFiat | "1000.00" | 1000 |
views | "0" | 0 |
payment.amount | "10.500000000" | 10.5 |
Kunci yang dibatasi pada proyek kini menerapkan pembatasan di semua metode. Sebelumnya, sebagian metode mengabaikan proyek. Kini pembatasan menjadi filter di metode daftar, dan permintaan atas tagihan atau dompet proyek lain ditolak dengan Restricted project. Metode yang tidak dapat menghormati pembatasan proyek ditutup untuk kunci semacam itu. Rinciannya ada di bagian “Cakupan kunci”.
Daftar pembayaran kini mengembalikan pembayaran tak tercocokkan. Sebelumnya, payments/list hanya mengembalikan pembayaran yang terikat pada tagihan. Kini hasilnya memuat semua pembayaran di seluruh dompet Anda; yang tak tercocokkan tidak memiliki blok invoice. Pembayaran inilah yang diperlukan untuk pencocokan manual lewat invoices/bindPayment.
Pembatalan tagihan kini membedakan alasan penolakan. Sebelumnya, tagihan yang tidak ada maupun syarat yang tidak terpenuhi sama-sama mengembalikan Invoice not found yang umum. Kini Invoice not found hanya berarti tagihannya tidak ada, sedangkan syarat yang tidak terpenuhi mengembalikan Invoice cannot be canceled.
Identifikasi yang salah bentuk kini ditolak. invoices/list memvalidasi invoiceId, invoiceUid, dan projectId; payments/list—walletId dan invoiceId. Nilai yang tidak sesuai mengembalikan Parameter is filled in incorrectly beserta nama field-nya. Sebelumnya, parameter semacam itu dibuang diam-diam dan hasilnya kembali tanpa filter.
Batas periode kini mencakup seluruh hari yang disebut. startDate dan endDate ditafsirkan dari 00:00:00 sampai 23:59:59. Sebelumnya, hari akhir terpotong seluruhnya, dan kueri satu hari hanya mengembalikan rekaman yang dibuat tepat tengah malam. Berlaku untuk invoices/list, payments/list, statistics/invoices, dan statistics/payments.
Field proyek ditambahkan ke riwayat saldo. Setiap operasi di metode billing/history kini membawa field projectId. Untuk operasi tingkat akun—pengisian saldo dan bonus—nilainya null.
4 September
Deskripsi dan data layanan kembali dalam bentuk aslinya. Field description dan serviceData dulu disimpan terenkode, dan di respons API tanda kutip tiba sebagai " dan tanda lebih kecil sebagai <. Kini yang dikembalikan persis seperti yang dikirim merchant. Saat merender dalam HTML, lakukan escape di sisi Anda.
Formulir HTML hanya menerima POST. Membuat tagihan dengan mengikuti tautan berparameter di bilah alamat tidak lagi bekerja—parameter hanya dibaca dari isi permintaan. Jika Anda memakai tautan, ganti dengan formulir dengan method="post".
3 September
Notifikasi webhook kini ditandatangani. Header X-Timestamp dan X-Signature ditambahkan; tanda tangan dihitung dengan HMAC-SHA256 memakai kunci rahasia webhook. Memverifikasi tanda tangan memungkinkan Anda membedakan notifikasi asli dari palsu. Mekanisme dan contohnya ada di bagian “Verifikasi tanda tangan webhook”.
Perubahan ini kompatibel mundur: jika Anda tidak menambahkan pemeriksaan, penangan Anda tetap bekerja seperti sebelumnya.