Update an External Account
Update an External Account. Only label and metadata are mutable; any
other JSON key in the body is rejected with 400.
Authorizations
Token from POST /auth/token
Path Parameters
External Account ID (ext_ prefix).
Body
Partial update - only label and metadata are mutable. Financial /
identity fields are immutable (re-pointing a destination is create-new +
re-point). Any other JSON key in the body is rejected with 400.
Response
The request has succeeded.
A saved payment destination registered for a customer or one of their
counterparties. Exactly one of the per-type response detail objects is
populated, selected by type. Write-only secrets (full account number,
full IBAN) are never present on reads - only their last-4 renderings.
External Account ID (ext_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Resource type discriminator. Always "externalAccount".
externalAccount Who owns this account: the customer or one of their counterparties.
- Customer-owned
- Counterparty-owned
The instrument type; determines which detail object is populated.
bankUs, bankIban, bankCanada, card, walletExternal High-level grouping: fiatAccount for bank or card accounts, crypto for
wallets. The same value as the instrument category when this account is
referenced in a transaction.
fiatAccount, crypto Current lifecycle status. A transition to invalid always fires the
externalAccount.statusChanged webhook.
active, pending, rejected, invalid, deleted, failed Set when status = failed.
ereborRejected, cardProviderRejected, providerAccountMissing, cardLimitReached, cardInUse, provisioningTimeout, systemError Structured provider rejection detail. Set when status = failed and the failure was a provider terminal rejection; absent for provisioning timeouts and internal failures.
Set when status = rejected (compliance screening).
Set when status = invalid (derived from payout returns). Free-text for
now; a closed enum lands with the invalidation transition logic.
Optional display label.
Free-form key-value pairs supplied at creation or update.
Populated when type = bankUs.
Populated when type = bankIban.
Populated when type = bankCanada.
Populated when type = walletExternal.
Populated when type = card.
Transaction ids that this registration submitted for sender-attribution
release. Returned ONLY on the POST create response, and only when
registering this walletExternal matched held inbounds. Attribution is async:
each entry is submitted to the provider from
awaitingAction.awaitingSenderAttribution and moves to
processing.fundsPulled once settlement confirms — so an immediate GET of an
id may still show awaitingAction. Omitted on GETs (the create path is the
only writer).
Public TypeID, e.g. txn_01h455vb4pex5vsknk084sn02q; legacy UUID suffixes are accepted until non-v7 rows are retired.
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$When the external account was registered.
When the external account was last updated.