Deposits
Generate per-customer deposit addresses.
Deposits are on-chain: you generate a deposit address for a customer, they send
funds to it, and Cheddar credits the deposit and fires a CUSTOMER_DEPOSIT
webhook. There is no deposit action in the dashboard — deposits are
API-driven.
Your customer holds a token Cheddar doesn’t custody? Deposit
swaps accept almost any token on almost any chain and
credit the balance in USDC — the same CUSTOMER_DEPOSIT webhook fires.
Get a deposit address
POST /deposit returns a stable address for a (customer, chain) pair. Calling
it again for the same customer and token returns the same address.
mintIdselects the token (and therefore the chain) — list options withGET /mints.customerIdis your identifier for the end user. Cheddar creates the customer on first use.customerEmailis optional.
Show the returned address to your customer. When their transfer confirms,
you receive a CUSTOMER_DEPOSIT webhook.
Flagged deposits
Cheddar screens incoming deposits against the reputation of the sending wallet. A deposit that looks risky is held rather than credited, and someone on your team decides what happens to it.
When a deposit is screened
Screening runs only when all of the following hold:
- Your organization has both a risk severity threshold and a USD threshold configured, under Organization → Risk Score Thresholds. If either is unset, deposits are never screened.
- The deposit’s USD value is above your USD threshold. Smaller deposits pass through untouched.
- The deposit has not already been flagged.
Cheddar then analyses the sending address and compares the returned severity against your threshold. Anything at or below it is credited normally.
What a flag does
A flagged deposit is held, not credited. Specifically:
- The customer’s balance does not move. The funds stay in the deposit wallet and are excluded from sweeps.
- You still receive a
CUSTOMER_DEPOSITwebhook, withisFlagged: trueandriskOfFundsset to the severity. Nothing else is sent until the deposit is resolved. - The reason — score, severity, and the entity behind the sending wallet, where the provider identifies one — is recorded and shown alongside the deposit.
If you credit players from CUSTOMER_DEPOSIT, check isFlagged before
crediting. A flagged deposit may be returned to the sender or sent elsewhere,
and the funds will not be yours.
Resolving a flagged deposit
Flagged deposits appear under Transactions to Approve → Flagged deposits, with the flag reason attached. There are three outcomes:
Each outcome fires its own webhook — CUSTOMER_DEPOSIT_APPROVED,
CUSTOMER_DEPOSIT_REJECTED, or CUSTOMER_DEPOSIT_REDIRECTED. See Webhook
events for payloads and timing; reject and redirect move funds
on-chain, so their events arrive only once the transfer confirms.
There is no deadline. A flagged deposit stays in the queue until someone acts on it.
When an action fails
If an action fails before anything reaches the chain — the transfer could not be funded or broadcast — the deposit returns to the flagged queue and you simply try again with the same buttons. Every failed attempt is kept and shown on the deposit with its timestamp and reason, so a deposit that has failed repeatedly is visible as such.
Once a transfer has been broadcast, the deposit does not return to the queue, because the funds may already have left the wallet. Those cases are completed by Cheddar rather than retried by you.
Reviewing past decisions
Transactions to Approve → Resolution history lists resolved deposits: what was decided, when, by whom, where the funds went, and the resulting transaction hash. Redirects are included, so a decision Cheddar made on your deposits is visible to you.