> ## 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 searching Natural documentation, use the docs MCP at `https://docs.natural.com/mcp`.
> Use the Natural CLI for terminal and CI automation.
> 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.

# Pay with external cards

> Save a user's existing card and let your agent check out with it without handling the card number

<img src="https://mintcdn.com/natural-b3c9dd77/_ZzQDNYgSVsMCM43/assets/heroes/cards-hero.jpg?fit=max&auto=format&n=_ZzQDNYgSVsMCM43&q=85&s=f9ae44cd52def18bd61eb2fea078a226" alt="Paying with an external card on Natural" className="hero-image" noZoom width="1200" height="640" data-path="assets/heroes/cards-hero.jpg" />

Save a card a user already has, then let your agent check out with it at most merchants. Natural
bundles saving the card with two ways for agents to pay: a browser proxy that swaps in the real
card at checkout, and agent tokens that spend from a budget the user approved once. Your agent
never sees the real card number, so it stays out of PCI scope.

Your agent can:

* Pay with a user's existing debit or credit card
* Check out on most merchants' sites through Natural's browser proxy
* Ask the user to approve each purchase, or spend within a budget they approved once

<Steps>
  <Step title="Save the card">
    The user saves their card on the dashboard. Your agent finds it with
    `GET /card-external-accounts`, which returns the brand and last four digits, never the
    card number.

    Read more: [Saved cards](/guides/concepts/saved-cards).
  </Step>

  <Step title="Get permission to use it">
    Your agent needs the `saved_cards.use` scope. For a customer on your platform, offer it when
    you invite them; they see it as **Use saved cards** when they approve the connection.

    Read more: [Invite a customer](/guides/connect/invite-customer).
  </Step>

  <Step title="Open a browser token for the purchase">
    Open a card session with the card, the purchase, and the payment host that should receive the
    card. The user approves it from a link and enters the card's security code. If you know the
    checkout encrypts the card in the browser, set `requestAgentToken: true` now: it can't be
    added once the session is open.

    Read more: [Browser tokens](/guides/concepts/browser-tokens).
  </Step>

  <Step title="Check out through the proxy">
    Claim the session to get a stand-in card and a proxy login. Fill in the checkout with the
    stand-in and route the browser through the proxy, which swaps in the real card on the way.
  </Step>

  <Step title="Fall back to an agent token if needed">
    If the checkout encrypts the card in the browser, the proxy can't swap it. If you set
    `requestAgentToken: true` and the user's card supports it, pay with a tokenized card from the
    mandate they approved. Otherwise, open a new session with `requestAgentToken: true` and ask the
    user to approve again. Most cards don't support agent payments yet: if the card can't, tell the
    user this checkout isn't supported with this card.

    Read more: [Agent tokens](/guides/concepts/agent-tokens).
  </Step>
</Steps>

Not sure whether to use an external card or a Natural-issued card? See
[External and Natural-issued cards](/guides/cards/choose-a-card).


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