> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openfi.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Payments vs. Mandates

> When to use a one-time payment vs. the mandate / session-key / debit-pull flow.

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.

> [!TIP]
>
> 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.