Rekonsiliasi pembayaran untuk pedagang kripto
Cara merekonsiliasi pembayaran kripto dengan pesanan dan saldo Anda: apa yang dicatat, pemeriksaan harian, cara menemukan webhook yang terlewat dan pembayaran kurang, serta cara mencatat biaya dan penarikan.

Rekonsiliasi menjawab satu pertanyaan: apakah setiap pesanan yang Anda anggap dibayar cocok dengan pembayaran yang benar-benar tiba, dan apakah setiap pembayaran yang tiba cocok dengan sebuah pesanan? Dengan kripto ini tidak sulit, karena setiap pembayaran membawa nomor pesanan Anda sendiri, tetapi hanya berhasil jika Anda mencatat hal yang tepat dan memeriksa sesuai jadwal. Panduan ini menunjukkan apa yang dicatat, pemeriksaan apa yang dijalankan, dan cara menjelaskan selisih yang Anda temukan.
Apa yang Anda rekonsiliasi
Tiga kumpulan catatan harus cocok:
- Pesanan Anda: apa yang Anda jual, dalam dolar AS, dan mana yang Anda anggap dibayar.
- Log webhook Anda: notifikasi yang dikirim Qvard kepada Anda, dan apa yang Anda lakukan dengan masing-masing.
- Panel Qvard: pembayaran dan saldo sebagaimana dilihat gateway.
API publik tidak memiliki rute untuk mendaftar atau membaca pembayaran, jadi Anda tidak bisa menarik sisi gateway ke dalam skrip. Anda merekonsiliasi pesanan dan log webhook Anda sendiri satu sama lain, lalu membandingkan totalnya dengan yang ditampilkan panel.
Apa yang dicatat agar rekonsiliasi mungkin
Rekonsiliasi mudah jika datanya ada dan menyakitkan jika tidak.
- Pakai nomor pesanan Anda sendiri sebagai id pembayaran. Ia pergi ke Qvard saat Anda membuat pembayaran dan kembali di webhook, jadi itulah kunci yang menyatukan semuanya.
- Catat setiap webhook, dengan
id,status, waktu, dan keputusan Anda: diterapkan, pengulangan, pesanan tak dikenal, atau kunci ditolak. Jangan pernah mencatat kunci rahasia Anda. - Simpan nilai pesanan dalam dolar pada saat pesanan, dan waktu Anda menandainya dibayar.
- Simpan id pembayaran Qvard dari respons jika Anda menginginkannya untuk dukungan.
Tandai pesanan dibayar hanya dari webhook, yang dikirim Qvard saat pembayaran selesai, dan buat handler idempoten. Detail di cara mengamankan webhook pembayaran kripto.
Pemeriksaan harian
Tiga kueri kecil menangkap hampir semuanya; contoh menunjukkannya.
- Pesanan belum dibayar melewati jendela kurs. Kurs di halaman pembayaran dikunci selama satu jam. Pesanan yang masih menunggu setelah itu entah ditinggalkan atau notifikasinya terlewat. Periksa pembayaran itu di panel.
- Pesanan dibayar tanpa peristiwa «completed». Jika Anda menandai pesanan dibayar tetapi log Anda tidak memiliki notifikasi penyelesaian, ada yang melewati webhook, yang seharusnya tidak pernah terjadi. Selidiki sebelum mengirim lebih banyak.
- Total harian. Bandingkan jumlah dan total dolar pesanan yang Anda tandai dibayar dengan pembayaran yang ditampilkan panel untuk hari yang sama.
Saat panel menampilkan pembayaran selesai dan pesanan Anda masih belum dibayar, notifikasi terlewat: kirim ulang dari panel dan biarkan handler idempoten menerapkannya.
-- Your side: every webhook you receive is logged with your decision.
CREATE TABLE qvard_events (
id BIGSERIAL PRIMARY KEY,
order_id TEXT NOT NULL, -- the id you sent to Qvard
status TEXT NOT NULL, -- completed, ...
decision TEXT NOT NULL, -- applied | repeat | unknown_order | rejected_key
received_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- 1. Orders still unpaid after the rate window: candidates for a missed notification.
SELECT id, amount_usd, created_at
FROM orders
WHERE state = 'awaiting_payment'
AND created_at < now() - interval '1 hour'
ORDER BY created_at;
-- 2. Orders you consider paid, with no logged "completed" event: investigate before fulfilling more.
SELECT o.id, o.amount_usd, o.paid_at
FROM orders o
LEFT JOIN qvard_events e ON e.order_id = o.id AND e.status = 'completed'
WHERE o.state = 'paid' AND e.id IS NULL;
-- 3. The daily total to compare with the Qvard cabinet.
SELECT date_trunc('day', paid_at) AS day, count(*) AS orders, sum(amount_usd) AS usd
FROM orders
WHERE state = 'paid'
GROUP BY 1
ORDER BY 1 DESC;Menjelaskan selisih yang Anda temukan
Sebagian besar celah punya daftar penyebab yang singkat.
- Pembayaran kurang. Yang tiba kurang dari jumlah penuh, jadi pembayaran berstatus
partialdan webhook penyelesaian tidak dikirim. Pesanan belum dibayar; minta selisihnya atau kembalikan dana. Lihat cara menangani pembayaran USDT yang kurang. - Notifikasi terlewat. Server Anda mati lebih lama dari jendela percobaan ulang (lima percobaan dalam sekitar enam menit), atau menjawab selain tepat HTTP 200. Lihat strategi percobaan ulang webhook pada sistem pembayaran.
- Duplikat. Peristiwa yang sama tiba dua kali. Handler yang benar mencatatnya sebagai pengulangan dan tidak mengubah apa pun.
- Pesanan tak dikenal. Notifikasi dengan id yang tidak Anda miliki. Periksa salah ketik pada id yang Anda kirim dan pembayaran yang dibuat dari sistem lain dengan kunci yang sama.
- Pengembalian dana. Pengembalian dana adalah transfer yang Anda kirim sendiri; catat terhadap pesanan asli agar total tetap menjelaskan dirinya sendiri.
Biaya, saldo, dan penarikan
Nilai dolar pesanan tidak sama dengan uang di dompet Anda.
- Komisi. Tidak ada biaya langganan; komisi bersifat individual untuk proyek Anda dan menurut halaman harga dimulai dari 1% serta bisa turun hingga 0,1%. Catat sebagai baris tersendiri.
- Biaya jaringan. Pelanggan membayar biaya jaringan transfer. Anda hanya membayar biaya jaringan saat menarik ke dompet sendiri.
- Penarikan. Catat masing-masing dengan tanggal, jaringan, dan biayanya. Penarikan ke rekening bank dalam fiat tidak tersedia; jika Anda mengonversi menjadi uang tunai, langkah itu terjadi di luar Qvard dan punya catatan sendiri.
- Koin dan jaringan. Pembayaran di jaringan berbeda terakumulasi terpisah. Periksa saldo per aset dan jaringan, seperti di biaya jaringan dalam operasional pembayaran kripto.
Beri tahu juga akuntan Anda: perlakuan pajak dan akuntansi atas penerimaan kripto bergantung pada negara Anda.
FAQ
Bisakah saya mengambil pembayaran saya lewat API untuk rekonsiliasi?
API publik tidak memiliki rute untuk mendaftar atau membaca pembayaran. Rekonsiliasikan pesanan dan log webhook Anda sendiri, dan bandingkan total dengan pembayaran serta saldo di panel Qvard.
Bagaimana cara mencocokkan pembayaran dengan pesanan?
Lewat id. Anda mengirim nomor pesanan Anda sendiri saat membuat pembayaran, dan id yang sama kembali di webhook.
Bagaimana jika panel menampilkan pembayaran selesai dan pesanan saya belum dibayar?
Notifikasi terlewat. Kirim ulang dari panel; handler idempoten menerapkannya dengan aman.
Seberapa sering saya harus merekonsiliasi?
Harian adalah default yang masuk akal, ditambah peringatan saat serangkaian permintaan webhook dijawab dengan error.