---
title: "Create onchain whitelisted address (business)"
method: POST
path: "/money/accounts/whitelist"
tags: ["money", "accounts", "customer-session"]
---

# Create onchain whitelisted address (business)

`POST /money/accounts/whitelist`

## Request

- Base URL: `https://api.stablesea.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stablesea.com/money/accounts/whitelist`
- Auth: none declared. Required headers: `Idempotency-Key`

Business-scoped creation of a user-defined USDC whitelisted external address. Requires owner_attestation: true. An onchain_stellar address requires either memo_id or memo_not_required: true. With selected member approval, the acknowledgement carries one immutable instruction with at most 3 lifecycle entries.

## Headers

- `Idempotency-Key` string, required: Required client idempotency key; a duplicate submission with the same key is rejected with 409.

## Request body

- MoneyAccountsCreateWhitelistedExternalAddressInput
  - `address` string, required: The wallet address, in the payment_rail's own format. On onchain_solana it must be a wallet, not a token account: an address the SPL Token or Token-2022 program owns is refused (solana_destination_token_account), so is an address off the ed25519 curve with no account on the network (solana_destination_account_not_found), and a failed network check refuses with a 503 to retry (solana_destination_unverifiable).
  - `memo_id` string
  - `memo_not_required` boolean: Customer attestation that this onchain_stellar destination needs no memo. A Stellar add must carry either memo_id or memo_not_required: true (wallet_memo_required otherwise). Refused together with memo_id and on any other payment_rail. false or omitted is no attestation.
  - `name` string, required
  - `owner_attestation` boolean, required: Must be true: on behalf of the business, the customer attests that every deposit sent from this wallet or exchange account is the business's own property, not held for, owed to, or sent on behalf of anyone else, and that the details are correct. false is refused with wallet_owner_attestation_required.
  - `payment_rail` 'onchain_ethereum' | 'onchain_stellar' | 'onchain_solana', required
  - `symbol` 'USDC' | 'XLM' | 'YLDS'

## Response `200`

OK

- MoneyAccountsCreateWhitelistedExternalAddressOutput
  - `account_id` string
  - `address` string
  - `explorer_url` string: Ready-to-open block-explorer URL for the address; absent when the rail has no explorer, in which case render the address as plain text.
  - `memo_id` string
  - `name` string
  - `payment_rail` string
  - `status` 'enabled' | 'disabled'
  - `symbol` string
  - `wallet_registration` MoneyAccountsWalletRegistrationView
    - `account_id` string
    - `address` string
    - `approval_allowed` boolean
    - `cancellation_allowed` boolean
    - `created_ts` string, date-time
    - `expires_ts` string, date-time
    - `history` MoneyAccountsWalletRegistrationDecision[], nullable
      - `actor_id` string, nullable
      - `actor_name` string
      - `note` string, nullable
      - `recorded_ts` string, date-time
      - `state` 'pending' | 'approved' | 'activated' | 'denied' | 'cancelled' | 'expired' | 'policy_changed'
    - `id` string
    - `memo_id` string
    - `memo_not_required` boolean
    - `name` string
    - `owner_attested` boolean
    - `payment_rail` string
    - `requester_id` string
    - `requester_name` string
    - `selected_approver_id` string
    - `selected_approver_name` string
    - `state` 'pending' | 'approved' | 'activated' | 'denied' | 'cancelled' | 'expired' | 'policy_changed'
    - `symbol` string

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `503`: Service Unavailable
- `default`: Error response.

## Changes

- **2026-10-29** `e003c8a67b62`: 5 info
  - added the optional property `error/authorization` to the response with the `400` status
  - added the optional property `error/authorization` to the response with the `401` status
  - added the optional property `error/authorization` to the response with the `403` status
  - added the optional property `error/authorization` to the response with the `503` status
  - …1 more
- **2026-10-17** `fe46d02f61ed`: 2 info
  - api tag `customer-session` added
  - added the optional property `wallet_registration` to the response with the `200` status
- **2026-10-17** `d359d2d00c43`: 1 info
  - added the new `YLDS` enum value to the request property `symbol`
- **2026-10-15** `10bd70ce0477`: 1 info
  - added the non-success response with the status `503`
- **2026-10-04** `e7d626233451`: 1 info
  - added the new `onchain_solana` enum value to the request property `payment_rail`

[Operation history](https://skmtc.dev/stablesea/apis/stable-sea-backend/changes/money/accounts/whitelist/post.md)

---

[API](https://skmtc.dev/stablesea/apis/stable-sea-backend.md) - [All operations](https://skmtc.dev/stablesea/apis/stable-sea-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/stablesea/apis/stable-sea-backend/revisions/772c80d83658?raw)
