record_settlement
Records a successful payment as a sealed, intent-matched entry after settlement, verifying it against caps and expiry and returning conflicts for altered facts unless a correction reason is supplied.
Instructions
Call this right after each payment succeeds, with the rail's own reference. Records the payment: sealed, matched to its intent, checked against its cap and expiry. The same payment again returns unchanged. Different facts for a payment already sealed return conflict and seal nothing, unless you give correction: { reason }.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | ||
| rail | Yes | ||
| nonce | No | ||
| state | No | ||
| network | No | Optional: the network it settled on, such as base or solana | |
| receipt | No | Optional: where the receipt or invoice is kept, and its hash; never the receipt itself | |
| currency | Yes | ||
| direction | No | ||
| intent_id | No | ||
| source_id | Yes | The rail's own reference: transaction hash, charge ID | |
| correction | No | Only to correct a payment already sealed: the new version says why | |
| occurred_at | Yes | When the rail says the payment was made, in ISO 8601 with its offset (2026-10-28T19:00:00Z or 2026-10-28T12:00:00-07:00) | |
| amount_minor | Yes | ||
| counterparty | No | ||
| evidence_type | No | Optional: onchain for a blockchain transaction, provider_reference for a payment provider's reference | |
| counterparty_id | No | Optional: how the payee is identified, as scheme:value, such as domain:data.example or wallet:0x… | |
| counterparty_type | No | Optional: organization, person, service or agent | |
| settlement_provider | No | Optional: who settled the payment, such as the x402 facilitator |