🚧 Bloque documentation is under development

Accounts

An account is a financial container tied to a ledger. Every account has an address (URN), a type (medium), a state, and a balance β€” all inherited from the ledger it belongs to.


What is an Account?

Account
A financial container: an address (URN) + a medium (type) + a state + a connection to a ledger. Accounts are what users interact with β€” cards, bank accounts, wallets. The money itself lives in the ledger.

Which account types exist?

MediumWhat it isKYC needed?
VirtualBase account β€” creates the ledger, pools balanceMinimal
CardVirtual debit/credit card (PCI-compliant, Visa/MC)Minimal
BancolombiaColombian bank account with a unique reference codeYes
USFDIC-insured US bank account via BridgeFull KYC + TOS
PolygonWeb3 wallet on the Polygon networkNone
BRE-BColombian instant payment key (phone, email, ID, etc.)Yes

Each account type has its own client in the SDK: client.accounts.virtual, client.accounts.card, client.accounts.bancolombia, and so on.


What is a Medium?

Medium
The account type label. It appears in the account's URN and in API parameters. Mediums are how Bloque distinguishes one account type from another.
did:bloque:virtual:acc_abc123 did:bloque:card:acc_def456 did:bloque:bancolombia:acc_ghi789

What is an Asset and how are amounts represented?

Assets use the format SYMBOL/DECIMALS. Amounts are always passed as strings β€” never as floats β€” to avoid floating-point precision issues.

// DUSD/6 has 6 decimal places
// To represent $50.00: multiply by 10^6
const amount = '50000000' // = 50.000000 DUSD

// COPM/2 has 2 decimal places
// To represent 10,000 COP: multiply by 10^2
const copAmount = '1000000' // = 10000.00 COP

Always work in the smallest unit (like "cents" but for each asset's precision). Convert for display, but store and send as strings.


What account states exist?

Every account goes through a lifecycle:

creation_in_progress
       ↓
     active
    ↙     β†˜
frozen   disabled
              ↓
           deleted
StateMeaning
creation_in_progressBeing set up β€” not yet usable
activeNormal operating state
frozenTemporarily blocked β€” can be unfrozen
disabledPermanently deactivated β€” cannot be reactivated
deletedRemoved
creation_failedSetup failed β€” needs re-creation

Some operations (like card charges or transfers) will fail if the account is not active. Always check state before initiating financial operations, or use webhooks to track state changes.


What is a Transfer?

Transfer
Moving funds between two accounts. Transfers are asynchronous β€” they return a queueId and a status. The final status (completed or failed) arrives via webhook or polling.
const result = await client.accounts.transfer({
  sourceUrn: virtualAccount.urn,
  destinationUrn: card.urn,
  amount: '50000000',
  asset: 'DUSD/6',
})

// result.status = 'queued' | 'processing' | 'completed' | 'failed'
// result.queueId = 'txn_...'

Transfers work between any account types β€” card to Bancolombia, virtual to Polygon, etc. The transfer routes through the shared ledger if both accounts share one.


What's next

β†’ Swap β€” converting assets and working with payment rails