Skip to main content

Settlements API

Settlements represent on-chain payment confirmations. Invoica uses dual settlement detection (poll-based and event-driven) to ensure reliable payment verification.

Settlement Lifecycle

PENDING → CONFIRMING → CONFIRMED → SETTLED

                       FAILED
StatusDescription
pendingPayment submitted, awaiting blockchain confirmation
confirmingTransaction found, waiting for required block confirmations
confirmedRequired confirmations reached
settledSettlement finalized, invoice updated
failedTransaction reverted or timed out

How Settlement Detection Works

Poll-Based

A background worker checks the blockchain every 15 seconds:
For each pending settlement:
  → Query RPC for transaction receipt
  → Check confirmation count
  → Update status when threshold met

Event-Driven

WebSocket listeners monitor Transfer events in real-time:
On Transfer event:
  → Match to pending invoice
  → Verify amount and recipient
  → Update settlement status

Settlement Events

When a settlement status changes, webhook events are fired:
EventTrigger
settlement.confirmedOn-chain confirmation received
settlement.failedSettlement verification failed

Configuration

Settlement detection is automatic for all invoices. Configure timing via environment:
VariableDefaultDescription
SETTLEMENT_POLL_INTERVAL15000msHow often to check blockchain
SETTLEMENT_TIMEOUT3600000msMax wait time (1 hour)
SETTLEMENT_CONFIRMATIONS12Required block confirmations

Supported Networks

NetworkChain IDToken
Ethereum Mainnet1USDC, USDT, DAI
Base8453USDC
Arbitrum42161USDC
SolanaUSDC (SPL)