How Do You Void or Cancel an Unpaid Crypto Invoice in Your System?
Canceling an unpaid crypto invoice means marking it as void in your payment system so it can no longer be paid, and ensuring any future payments to that invoice's address are not counted as revenue. The exact steps depend on your payment processor, but the general approach is the same: you expire the invoice, optionally reuse or retire the address, and record the cancellation in your accounting.
Why Voiding Matters
An unpaid invoice that remains open can cause two problems. First, a customer might send funds weeks later, creating a reconciliation headache. Second, the associated address remains live, which increases the chance of accidental or fraudulent deposits. Voiding closes that window cleanly.
When to Void Instead of Wait
Most crypto payment systems let you set an invoice expiration time - commonly 15 minutes to 24 hours for on-chain payments, or shorter for Lightning invoices. If the customer doesn't pay within that window, the system automatically marks the invoice as expired. You generally do not need to manually void an expired invoice.
Manual voiding is useful when:
- You and the customer agree to cancel the order before payment.
- The customer reports an error and you want to issue a fresh invoice with corrected details.
- The invoice was generated by mistake (e.g., wrong amount, wrong currency).
- The customer paid the wrong amount and you want to start over rather than handle a partial payment.
General Steps to Void an Unpaid Invoice
The procedure varies by platform, but the logic is consistent:
-
Log into your payment dashboard (BTCPay Server, OpenNode, Coinbase Commerce, or your own custom system).
-
Find the unpaid invoice. Use the invoice ID, order number, or customer details. Most dashboards let you filter by status - look for "unpaid," "pending," "new," or "expired."
-
Select the void or cancel action. The button might be labeled "Cancel," "Void," "Expire," or "Mark as Invalid." In BTCPay Server, for example, you can uncheck "Still active" in the invoice details view to mark it as invalid. In hosted processors, look for a "Cancel Invoice" option in the dropdown or action bar.
-
Confirm the action. Some systems ask for a reason or require a second click to confirm. This prevents accidental voiding.
-
Verify the invoice status changed. The dashboard should now show "Canceled," "Void," "Invalid," or "Expired." If the invoice had a payment address already shown to the customer, that address should no longer be monitored for that invoice.
What Happens to the Address?
This is the critical detail. A voided invoice does not automatically delete or retire the payment address. Whether you can reuse that address depends on your setup:
-
In BTCPay Server (with a new address per invoice), the address was generated only for that invoice. After voiding, the address is no longer monitored. If a customer sends funds there later, BTCPay will not credit that invoice - you would need to reconcile those funds manually using a watch-only wallet or the store's transaction list.
-
In some hosted processors, the address may be recycled for future invoices. This is risky if a customer sends payment to a voided invoice's address after the address is reassigned. Check your processor's documentation on address reuse policies.
-
In custom systems, you should either mark the address as retired in your database or add it to a "do not monitor" list. Never reuse a voided invoice address for a new invoice unless you are certain no funds are coming.
Accounting Treatment
Void an unpaid invoice in your accounting system as well. If you recorded the invoice as an accounts receivable or a pending transaction, reverse that entry. No revenue was earned, so nothing to report to tax authorities. Keep a log of voided invoices with the reason and date for audit purposes.
Common mistakes to avoid
-
Deleting the invoice entirely. Deleting removes the record, which can confuse reconciliation and may lose the transaction history. Voiding preserves the audit trail.
-
Assuming voiding refunds the customer. If the customer already paid before you voided, voiding does not initiate a refund. You must handle refunds separately through your exchange or wallet.
-
Not checking for unconfirmed payments. Always verify that the invoice has no pending or unconfirmed transactions before voiding. If the customer broadcast a transaction but it is not yet confirmed, voiding could orphan that payment. Wait until the transaction either confirms or drops from the mempool.
Automated Voiding
If you process many invoices, consider automating expiration. Set a reasonable invoice lifetime - 60 minutes for Bitcoin on-chain, 5 - 10 minutes for Lightning - and let the system handle unpaid invoices. This reduces manual work. Most payment processors offer webhooks that notify you when an invoice is expired, so you can trigger cancellation in your order management system automatically.
When not to void
Do not void an invoice that has received any payment, even if the amount is wrong. Instead, handle underpayments or overpayments according to your policy - issue a refund, request the difference, or adjust the order. Voiding a partially paid invoice can confuse both parties and risk losing track of the funds already sent.
Not financial advice. unidexai.xyz publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.