Match payments to the right invoice
Every inbound stablecoin transfer is compared against your open invoices by amount, token, chain, sender history, and due date — so reconciliation is a review step, not a research project.
Start Matching PaymentsOn-chain payments do not carry an invoice number. A transfer arrives with an amount, a sender address, and nothing else, which is why matching is usually the slowest part of month-end:
How it works
From transfer to matched invoice
Detect the transfer
Receiving wallets are polled on a schedule and inbound USDT or USDC transfers are recorded as they confirm.
Narrow the candidates
Only invoices on the same token and chain, still open, are eligible — which rules out most of the list immediately.
Score the match
Amount, registered counterparty wallets, prior payments from the same address, and due date are weighed together.
Confirm and record
You approve the match. The transaction hash is attached to the invoice and the balance updates.
Signals
What the match is based on
- Exact amount against the remaining balance, not the invoice total
- Sender address registered to a known counterparty
- Payment history — this address paid this client's invoices before
- Token and chain agreement with the invoice
- Due date, so the oldest plausible invoice wins a tie
Hard cases
Where naive matching breaks
- Payment from an exchange hot wallet shared by thousands of users
- Two open invoices for the same amount and the same client
- Partial payment that matches no invoice total exactly
- One transfer intended to settle several invoices at once
- Amount short by the network fee the client deducted
These are surfaced for review rather than guessed at. A confident wrong match is worse than an unmatched payment.
FAQ