Yield as a service
Fiat you already hold, placed into a TCB curated vault and held as a position you can partition, read and redeem.
Yield as a service is the half of the API that turns fiat into a position. A deposit debits a fiat account you control and buys shares of the curated vault for that currency. The shares sit in one wallet TCB custodies for you, and a ledger records which of your own vault sub-accounts they belong to, so you can attribute the position to your funds, strategies or products. A withdrawal sells shares and credits a fiat account you control.
What you can do
| Capability | Guide |
|---|---|
| Place fiat from an account you control into a curated vault, and take it back out | Vault deposits and withdrawals |
| Run the same chain one step at a time — mint tcbUSD from fiat, put it into the vault, redeem at once or through the vault's queue, and redeem tcbUSD back to fiat | Tokenised deposits, step by step |
| Hold a yield-bearing vault position and read what it has earned | Positions |
| Partition your position by fund, strategy or product, and read each slice on its own | Positions |
| Be told when something settles, without polling — this one spans both halves of the API | Webhooks |
The shape of it
Blue holds fiat, gold holds shares. The blue lines are money moving; the grey lines are structure.
Both legs are announced to an endpoint you register — deposit.settled and
withdrawal.settled — so you do not have to poll for either.
The share count does not change on its own. Nothing is credited, compounded or swept on a schedule: the vault's share price rises as yield accrues, so the same shares are worth more each time you read them. That is what accrual means on this API, and it is set out in full in Shares, position and accrual.
Step by step
| Step | What happens | Route |
|---|---|---|
| 1. Deposit fiat | TCB debits a fiat account you control and buys vault shares. The shares sit in one wallet TCB custodies for you, and the ledger records which vault sub-account they belong to. | POST /deposits |
| 2. Hold the position | Your share count stays where your deposits and withdrawals put it. The vault's share price rises as yield accrues, so the same shares are worth more each time you read them. | GET /positions |
| 3. Withdraw | A withdrawal sells shares and credits a fiat account you control. | POST /withdrawals |
Name a subAccountId on a deposit or a withdrawal to attribute it to one of
your own partitions. A call that names none lands in tcb:default, the vault
sub-account you hold from the moment the relationship exists. Create your own
with POST /sub-accounts and list them with GET /sub-accounts.
Where the money can go
| From | To | How |
|---|---|---|
| Your fiat account | A vault position | POST /deposits |
| A vault position | Your fiat account | POST /withdrawals |
Getting fiat onto that account in the first place — accounts, IBANs, crypto in, conversions, transfers and payouts — is the other half of the API: Banking as a service.
The states a deposit or a withdrawal passes through, and what to do at each
one, are in The money lifecycle. A withdrawal that
has started executing can never be declared FAILED; build for that before
you write a retry.
The guides
Vault deposits and withdrawals
Put fiat into a vault, take it back out, and handle every state on the way.
Positions
Register vault sub-accounts, read what each holds, and read what it has earned.
How it works
The object model: your account tree, your vault ledger, and what belongs to which.
Webhooks
Register an endpoint, verify signatures, handle retries. Spans both halves.
Pilot disclosure
Banking as a service
Accounts and IBANs for you and for your end customers, money in, money moved between accounts, and money out to a registered destination.
How it works
The object model behind a position: you, your sub-clients, their accounts, and the vault sub-accounts your position is partitioned into.