The interface
The order
Every provider is normalised to one lifecycle:open → processing → completed | failed.
object
Requirements
1
Settle in USDC on Solana or Base
Corridor funds payouts and receives collections in USDC on the chain you name.
2
One-off addresses
A fresh funding address per payout (or a deposit memo) and a fresh virtual account per collection, so every movement maps to exactly one order.
3
Echo the reference
Carry the 32-byte Corridor Reference in a free-text field and return it on webhooks.
4
Signed webhooks
HMAC over a timestamp and the raw body, verified in constant time within a 5-minute window. Paj’s scheme works as-is.
How Corridor uses it
- A
PartnerRegistrypicks the partner per (currency, direction, chain). - Exactly-once funding: the payout leg records the order and the funding transaction durably, so retries reuse them.
- Failure after funding stops at
manual_review; Corridor never unwinds its own books while the money is at the partner. - Each completed order becomes an
Observation(partner_fiat,${partner}:${orderId}) for reconciliation.