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

# Card fixtures

> Test successful payments, declines, plans, settlement, cancels, and refunds in sandbox

Use these test cards to simulate the outcome of a card payment or a plan in sandbox.

## How to use test cards

Enter a test card in the sandbox dashboard's card payment form.

* Use any future expiration date and any three-digit CVC.
* Complete the required cardholder and billing details.
* Use one of the card numbers below. Any other card number produces a failed attempt with no `failure.code` and does not charge the card.
* Sandbox checkout does not offer Apple Pay or Google Pay.

## Successful payments

Use these cards to test an accepted payment. Funds become available to the merchant after you [simulate settlement](/api-reference/simulations/settle-card-payment).

| Brand | Card number | CVC | Expiration |
| - | - | - | - |
| Visa | `4111 1111 1111 1111` | Any three digits | Any future date |

## Declined payments

Use these cards to test issuer declines. A declined payment fails without moving money.

| Scenario | Card number | CVC | Expiration | `failure.code` |
| - | - | - | - | - |
| Generic issuer decline | `4000 0000 0000 0002` | Any three digits | Any future date | `genericDecline` |

You can retry an open payment intent with a success card. After five issuer declines, the intent closes. A non-test card does not count toward that limit.

If Natural cannot verify a card's fixture identity, the request returns an error without creating a payment attempt; retry the request.

## Plans

Use these cards to test a plan's later charges. Each card pays the plan's first payment in checkout and saves the card. Every later charge on the plan returns the outcome below.

| Scenario | Card number | Later charges | `failure.code` |
| - | - | - | - |
| Later charges succeed | `4111 1111 1111 1111` | Succeed | None |
| Insufficient funds | `4000 0000 0000 9995` | Decline with network `51` | `insufficientFunds` |
| Expired card | `4000 0000 0000 0069` | Decline with network `54` | `cardExpired` |
| Payer stopped all payments | `4000 0000 0000 0341` | Decline with network `R1` | `stopPayment` |

`4000 0000 0000 0002` declines the first payment, so no plan starts. A one-time payment with any card in this table succeeds.

Plan checkout asks the payer to verify a phone number. Sandbox sends no text message; enter `000000`.

## Saved cards

To save a test card at checkout, select **Save my information** and enter `000000` as the verification code. A plan's checkout always saves the card.

A saved card pays later checkouts, including a new plan's first payment, with the outcome of the test card it was saved from.

If checkout says a card was saved before sandbox started recording test cards, choose to use a different card and enter a test card again.

## Cancels

To cancel an accepted test payment, request a full refund before you [simulate settlement](/api-reference/simulations/settle-card-payment).

* **Dashboard:** Open **Accept → Transactions**, select the payment, and choose **Refund** for the full amount.
* **API:** Call [`POST /refunds`](/api-reference/refunds/create-refund) at `https://api.sandbox.natural.com` with the full payment amount and a sandbox key.

Cancellations complete automatically. The refund receipt shows **Processed as: Void**, and the payment is not added to the merchant's available sandbox balance.

## Refunds

To test a full or partial refund, first [settle a successful test payment](/api-reference/simulations/settle-card-payment). Wait until **Settlement status** shows **Settled**.

* **Dashboard:** Open **Accept → Transactions**, select the payment, and choose **Refund**.
* **API:** Call [`POST /refunds`](/api-reference/refunds/create-refund) at `https://api.sandbox.natural.com` with a sandbox key.

Refunds complete automatically and reduce the merchant's available sandbox balance by the refunded amount.

If `POST /refunds` answers `409` with `code: "conflict"` and no refund of that payment is pending, refunds are not enabled in that Sandbox environment yet. No refund was created, and the request can be retried later.


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