> ## 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

> Collect a card payment

<Note>
  Accept is in early access and subject to change. To request Accept access, contact [hi@natural.com](mailto:hi@natural.com).
</Note>

A payment intent (`pmi_*`) is a card payment to collect. Funds settle into your wallet like every other payment. Payment intents can be charged via API, through a checkout link, or via voice session.

## Lifecycle

An intent starts `open`. It moves to `processing` while a card payment is in flight and to `completed` when one succeeds. Declined cards leave the intent `open` so the payer can try again; after five declined attempts it ends `declined`. It ends `canceled` when you [cancel it](/api-reference/payment-intents/cancel-payment-intent), or `expired` once the `expiresAt` you set has passed.

The amount is final once the intent exists. There is no update: to change the total, cancel the intent and create a new one.

## Card payments

Every attempt to pay an intent is a card payment (`cpy_*`). The intent embeds its latest attempt as `cardPayment`, including a failed one. `paymentId` is set only while an attempt is in flight or once one has succeeded, so it is the field to check for the payment that counts.

A card payment moves `processing` to `succeeded`, or ends `failed`. When it fails, `failureReason` says whether the issuer declined it, the processor errored, or Natural refused it before it reached the processor.

## The checkout link

Creating an intent returns a `meta.payUrl` checkout link exactly once. The link is single use and Natural never regenerates it, so store it with your payment intent. The page it opens is hosted by Natural: the payer enters their card, or pays with Apple Pay where it is available, and returning payers can pay with a saved card after verifying their email. 3-D Secure runs on the page when the issuer asks for it. The payer gets a receipt by email, and the charge appears on their statement under the merchant descriptor set during enrollment.

## Line items and tax

Line items are optional. When you include them, every line's `subtotalMinor` must equal `quantity` times `unitAmountMinor`, and the line totals must add up to `amountMinor`. In `exclusive` tax mode each line's total is its subtotal plus its tax; in `inclusive` mode the tax is already inside the total. `taxAmountMinor` must equal the sum of line tax either way. Lines are immutable once the intent exists.

## Collecting for a customer

An agent authorized by a customer can create intents that settle into the customer's wallet. Invite the customer through [Connect](/guides/connect/invite-customer) and request `payment_intents.create`, which covers Accept alone, or `payments.create`, which covers Accept along with sending payments. The customer enrolls as a merchant in their own dashboard. Then pass their party ID as `customerPartyId` on every Accept call, the same way you [move money for a customer](/guides/connect/move-money-for-customer).
