ConstOptionalproviderAmount?: AmountThe USD amount the provider reported settling. Recorded for audit/reconciliation only: the figures actually posted are the rate-derived ones settlePayout computes (gross USD from the reserve at the payout rate, less the rail fee), so the provider's report never sets the posted amount. Absent when the rail's callback carries no figure (Tilia's does not); the reconcile feed still checks amounts against the rail's settlement report.
The provider's settlement reference for this payout (the rail's own id for the disbursement), recorded for the audit trail. Carried from the inbound provider webhook that drives the settle.
Builds a
settlePayoutoperation: theSUBMITTEDtoSETTLEDstep of the payout saga, driven by the rail's verified "payout settled" webhook — the rail has already paid, and this records it. It posts two balanced entries in one transaction: the reserve empties fromPAYOUT_RESERVEintoREVENUE, and the gross USD leaves trust (USD_CLEARINGagainstTRUST_CASH). The posted figures come from the saga's reserve at its locked payout rate;providerAmountis recorded for reconciliation but never posted. Restricted to asystemoroperatoractor — an end user must never settle their own payout. No rejected path: a missing saga faultsOP.MALFORMED, a not-yet-submitted or already-FAILEDsaga faultsSAGA.INVALID_TRANSITION(retryably for the race with the submit sweep). The settlement applies at most once: a redelivered webhook replays asduplicateby its event-derivedidempotencyKey, and a fresh key against an already-SETTLEDsaga answersduplicatetoo.