Signup deposit unlock — one-time bonus after a qualifying prepay
Account credit unlocked by the first qualifying USDC prepay deposit — not a free grant at signup.
This is a separate program from the /promo tiered deposit-match promo. Do not mix their rules or APIs. See deposit_match_promo for the $50-first-deposit tier ladder (deposit_match ledger reason).
What the offer is
When enabled, 411data credits a one-time bonus in virtual USD after the agent’s first qualifying prepay deposit that meets the configured minimum. The ledger reason is email_signup_deposit_match.
There is no starting signup grant on this path — EMAIL_SIGNUP_STARTING_BALANCE_USD defaults to 0. This bonus is deposit-unlocked credit, not a free balance at email signup or wallet mint.
Live amounts (do not hardcode)
Operator knobs control whether the offer runs and how much it pays:
| Env knob | Role when enabled |
|---|---|
EMAIL_SIGNUP_DEPOSIT_MATCH_USD |
Flat bonus credited once (profile default 0 = off) |
EMAIL_SIGNUP_DEPOSIT_MATCH_MIN_USD |
Minimum qualifying deposit (profile default 10) |
EMAIL_SIGNUP_DEPOSIT_MATCH_DAILY_CAP_USD |
Global daily USD ceiling for new bonuses (profile default 250; 0 = kill switch) |
When EMAIL_SIGNUP_DEPOSIT_MATCH_USD is 0, the offer is off — the terms below describe the program when enabled; they are not a promise of current payout.
Authoritative live figures for UI and agents:
GET /api/public/connect-config → signup_deposit_match_usd, signup_deposit_match_min_usd
Never bake dollar amounts into client bundles; the Connect hub reads these fields at runtime.
Who is eligible
Fresh read of dbo.Get_AgentById → mint_source must be email or wallet. (SQL/env names retain the historical email_signup prefix; wallet-mint agents are included.)
Both paths need a working funding route. Email signups typically arrive on a scoped 411k_ usage key — poll GET /api/v1/keys/me, not /agents/balance, for spendable balance on that key. A first prepay may come from an unlinked Base Account (card purchase into a passkey wallet); wallet_link requires that wallet to already hold USDC, so buy first, then link. The bonus still requires a linked sender — principal credit does not.
Qualifying deposit
A qualifying deposit is USDC that credits virtual_balance_usd through an eligible refill path and meets the configured minimum (signup_deposit_match_min_usd / EMAIL_SIGNUP_DEPOSIT_MATCH_MIN_USD).
Eligible refill paths
Bonus is evaluated after the principal credit succeeds, at three call sites:
- USDC prepay — linked wallet sends USDC on Base, then
POST /api/v1/balance/deposit/claim(or SPA/connect?action=topup). See prepay_deposits. - Watcher auto-credit —
deposit_watchercredits a linked wallet without a client claim (same bonus hook). - x402 top-up —
POST /api/v1/balance/topup/x402with settledPAYMENT-SIGNATUREon Base.
Normal prepay minimums still apply (typically $1 USDC floor for the transfer itself). The signup minimum is additional — a deposit below the configured signup minimum credits principal only, with no bonus.
Bonus-only linked-sender gate
The principal deposit always succeeds when prepay rules pass, even if the bonus is refused.
For the bonus only, the on-chain sender (from) must be a wallet linked to the agent (agent.wallet_address or dbo.agent_wallet). Unlinked senders still get principal credit; they do not unlock the signup bonus.
Rules
- One bonus per account. Tx-scoped idempotency:
request_id=email_signup_deposit_match:{source}:{tx_id}viabalance_ledger.credit_with_applied— repeats of the same transaction do not double-pay; a second qualifying deposit does not grant another bonus. - Minimum deposit — principal must be ≥ configured minimum; under-minimum deposits credit balance only.
- Daily ceiling —
TryReserveEmailSignupDepositMatchreserves against a global daily USD cap; when the cap is exhausted or set to 0, new bonuses are refused until the next UTC day (principal unaffected). - Bonus is account credit for API usage only — not cash, not withdrawable. Virtual USD is debited before any wallet x402 draw on paid routes.
- DB errors refuse the bonus, not the deposit — gate failures log and return
email_signup_deposit_match_status: not_applicable.
Response fields
After a qualifying refill, responses may include:
email_signup_deposit_match_bonus_usd— credited bonus ("0.000000"when none )email_signup_deposit_match_status—"granted"or"not_applicable"
Present on POST /api/v1/balance/deposit/claim, watcher-driven credits, and x402 top-up success bodies.
Human flow
- Sign up (email magic link or wallet mint) — no free credit unless a separate starting-grant knob is enabled (currently off).
- Open
/connect?action=topupor follow prepay_deposits. Connect a Base Account (passkey is fine). - Buy USDC into that account (Coinbase Onramp), then deposit ≥ the live minimum. Do not call
wallet_linkfirst — a fresh passkey wallet is empty and link will 409. - After the wallet holds USDC, optionally
POST /api/v1/agents/wallet-linkso later deposits can unlock the bonus (linked sender is required for the bonus only). - Check
email_signup_deposit_match_*fields orGET /api/v1/keys/me/ billing explorer for the bonus line (email_signup_deposit_match).
Not this program
| Topic | Signup deposit unlock | /promo deposit match |
|---|---|---|
| Ledger reason | email_signup_deposit_match |
deposit_match |
| First-deposit floor | Configured minimum (env / connect-config) | $50 — under $50 on first credit → no promo ever |
| Structure | Flat one-time bonus | Tier ladder + pool unlock + Titan tail |
| Preview API | GET /api/public/connect-config |
GET /api/v1/balance/deposit/promo-preview |
| Cookbook | This page | deposit_match_promo |
See also
- prepay_deposits — prepay mechanics and errors
- deposit_match_promo — separate tiered
/promoprogram - connect_wizards —
/connect?action=topupand account setup