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

> ## Agent Instructions
> When building application code, use `@naturalpay/sdk` for TypeScript or `naturalpay` for Python.
> When operating Natural directly for a user, use the payments MCP at `https://mcp.natural.com`.
> When searching Natural documentation, use the docs MCP at `https://docs.natural.com/mcp`.
> Use the Natural CLI for terminal and CI automation.
> Use REST only for unsupported languages or when the user explicitly requests raw HTTP.
> Start integration development and testing in the sandbox. Do not use production unless the user explicitly requests it.
> For sandbox requests that require `customerPartyId`, list customers first. Reuse only the intended fixture; otherwise create a customer.
> REST and SDK amounts use integer minor units. Payments MCP amounts use decimal strings with a required currency code.

# Overview

> Payments and transfers held for review by a spending limit

An approval (`apr_*`) is a payment or transfer held for a human decision. Natural creates one when a movement breaches a [Limit](/guides/concepts/limits): the original call still succeeds, but nothing moves until someone approves. A limit is the rule; an approval is the hold it produces. You never create an approval; you resolve the ones Natural opens.

## Lifecycle

An approval is `pending` until it is `approved` or `denied`, or `canceled` when the held movement is canceled first. Release one with [`POST /approvals/{approvalId}/approve`](/api-reference/approvals/approve-payment-or-transfer). Refuse one with [`POST /approvals/{approvalId}/deny`](/api-reference/approvals/deny-payment-or-transfer). See [Approvals](/guides/controls/approvals) for the full flow.

## Who resolves an approval

An approval belongs to the party behind the limit that was breached. You resolve holds triggered by your own party and agent limits. When a hold comes from a limit a customer set on their connection with you, that customer resolves it. If a single movement breaches limits owned by more than one party, it must be approved by each of those parties before the money moves.

An agent can never clear a hold, by design. An owner or admin resolves approvals in the dashboard, or an API key with `payments.create` resolves them through the API, never the agent that triggered them.


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