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

# External accounts API introduction

> Manage external financial accounts, such as user-owned debit and credit cards or bank accounts, used for pull deposits and withdrawals out of Uphold.

The external accounts group of endpoints allows you to manage financial accounts that users own outside the platform, such as debit or credit cards.

External accounts can be used for both **pull deposits** (moving funds into Uphold) and **withdrawals** (sending funds out of Uphold).

## External account shape

An external account includes the following properties:

```json [expandable] theme={null}
{
  "id": "aa6e6efa-8d73-497c-8278-0347f459bd68",
  "ownerId": "1e32fca3-23f7-40ed-bc1b-de10c790182d",
  "type": "card",
  "status": "ok",
  "label": "My Visa Card",
  "asset": "GBP",
  "network": "visa",
  "features": ["deposit", "withdraw"],
  "createdAt": "2024-06-01T00:00:00Z",
  "updatedAt": "2024-07-15T00:00:00Z"
}
```

Each external account has a `status` that reflects its availability:

* `processing`: The account is being verified.
* `ok`: The account is valid and ready to use.
* `failed`: The verification failed — check `statusDetails.reason` for the failure reason.
* `restricted` / `blocked`: The account is temporarily or permanently unusable.

## Types of external accounts

There are different types of external accounts available on the platform:

<AccordionGroup>
  <Accordion title="Card" icon="credit-card">
    External accounts of type `card` represent **credit or debit cards** manually linked by the user for **fiat deposits and withdrawals**.
  </Accordion>

  <Accordion title="Bank" icon="building-columns">
    External accounts of type `bank` represent **bank accounts** used for **fiat deposits and withdrawals** via networks like **FPS**, **SEPA** or **ACH**.

    These accounts are **automatically created** after the user's first successful deposit, using the bank details returned by [Set Up Account Deposit Method](../accounts/set-up-account-deposit-method) endpoint.
  </Accordion>
</AccordionGroup>

## When to use external accounts

* **Bank push deposits**: A `bank` external account represents the user's originating bank account and is used to identify them in recurring transactions — [via API](/developer-guides/bank-transfers/deposit/via-rest-api) or [via Payment Widget](/developer-guides/bank-transfers/deposit/via-payment-widget).
* **Bank withdrawals**: A `bank` external account is used as the destination of a quote to pay out to the user's bank account — [via API](/developer-guides/bank-transfers/withdrawal/via-rest-api) or [via Payment Widget](/developer-guides/bank-transfers/withdrawal/via-payment-widget).
* **Card deposits**: A `card` external account is linked by the user and used as the origin of a quote. Card authorization may be required — [via API](/developer-guides/card-transfers/deposit/via-rest-api) or [via Payment Widget](/developer-guides/card-transfers/deposit/via-payment-widget).
* **Card withdrawals**: A `card` external account is linked by the user and used as the destination of a quote — [via API](/developer-guides/card-transfers/withdrawal/via-rest-api) or [via Payment Widget](/developer-guides/card-transfers/withdrawal/via-payment-widget).

## Related guides

<CardGroup cols={2}>
  <Card title="Bank Deposit" icon="building-columns" href="/developer-guides/bank-transfers/deposit/via-rest-api">
    Fund an account via bank transfer.
  </Card>

  <Card title="Bank Withdrawal" icon="arrow-up-right-from-square" href="/developer-guides/bank-transfers/withdrawal/via-rest-api">
    Payout to a bank via quote-based transfers.
  </Card>

  <Card title="Card Deposit" icon="credit-card" href="/developer-guides/card-transfers/deposit/via-rest-api">
    Fund an account from a credit or debit card.
  </Card>

  <Card title="Card Withdrawal" icon="credit-card" href="/developer-guides/card-transfers/withdrawal/via-rest-api">
    Cash out to a credit or debit card.
  </Card>
</CardGroup>

## Managed UI option

If you need a managed UI to collect payment or bank details, consider the Payment Widget (`select-for-deposit` / `select-for-withdrawal`) and then consume the returned `depositMethod` or `external-account` with the Core API.

## Testing

To test card external accounts in the Sandbox environment, use the [Test Cards](../accounts/test-helpers/fund-sandbox-accounts#card-deposit-using-test-cards) reference, which lists available test card numbers and reserved amounts to simulate specific error scenarios.
