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-configsignup_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_AgentByIdmint_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:

  1. USDC prepay — linked wallet sends USDC on Base, then POST /api/v1/balance/deposit/claim (or SPA /connect?action=topup). See prepay_deposits.
  2. Watcher auto-creditdeposit_watcher credits a linked wallet without a client claim (same bonus hook).
  3. x402 top-upPOST /api/v1/balance/topup/x402 with settled PAYMENT-SIGNATURE on 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

  1. One bonus per account. Tx-scoped idempotency: request_id=email_signup_deposit_match:{source}:{tx_id} via balance_ledger.credit_with_applied — repeats of the same transaction do not double-pay; a second qualifying deposit does not grant another bonus.
  2. Minimum deposit — principal must be ≥ configured minimum; under-minimum deposits credit balance only.
  3. Daily ceilingTryReserveEmailSignupDepositMatch reserves 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).
  4. Bonus is account credit for API usage only — not cash, not withdrawable. Virtual USD is debited before any wallet x402 draw on paid routes.
  5. 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:

Present on POST /api/v1/balance/deposit/claim, watcher-driven credits, and x402 top-up success bodies.

Human flow

  1. Sign up (email magic link or wallet mint) — no free credit unless a separate starting-grant knob is enabled (currently off).
  2. Open /connect?action=topup or follow prepay_deposits. Connect a Base Account (passkey is fine).
  3. Buy USDC into that account (Coinbase Onramp), then deposit ≥ the live minimum. Do not call wallet_link first — a fresh passkey wallet is empty and link will 409.
  4. After the wallet holds USDC, optionally POST /api/v1/agents/wallet-link so later deposits can unlock the bonus (linked sender is required for the bonus only).
  5. Check email_signup_deposit_match_* fields or GET /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