> ## Documentation Index
> Fetch the complete documentation index at: https://open-fi.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a debit pull

> Execute a single pull against an active session key.

This is the endpoint an autonomous agent calls to actually move money: a single execution against an active [session key](/api-reference/agentic/create-session-key), enforced against the on-chain Allowance State Machine rather than a static approval.

<Warning>
  GBP mandates: Variable Recurring Payments are only partially supported across UK banks. A debit pull against a GBP session key may return `422 vrp_unsupported_by_bank` if the payer's bank doesn't support VRP. In that case, fall back to a user-consented push payment. See [Supported Rails](/essentials/supported-rails).
</Warning>

### Body Parameters

<ParamField body="session_key_id" type="string" required>
  The session key authorizing this pull.
</ParamField>

<ParamField body="amount" type="number" required>
  Must be within the session key's remaining allowance for the current epoch.
</ParamField>

<ParamField body="reference" type="string">
  Free-text reference, useful for reconciling against agent task logs.
</ParamField>

### Response

<ResponseField name="id" type="string">
  Debit pull ID, prefixed `dp_`.
</ResponseField>

<ResponseField name="status" type="string">
  `pending`, `settled`, or `failed`.
</ResponseField>

<ResponseField name="remaining_allowance" type="number">
  Remaining allowance on the session key for the current epoch, after this pull.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.openfi.co/v1/debit-pulls \
    -H "Authorization: Bearer $OPENFI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "session_key_id": "sk_01HZZ...",
      "amount": 12.50,
      "reference": "task-4471-api-lookup"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "dp_01HA0...",
    "status": "settled",
    "amount": 12.50,
    "remaining_allowance": 37.50,
    "settlement": {
      "chain": "aptos",
      "tx_hash": "0x71ffa..."
    }
  }
  ```
</ResponseExample>

<ResponseExample>
  ```json 403 over velocity limit theme={null}
  {
    "error": {
      "type": "invalid_request_error",
      "code": "velocity_limit_exceeded",
      "message": "Requested amount exceeds remaining allowance (12.00) for the current epoch."
    }
  }
  ```
</ResponseExample>
