OptionalageRestricted?: booleanOptionalgiftTo?: stringA gift: the buyer pays and is screened as usual, but the SKU is granted to this user id,
with no wallet-to-wallet credit or ownership transfer. Omitted (or equal to buyerId) for
a self-purchase.
OptionalproviderReported?: booleanTrue when the payout rail itself reported the disbursement failed (a verified payoutFailed
webhook). It waives the still-live SUBMITTED refusal: the provider has said it will not
settle this payout, so returning the reserve promptly cannot double-pay. An operator's
manual reverse leaves this unset and stays gated until the payout ages past
maxPayoutAgeMs.
OptionalproviderAmount?: 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.
Every request a caller can submit. Each variant is one action tagged by
kind, carrying anidempotencyKey(a retried request runs at most once) and anactor(who is asking).