Catatan lapangan

Menerima kripto di point of sale

Menerima kripto di point of sale berarti pelanggan yang berdiri di konter Anda membayar dengan aset digital — stablecoin seperti USDC, atau koin seperti BTC — dan Anda, sebagai merchant, menerima kredit dalam euro. Aset yang dikirim pelanggan dan uang yang Anda terima adalah dua hal berbeda, dihubungkan oleh kuotasi yang ditetapkan pada saat tap. Tidak ada bagian dari kasir, pembukuan, atau rekening bank Anda yang tahu bahwa kripto terlibat. Terminal menampilkan harga dalam euro, pelanggan memindai kode, dan beberapa detik kemudian penjualan selesai dalam euro — di baris yang sama seperti jika dibayar dengan kartu. Kripto di point of sale adalah metode pembayaran, bukan perubahan akuntansi, dan menjaganya tetap begitu adalah seluruh persoalan rekayasanya.

Kerangka berpikir ini perlu dinyatakan lebih dulu, karena kebanyakan kebingungan soal pembayaran kripto berasal dari menyatukan dua pertanyaan yang seharusnya dipisah: bagaimana pelanggan membayar, dan dalam mata uang apa merchant menyimpan uangnya. Pisahkan keduanya dan sisanya mengikuti.

Masalah yang sebenarnya harus diselesaikan

Merchant menginginkan penjualan, bukan volatilitas. Mereka tidak mau menutup hari dengan sekantong aset bernilai tak pasti, dan tidak mau pembukuan mereka tiba-tiba bicara dua mata uang. Mereka ingin harga terkunci antara tap dan struk, uang dalam euro, dan rekonsiliasi yang terlihat seperti hari transaksi kartu lainnya. Toko yang menerima kripto secara naif tidak mendapat satu pun dari itu: ia menerima aset yang harganya bergerak saat pelanggan masih menimbang, menaruhnya di wallet, dan mewarisi mata uang kedua di pembukuan yang kini harus dinilai dan dikonversi manual oleh seseorang. Jadi tujuan desainnya sempit dan ketat — buat kripto terlihat di satu tempat saja, saat pembayaran, dan tak terlihat di tempat lain.

Satu tap: QR, kuotasi terkunci, satu baris euro

Ikuti alur di konter. Kasir memindai belanjaan senilai €24.00. Terminal menampilkan total dalam euro dan membuat kode QR yang mengenkode permintaan — jumlah, alamat tujuan atau invoice, dan id kuotasi berumur pendek. Pelanggan memindainya dengan wallet miliknya, melihat persis apa yang akan dikirim, lalu mengonfirmasi. Terminal memantau jaringan untuk transfer itu dan, setelah terkonfirmasi, mencetak struk dalam euro. Dari sisi kasir, ritmenya sama dengan kartu: total, tunjukkan, setujui, struk. Tak seorang pun di balik konter mengetik alamat atau membaca saldo dalam satuan selain euro.

Menaruh permintaan di dalam QR inilah yang membuatnya aman diserahkan ke ponsel orang asing. Jumlah dan tujuan dibawa dalam kode, dengan checksum, sehingga pelanggan tidak bisa membayar ke alamat atau jumlah yang salah karena salah ketik — langkah yang sama seperti identity-by-construction di sisi penagihan, diterapkan di konter. Kode yang bisa dipindai adalah kode yang benar; tidak ada kolom teks bebas yang bisa keliru diisi.

Settlement ke euro, agar pembukuan tak pernah mengenal kripto

Di antara aset yang dikirim pelanggan dan euro yang disimpan merchant ada konversi, dan letaknya adalah seluruh triknya. Pelanggan mengirim USDC atau BTC; platform mengonversi dan mengkredit rekening merchant dalam EUR. Buku besar merchant hanya melihat kredit euro dan satu baris biaya dalam euro — bentuknya sama dengan settlement kartu — karena aset dikonversi di platform, bukan dibiarkan di wallet yang harus dikelola merchant. Di akhir hari, pembukuan berupa euro dari ujung ke ujung. Tidak ada sekeranjang koin yang harus dinilai, tidak ada mata uang kedua di akun, dan tidak ada yang perlu di-off-ramp pada Senin pagi.

