---
title: "Create or refresh external account"
method: POST
path: "/external-accounts/processor-token"
tags: ["External Accounts"]
---

# Create or refresh external account

`POST /external-accounts/processor-token`

Link an external account on behalf of your customer using a Plaid processor token. If the account is already linked, refresh the existing connection and return the same external account with a 201 response.

## Headers

- `Idempotency-Key` string, required
- `X-Agent-ID` string, nullable
- `X-Instance-ID` string, nullable

## Request body

- object
  - `data` object, required
    - `attributes` object, required
      - `partyId` string, required — Caller-owned end-customer party that will own the linked external account. Must be the caller's own party or a party with an approved delegated relationship carrying external_accounts.create.
      - `processorToken` string, required — Plaid processor token minted by the customer's own Plaid integration with /processor/token/create for processor "natural". Scoped to exactly one account.
      - `institutionName` string, nullable — Optional institution display name to store with the linked external account.

## Response `201`

Successful Response

- object
  - `data` object[], required — External accounts linked or refreshed by the request.
    - `type` 'externalAccount', required — Resource type.
    - `id` string, required — External account ID.
    - `attributes` object, required — External account attributes.
      - `lastFour` string, required — Last four digits of the external bank account.
      - `status` 'pending' | 'new' | 'active' | 'disabled' | 'deleted' | 'unknown', required — Lifecycle status of the external account.
      - `connectionStatus` 'active' | 'login_required' | 'disconnected', required — Provider connection health for this external account. Poll this value to detect when the underlying provider connection requires attention.
      - `createdAt` string, date-time, required — Time when the external account was linked.
      - `bankName` string, nullable, required — Bank institution name, when available.
      - `accountName` string, nullable, required — Bank account display name, when available.
      - `accountType` 'checking' | 'savings' | 'unknown', nullable, required — Bank account type, when available.
    - `relationships` object, required — External account relationships.
      - `party` object, required — Party that owns the external account.
        - `data` object, required — Related resource identifier
          - `type` 'party', required — Resource type
          - `id` string, required
  - `meta` object, required
    - `pagination` object, required
      - `hasMore` boolean, required
      - `nextCursor` string, nullable, required
    - `rejectedAccounts` object[], required — Accounts Natural inspected but did not link.
      - `accountId` string, required — Aggregator account identifier for the rejected account.
      - `accountName` string, nullable, required — Display name of the rejected account.
      - `accountMask` string, nullable, required — Last-four mask of the rejected account.
      - `reason` 'profile_identity_missing' | 'bank_identity_unavailable' | 'bank_account_name_mismatch' | 'bank_account_address_mismatch' | 'bank_account_ownership_mismatch' | 'bank_account_verification_failed', required — Product-safe reason code explaining why the account was not linked.

## Other responses

- `400` — Validation Error
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found — returned when the resource does not exist, or when it exists but is not accessible to your account. The two cases are intentionally indistinguishable, so that resource IDs cannot be enumerated by probing.
- `409` — Conflict
- `422` — Validation Error
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

---

[API](https://skmtc.dev/natural/apis/natural-api.md) · [All operations](https://skmtc.dev/natural/apis/natural-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/natural/natural-api/revisions/8cc2aed45847/schema)
