Skip to main content
OpenFi deliberately keeps these two flows separate at the API and SDK level so single transfers and standing agent authorizations never get conflated.

One-time payments

Use POST /v1/payments when there is no need for a standing authorization: a single push or pull that happens once. Typical uses: invoice settlement, one-off on/off-ramp, a single fiat-to-stablecoin conversion.

Mandates → session keys → debit pulls

Use this three-call flow whenever funds need to be pulled more than once, especially by something that isn’t a human clicking “approve” each time: a subscription engine, a treasury bot, or an autonomous AI agent.
1

Mandate

The standing authorization: who can be pulled from, the ceiling amount, the interval, and the purpose. Created once per payer relationship.
2

Session key

A time-bound, velocity-bound cryptographic allowance scoped to a mandate. This is what an autonomous agent actually holds, never the account’s master credentials.
3

Debit pull

A single execution against an active session key. Enforced against the on-chain Allowance State Machine, not a static approval.
Think of the mandate as the contract, the session key as a scoped, expiring key to that contract, and the debit pull as a single use of that key.