Tugas pelanggan adalah membayar dengan apa pun yang mereka pegang. Tugas merchant adalah menjaga pembukuan dalam satu mata uang. Point of sale yang menyelesaikan kripto ke euro hanyalah mesin yang menjaga kedua fakta itu tak pernah bertemu.
— Protocore · Engineering pembayaran

Kurs dikunci, bukan dikejar

Volatilitas adalah ketakutannya, dan kuotasi terkunci dengan hitung mundur adalah jawabannya. Saat terminal menampilkan harga euro, ia juga menetapkan kuotasi yang berlaku selama jendela waktu tertentu — beberapa detik. Pelanggan membayar dalam jendela itu, sesuai kuotasi itu, dan euro yang dikreditkan ke merchant adalah euro yang tertera di layar, bukan apa pun yang dilakukan pasar saat wallet dimuat. Jika jendela habis sebelum pelanggan mengonfirmasi, terminal membuat kuotasi ulang: kode baru, hitung mundur baru, harga baru yang eksplisit — tidak pernah bergeser diam-diam. Merchant tidak pernah menanggung pergerakan antara tap dan konfirmasi; risiko itu ada pada pihak yang menetapkan kuotasi, bukan pada pemilik toko yang hanya ingin menjual secangkir kopi.

Saat pelanggan lambat, atau terminal offline

Jaringan bisa tersendat dan toko bisa kehilangan koneksi, jadi perilaku offline harus sengaja dibuat membosankan. Ada dua kasus. Saat pelanggan lambat, kuotasi kedaluwarsa dan dibuat ulang — pembayaran entah terkonfirmasi dalam satu jendela atau tidak terjadi sama sekali, sehingga tak ada penjualan setengah jadi yang harus dibatalkan. Saat terminal sendiri offline, ia masih bisa menampilkan permintaan untuk jumlah yang sudah diketahui, tetapi tidak bisa menetapkan kuotasi baru atau mengonfirmasi settlement, sehingga ia menahan penjualan sebagai pending dan merekonsiliasi saat tersambung kembali, bukan berpura-pura sukses. Aturan utamanya: struk dicetak saat konfirmasi, bukan saat berharap. Struk euro berarti euro-nya sudah tercatat, dan penjualan yang tidak bisa dikonfirmasi terminal tetap terbuka dan terlihat di konsol operator, bukan lenyap begitu saja.

Tempat terminal bertemu gateway

Konter adalah wajah tatap muka dari stack penerimaan pembayaran yang sama dengan yang berjalan online. Tap kripto di toko dan checkout pay-by-link adalah peristiwa yang sama di baliknya — permintaan, pembayaran, settlement euro, struk — hanya ditampilkan di permukaan berbeda. Jadi merchant merekonsiliasi kripto di toko dan pesanan online di satu tempat, dalam euro, dengan baris biaya dan ekspor yang sama, alih-alih menjalankan dua pembukuan yang harus dijahit di akhir bulan. Terminalnya ada di /products/pos; sisi online dari rel yang sama ada di /products/gateway; dan kosakatanya — kuotasi, settlement, acquirer, rekonsiliasi — didefinisikan di /glossary.

Batas yang jujur

Jika tak ada pelanggan di konter Anda yang ingin membayar dengan kripto, terminal kripto adalah solusi untuk masalah yang tidak Anda miliki — terima kartu saja dan lanjutkan. Ia layak dipakai di tempat sebagian pelanggan Anda memang sudah memegang aset digital dan lebih suka membelanjakannya daripada off-ramp dulu: koridor perjalanan tertentu, komunitas online-native tertentu, wilayah tertentu yang menjadikan stablecoin cara orang menyimpan uang yang siap dibelanjakan. Di tempat seperti itu, menolak tap berarti menolak penjualan. Mekanisme di atas — QR, kuotasi terkunci, settlement ke euro, aturan konfirmasi-sebelum-struk — memungkinkan Anda meraih penjualan itu tanpa menanggung volatilitas, mata uang kedua, atau proyek pembukuan. Kripto tetap urusan pelanggan; euro tetap milik Anda.

Punya sistem yang ingin dibangun?

Ceritakan masalahnya. Kami akan kembali dengan arsitektur dan rencana.