AccountId or assetId use CAIP. Do not send bare
addresses in these fields.
Two deliberate exceptions appear in the B2B API:
- Enrollment and chain activation accept numeric
chainIds. These values select configured chains. They do not identify an account or an asset. - EIP-712 requires a bare EVM address in
domain.verifyingContract.
CAIP-10 account forms
CAIP-10 identifies an account. The B2B API uses two forms:Chain-agnostic: <namespace>:0:<address>
Use this form when an account has the same address on each chain in a
namespace. An EVM externally owned account (EOA) uses this form. The chain
reference is the literal string 0 as specified in
CAIP-10 §Abstract Account Addresses.
ownerAccountId) and agent wallets
(agentAccountId).
Chain-bound: <namespace>:<chainId>:<address>
Use this form when an account exists on one chain only. Each smart-contract
account is chain-bound because its deployment exists on one chain.
SmartAccount.accountId) and
withdrawal recipients (recipientAccountId).
Solana accounts
Solana does not have a chain-agnostic0 form. Solana accounts use the
mainnet CAIP-2 reference as the chain segment. This reference is the chain
genesis hash.
- Solana-rooted owner wallets (
ownerAccountId, Model B) - The pooled agent (
agentAccountId) - Swig sub-account smart accounts (
SmartAccount.accountId)
eip155:0:<addr> owner form. Only the returned smart accounts use solana:
addresses.
Rules for each field
Validation
The API validates and normalizes each CAIP-10 string for its namespace. EVM addresses are not case-sensitive. The API converts them to lowercase. Therefore, uppercase and lowercase EVM addresses are equivalent for lookup. Solana base58 addresses are case-sensitive. The API keeps their case.CAIP-19 for Assets
CAIP-19 identifies an asset. The B2B API uses it for strategy allocationassetIds and withdrawal assetIds.
ERC-20 on EVM
SPL on Solana
Common IDs
Build CAIP strings
Do not manually join CAIP strings in the client. A missing0x, incorrect
case, or incorrect chain reference produces 400 API_400. Use a CAIP-10 or
CAIP-19 library. If you cannot use a library, use these canonical forms:
Exception: EIP-712 verifyingContract
In a signed EIP-712 envelope, domain.verifyingContract is a bare EVM
address. It is not a CAIP-10 identifier. EIP-712 requires this form because
wallets do not use CAIP for this field.
This exception applies only to the signed envelope. Do not use this form for
other fields.
Common errors
- Do not send bare hex to an
*AccountIdfield. The API rejects bare hex. Convert the value to the correct CAIP-10 form. - Do not use
eip155:0:<addr>as a withdrawal recipient. A withdrawal recipient must be chain-bound. - Do not send a chain-bound EVM owner during enrollment. Use
eip155:0:<addr>for an EVM owner. Model B Solana enrollment is the exception. It uses the mainnetsolana:5eykt4…:<base58>form. - Do not compare raw EVM account strings. Normalize EVM identifiers with a CAIP-10 parser before comparison. Do not convert Solana identifiers to lowercase.