Managed Accounts — financial instruments that hold funds for their owner.
All paths and operations in this module are verified against
weavr-multi-api.redoc.ly and api.weavr.io/products/multi/openapi/.
Confirmed endpoints
GET /managed_accounts— list all accounts for the identityPOST /managed_accounts— create a new managed accountGET /managed_accounts/{id}— get a single accountPATCH /managed_accounts/{id}— update account details (e.g.friendlyName,tag)POST /managed_accounts/{id}/iban— assign an IBAN (may be async, checkstate)GET /managed_accounts/{id}/iban— fetch the IBAN detailsPOST /managed_accounts/{id}/block— temporarily block (supportsidempotency-ref)POST /managed_accounts/{id}/unblock— unblock (supportsidempotency-ref)GET /managed_accounts/{id}/statement— transaction historyDELETE /managed_accounts/{id}— destroy the account
List query parameters (confirmed from curl examples)
offset,limitprofileId,friendlyName,currency,tagstate—"ACTIVE","BLOCKED","DESTROYED"state.blockedReason—"USER","SYSTEM"state.destroyedReason—"SYSTEM"createdFrom,createdTo— epoch milliseconds
Statement query parameters (confirmed from curl examples)
offset,limitorderByTimestamp—"ASC"or"DESC"fromTimestamp,toTimestamp— epoch millisecondsshowFundMovementsOnly— booleansingleEntryPerTransaction— boolean
Important notes
- Creating a managed account requires the end-user's auth_token to be stepped-up (the user must have completed 2FA at least once since registration).
"profileId"is required when creating — find it in Multi Portal > API Credentials.- Amounts throughout Weavr are in minor units (e.g. 1000 = £10.00).
- An account blocked by
"SYSTEM"cannot be unblocked by users — only those withblockedReason: "USER"can be unblocked via the API.
Summary
Functions
Assigns an IBAN to a managed account, enabling wire transfers.
Temporarily blocks a managed account.
Creates a new managed account.
Destroys (permanently deletes) a managed account.
Fetches a managed account by id. GET /managed_accounts/{id}.
Fetches the IBAN details for a managed account. GET /managed_accounts/{id}/iban.
Lists all managed accounts for the authenticated identity.
Returns the transaction statement for a managed account.
Unblocks a managed account.
Updates a managed account's details.
Functions
@spec assign_iban(Weavr.Config.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Assigns an IBAN to a managed account, enabling wire transfers.
POST /managed_accounts/{id}/iban — may be async; check the returned
ManagedAccountIBAN.state field. It may be "PENDING_ALLOCATION" until
bank details are ready.
@spec block(Weavr.Config.t(), String.t(), keyword()) :: :ok | {:error, Weavr.Error.t()}
Temporarily blocks a managed account.
POST /managed_accounts/{id}/block — supports idempotency-ref. Sets
state.blockedReason to "USER", which means it can be unblocked later.
@spec create(Weavr.Config.t(), map(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Creates a new managed account.
POST /managed_accounts — requires a stepped-up auth_token.
Required fields in attrs:
"profileId"— from Multi Portal > API Credentials"friendlyName"— a display name for the account"currency"— ISO 4217 code
Optional: "tag" (custom searchable field).
@spec destroy(Weavr.Config.t(), String.t(), keyword()) :: :ok | {:error, Weavr.Error.t()}
Destroys (permanently deletes) a managed account.
DELETE /managed_accounts/{id} — irreversible. The account must have a
zero balance before it can be destroyed.
@spec get(Weavr.Config.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Fetches a managed account by id. GET /managed_accounts/{id}.
@spec get_iban(Weavr.Config.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Fetches the IBAN details for a managed account. GET /managed_accounts/{id}/iban.
@spec list( Weavr.Config.t(), keyword() ) :: {:ok, map()} | {:error, Weavr.Error.t()}
Lists all managed accounts for the authenticated identity.
GET /managed_accounts — pass filter options in opts[:filters].
@spec statement(Weavr.Config.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Returns the transaction statement for a managed account.
GET /managed_accounts/{id}/statement — see module doc for query params.
Pass them via opts[:filters].
@spec unblock(Weavr.Config.t(), String.t(), keyword()) :: :ok | {:error, Weavr.Error.t()}
Unblocks a managed account.
POST /managed_accounts/{id}/unblock — only works when state.blockedReason
is "USER". Accounts blocked by "SYSTEM" cannot be unblocked via the API.
@spec update(Weavr.Config.t(), String.t(), map(), keyword()) :: {:ok, map()} | {:error, Weavr.Error.t()}
Updates a managed account's details.
PATCH /managed_accounts/{id} — updatable fields include "friendlyName" and "tag".