molted billing
Billing and plan management
| Command | Description |
|---|---|
molted billing status | Get current billing status |
molted billing activate-free | Activate the free plan (no credit card required; verified human accounts only) |
molted billing start-now | End a paid plan's 3-day trial now and start paying (charges the card on file) |
molted billing setup | Generate a Stripe checkout link to activate or change your billing plan |
Agent context
Billing controls your sending quota and must be activated before any email can be sent. New accounts start on the "trial" plan with sends blocked.
Check billing status
molted billing status
# → { "plan": "trial", "sendBlocked": true, "actions": ["setup_billing"] }
# → sendBlocked: true means all sends will return "trial_not_activated"Activate billing (free tier -- no credit card, HUMAN ACCOUNTS ONLY)
molted billing activate-free
# → { "plan": "free" }
# → sends are unblocked immediately (3,000/month, 3 mailboxes; new free
# accounts ramp up: 20/day in week 1, 50/day in week 2, then 100/day)Free can only be activated from the "trial" plan (any other plan gets 400). Free requires the account owner to be a verified human. An account created by molted auth signup is agent-owned, so this returns 403
"free_plan_requires_human" -- use `billing setup` instead, or have a humanclaim the account first. An unverified human owner gets 403
"email_verification_required" until they verify their email. A verifiedhuman owner on a disposable email domain (mailinator.com and the like) gets 403 "disposable_email_not_allowed" -- use a real address, or buy a paid plan.
Activate billing (paid plan -- requires Stripe checkout, agents may buy this):
molted billing setup --plan solo
# → { "url": "https://checkout.stripe.com/...", "plan": "solo" }
# → open the URL to complete payment (hand to a human with `auth login-link`)
# → a checkout from the "trial" plan starts with a 3-day trial (trial limits:
# 100 sends, 3 mailboxes, 1 custom domain) unless billing status shows
# "trialEligible": false; add --skip-trial to start paying right away.
# Upgrading from Free gets no trial: the full plan applies at once.End the trial early and get the full plan limits now (charges the card; a human decision: on the default human gate an agent gets human_decision_required, so hand the decisionUrl to a person):
molted billing start-now
# → { "started": true, "plan": "solo", "status": "active" }Check remaining quota before batch sends
molted budget
# → { "tenantId": "tenant-abc123",
# "monthly": { "used": 120, "limit": 3000, "remaining": 2880 },
# "daily": { "used": 12, "limit": 100, "remaining": 88 },
# "hourly": { "used": 5, "limit": 40, "remaining": 35 },
# "inbound": { "used": 310, "limit": 1000, "remaining": 690, "held": 0 },
# "negativeSignals": { "count": 0, "budget": 50, "remaining": 50 },
# "timestamp": "2026-04-05T12:00:00.000Z" }
# See `molted budget --help` for the full field reference (freeRamp, inbound, etc).Plans and quotas
- Trial: the sign-up state, sends blocked until billing is set up. A paid plan's 3-day trial runs on trial limits: 100 sends in total, 3 mailboxes, 1 custom domain
- Free: 3,000 monthly sends, daily 100 (20/day in week 1, 50/day in week 2), hourly 40, 3 mailboxes, no custom domains, no credit card
- Solo ($19/mo): 10,000 monthly sends, daily 1,000, hourly 200, 10 mailboxes, 3 custom domains
- Team ($79/mo): 50,000 monthly sends, daily 5,000, hourly 1,000, 50 mailboxes, 10 custom domains
Exceeding a limit → sends blocked with reason "hourly_limit_exceeded",
"daily_limit_exceeded", "monthly_limit_exceeded" or "overage_cap_exceeded"Typical agent flow
molted billing status # check if blocked
molted billing setup --plan solo # or activate-free if the account is a verified human's
molted budget # check quota before a batch
molted send simulate-batch # dry-run to see per-recipient policy
molted send batch # send the batchRelated: molted send, molted budget, molted analytics
Commands
molted billing status
Get current billing status
molted billing statusmolted billing activate-free
Activate the free plan (no credit card required; verified human accounts only)
molted billing activate-freemolted billing start-now
End a paid plan's 3-day trial now and start paying (charges the card on file)
molted billing start-nowA paid subscription bought from the "trial" plan normally starts with a 3-day trial on restricted limits (100 sends, 3 mailboxes, 1 custom domain). start-now ends the trial immediately: the card on the subscription is charged and the full plan limits apply at once.
It spends money, so it is a human decision. It needs an admin-scoped key, and on the workspace's default human gate ("enforce") an agent gets:
# → { "error": "human_decision_required", "decisionUrl": "https://..." }Hand the decisionUrl (or molted auth login-link) to a person; they click "Start my plan now" in the portal (Settings, Plan).
molted billing status
# → { "inTrial": true, "canStartNow": true, ... }
molted billing start-now
# → { "started": true, "plan": "solo", "status": "active" }Safe to repeat: on an already active subscription it returns { "started": false } and changes nothing. If the payment fails (HTTP 402, payment_failed or payment_action_required for 3D Secure) the trial continues; a retry after fixing the card is a fresh attempt.
molted billing setup
Generate a Stripe checkout link to activate or change your billing plan
molted billing setup [options]| Option | Description | Default |
|---|---|---|
--plan <plan> | Billing plan: solo or team (default: solo) | solo |
--skip-trial | Skip the 3-day trial and start the paid plan at checkout | |
--success-url <url> | Redirect URL on success | |
--cancel-url <url> | Redirect URL on cancel |
Plans
--plan solo $19/mo -- 10,000 emails/mo, daily 1,000, 10 mailboxes, 3 custom domains [default] --plan team $79/mo -- 50,000 emails/mo, daily 5,000, 50 mailboxes, 10 custom domains
The free plan needs no checkout: molted billing activate-free (verified human accounts only -- an agent-owned account gets 403 and should use this command instead).
Enterprise plans are not self-serve -- contact sales.
A checkout from the "trial" plan starts with a 3-day trial on restricted limits (unless billing status shows "trialEligible": false). --skip-trial skips it: the card is charged at checkout. Upgrading from Free never gets a trial. Needs a key with manage on every mailbox; a workspace that already pays gets 400 (change plans in the billing portal instead).
Typical agent flow
molted billing status
# → { "sendBlocked": true, "actions": ["setup_billing"] }
molted billing setup --plan solo
# → { "url": "https://checkout.stripe.com/...", "plan": "solo" }
# → hand the URL to a human via `molted auth login-link`After payment completes, sends are unblocked automatically.
See CLI overview for global options, credentials and output format.