---
title: "Create wallet"
method: POST
path: "/wallets"
tags: ["Wallets"]
---

# Create wallet

`POST /wallets`

Create a standard wallet

## Headers

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

## Request body

- object
  - `data` object, required
    - `attributes` object, required
      - `customerPartyId` string — Customer party to act for (pty_*). Omit to act as your own party. To act for another party, pass the ID of a party that has authorized you to act on its behalf.
      - `displayName` string, required — Wallet name.
      - `description` string, nullable — User-facing wallet description.
      - `tags` object — Key-value metadata stored on the resource. At most 30 keys; keys 1-128 characters, alphanumeric and underscores; values 1-256 characters. Visible to anyone who can read the resource; do not include sensitive data.

## Response `201`

Successful Response

- object
  - `data` object, required
    - `type` 'wallet', required — Resource type. Always `wallet`.
    - `id` string, required — Wallet ID (wal_*).
    - `attributes` object, required
      - `status` 'active' | 'frozen' | 'closed', required — Wallet status.
      - `walletType` 'standard' | 'vault', required — Wallet type: a spendable standard wallet or the vault.
      - `isDefault` boolean, required — Whether this wallet is the owning party's default. Agent calls resolve their default from wallet grants.
      - `agentDefault` boolean — Present for agent wallet list and detail reads. Whether this wallet is the agent's default in the current context. For a connected customer, this is the default for that customer connection, independently of the party's isDefault.
      - `createdAt` string, date-time, nullable, required — RFC 3339 timestamp when the wallet was created, or null when unknown.
      - `displayName` string, nullable, required — Wallet name, when set.
      - `description` string, nullable, required — User-facing wallet description, when set.
      - `tags` object, required — Metadata visible to anyone who can read the resource.
      - `balance` object, nullable, required — Wallet ledger balance, when available.
        - `available` integer, required — Amount available to spend or withdraw, in cents.
        - `total` integer, required — Total wallet ledger balance in cents.
        - `currency` 'USD', required — Currency code.
      - `claims` object, required — Party-level claimable payment totals, surfaced on the default wallet (or the first wallet when none is default).
        - `amount` integer, required — Total amount of payments awaiting claim, in cents.
        - `count` integer, required — Number of unclaimed product payments.
      - `depositInstructions` object, nullable, required — Receiving bank for ACH deposits to this wallet, when available.
        - `bankName` string, required — Name of the receiving bank.
        - `accountNumber` string, nullable, required — Account number for ACH deposits. Returned when fetching a single wallet, null in list responses.
        - `routingNumber` string, nullable, required — Bank routing number for ACH deposits. Returned when fetching a single wallet, null in list responses.
    - `relationships` object, required
      - `party` object, required — Party that owns the wallet.
        - `data` object, required — Related resource identifier.
          - `type` 'party', required — Resource type. Always `party`.
          - `id` string, required

## 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. The response contains one error object for each invalid request value.
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

## Changes

- **2026-09-23** `bcf3b028c3e5` — 1 warning, 1 info
  - removed the request property `data/attributes/partyId`
  - added the new optional request property `data/attributes/customerPartyId`
- **2026-09-22** `4a05af81217f` — 1 info
  - added the optional property `data/attributes/agentDefault` to the response with the `201` status
- **2026-09-02** `c7c12da5915f` — 12 info
  - added the optional property `errors/items/meta/limitScope` to the response with the `400` status
  - added the optional property `errors/items/meta/limitScope` to the response with the `401` status
  - added the optional property `errors/items/meta/limitScope` to the response with the `403` status
  - added the optional property `errors/items/meta/limitScope` to the response with the `404` status
  - …8 more
- **2026-08-27** `359d267dca88` — 1 info
  - deleted the `header` request parameter `X-Agent-ID` with deprecation
- **2026-08-23** `b1ad79e918ac` — 1 info
  - `header` request parameter `X-Agent-ID` was deprecated

[Full history](https://skmtc.dev/natural/apis/natural-api/changes/wallets/post.md)

---

[API](https://skmtc.dev/natural/apis/natural-api.md) · [All operations](https://skmtc.dev/natural/apis/natural-api/llms.txt) · [OpenAPI document](https://skmtc.dev/natural/apis/natural-api/revisions/acc8f2f3d25e?raw)
