StrimzStrimz
Guides

The AutoPay Agent

What each AutoPay Agent capability does today.

The AutoPay Agent runs scheduled background work for your account: things like recovery emails for failed charges, daily cashflow digests, and anomaly alerts. It holds no signing key, so it can't move money on its own. Every action either sends an email, writes to your activity log, or queues a job that needs your approval before anything signs on-chain.

You turn capabilities on and off individually. They live in the dashboard under AutoPay Agent → Capabilities.

recovery

When a subscription charge fails, the customer needs to know. The agent emails them for you on a cadence you set:

strategyCadence (relative to currentPeriodEndAt)
onceT+0
twiceT+0, T+24h
until_grace_endsT+0, T+24h, T+72h

You can override the email body with a custom template via recoveryNotificationTemplate. Strimz renders it inside the standard wrapper (header, unsubscribe footer) so the brand stays consistent.

If the customer has no email on file (wallet-only checkout), the agent records recovery_abandoned in your activity log so finance can follow up manually.

cashflow.digest

Daily 9am UTC, the agent emails you yesterday's roll-up:

  • Confirmed transaction count
  • Gross revenue
  • Strimz fees
  • Net to your wallet
  • Unique customers

Idempotent per UTC day. If a flapping cron fires twice, you only get one email.

cashflow.anomaly

Starter plan and above. Hourly, the agent computes a z-score for the last completed clock-hour against the trailing 30-day average for that same hour-of-day. If your revenue dropped more than nσ (n derived from your anomalySensitivity: low=3σ, medium=2σ, high=1σ), you get an email plus an AuditLog entry. The agent only flags drops because revenue surges aren't actionable.

The math:

z = (this_hour_revenue - mean(prior_30_days_same_hour)) / stddev(prior_30_days_same_hour)
if z < -threshold: alert

The agent needs at least 7 prior data points before it will alert. Merchants in their first week don't get surprised by false positives.

cashflow.yield

Starter plan and above. Daily 9:30am UTC, the agent computes your running net balance:

balance_cents = sum(Transaction.netAmount where kind != refund) - sum(Refund.amount where status = completed)

If balance > cashflowMinimumLiquidReserveCents and you've enabled cashflowAutoConvertToYield, the agent emails you a recommendation: "you have $X in surplus over your $Y reserve target. Consider moving the excess to a yield position".

The agent never moves funds. The email is a recommendation, and moving the surplus is up to you.

commerce

Agent escrow (the commerce capability) is coming soon and not available at launch. The section below describes it for when it ships.

Monthly (1st of each month, 9am UTC), the agent emails you last month's vendor activity:

  • Total spend across all approved/completed AgentJobs
  • Top 5 vendors by spend
  • Cap utilisation: total_spend / commerceMonthlySpendCapUsdCents
  • Count of jobs awaiting your approval (status = proposed)

Plus a one-line nudge if any vendor's monthly spend has increased >50% over their three-month average. Possibly worth a closer look.

pricing_intelligence

Monthly, the agent runs the same SQL aggregates the API exposes via /v1/stats/{mrr,churn,forecast}:

  • MRR (interval-normalised across daily/weekly/monthly/quarterly/yearly subs)
  • 12-month average churn rate
  • 90-day linear-regression revenue forecast (next 30 / 60 / 90 days)

…and emails them to you with a confidence rating (low / medium / high) based on sample size.

routing

Coming. Routing is for customers who pay from a chain other than Arc, through Circle's CCTP V2. Checkout doesn't offer that yet, so this capability does nothing today. See Cross-chain.

identity

A capability flag for Agent Identity, the agent's ERC-8004 on-chain identity. It runs no scheduled work.

How to enable

await strimz.agents.updateConfig({
  enabledCapabilities: ['recovery', 'cashflow', 'pricing_intelligence'],
  recovery: {
    gracePeriodHours: 48,
    strategy: 'twice',
    notificationTemplate:
      "Hey, your subscription with Acme couldn't be charged. Top up your wallet?",
  },
  cashflow: {
    digestEnabled: true,
    anomalySensitivity: 'medium',
    autoConvertToYield: false,
    minimumLiquidReserveCents: 50_000,
  },
  commerce: {
    requireHumanApprovalAboveUsdCents: 100_000,
    approvedVendors: ['0x...', '0x...'],
    monthlySpendCapUsdCents: 500_000,
  },
})

Or use the dashboard. Capabilities are individually toggleable; turning one off doesn't affect the others.

On this page