Skip to main content
An account is the unit of spending in Reap. Every card is issued against an account, every authorization is evaluated against an account’s balance, and every settlement clears debt on an account.

Ownership

Each account belongs to a single owner. You choose the owner type when you create the account. Your project’s program mode constrains which types are allowed.
  • USER ownership. Each account belongs to a verified individual user with their own isolated balance. The default, and the only option for consumer programs. Also available in corporate programs for per-user spending.
  • COMPANY ownership. Each account belongs to a verified company with a single pooled balance shared across all cardholders under that company. Only available in corporate programs.
Individual cardholders always require an approved KYC application before a card can be issued to them, even when the balance lives at the company level.

The signer key

In User-Funded projects, creating an account requires a signers entry for each chain family the project has enabled. You prove ownership of each key by signing a message from Generate signer message. That key is what authorizes money leaving the account later. Reap holds one key to the account’s wallets and the signer you register is the other, so withdrawals need a signature from both. Nothing about deposits or card spend depends on it. You decide whose key it is. A key held in your backend lets you withdraw on the user’s behalf, while a key in the user’s own wallet means no withdrawal can happen without them. Who holds the signing key covers the tradeoff.
The curve differs per chain family, so one key cannot cover both. An account on EVM chains and Solana needs two, and Reap cannot replace a key the owner loses.

Account status

An account is ACTIVE or RESTRICTED. Reap restricts an account when its owner’s compliance state requires it, for example a rejected application or a case under compliance review. The ACCOUNT_STATUS_UPDATED webhook fires on every change, and Reap lifts the restriction once the underlying issue is resolved. A restricted account declines every card authorization. Nothing else about it changes. The cards on it keep their own statuses, and you can still freeze a card, set a PIN, or display card details. A card can therefore report status: ACTIVE while its account is restricted, and declines carry the ACCOUNT_NOT_ACTIVE decline reason. If you show cardholders whether a card can be used right now, read the account status alongside the card status.

How balance is computed

Every account has a balance made up of three numbers:
  • Assets is what backs spending. The shape depends on your funding model. In User-Funded projects it is stablecoin deposits held in the account’s wallets. In Program-Funded projects it is the Virtual Asset balances you allocate (Managed mode); under External authorization no per-user asset balance is held in Reap.
  • Liabilities is outstanding card spend: authorizations on hold and cleared amounts that have not yet been settled. On a master collateral account it also includes any deposit fees charged on deposits into that account.
  • Available balance is what the cardholder can actually use at the moment of a card swipe.
Call Get account balance at any time to read these values. availableBalance is the number you surface in your product when showing a user how much they have loaded on their card.

Typical funding flow

  1. Create an account with the owner type, owner ID, and a signer key per enabled chain family. You get back a deposit address for each enabled chain.
  2. Share the deposit addresses with your user. They send supported stablecoins. See Funding via Deposits.
  3. Track deposits via the CRYPTO_DEPOSIT_CREATED and CRYPTO_DEPOSIT_STATUS_UPDATED webhooks.
  4. Once a deposit is approved, the balance updates automatically. Check it via Get account balance.
  5. To move funds back out to an external address, see Withdrawing Funds.

Assets breakdown

The assets endpoint shows what is held in the account, broken down per chain and per token (or per Virtual Asset symbol in Program-Funded projects). Only approved balances are included. Deposits that are still being confirmed on chain do not count toward assets or availableBalance. They surface in the deposit and activity feeds until approval, at which point both values update.

Activity

The activity feed gives a chronological record of all fund movements on an account: deposits, withdrawals, card transactions, virtual asset postings, and more. Filter by account or activity type to scope it to a specific user, or use it to power a transaction history view in your product.