Skip to content
recurring-billingusdcsaas
Joshua C.

Set Up Capped Recurring USDC SaaS Billing with Reclack

Step-by-step guide for SaaS teams to set up capped recurring USDC billing with Reclack. Covers wallet approvals, settlement, and handling failures on Base, Ethereum, or Polygon.

Set Up Capped Recurring USDC SaaS Billing with Reclack

Recurring billing in USDC is a common request for SaaS products serving crypto-native customers. The pattern is familiar: a customer grants a bounded approval for recurring payments, and the merchant bills on a schedule. Onchain, this means handling ERC-20 approvals, payment caps, and confirming that every settlement is final. This guide walks through each step of configuring a capped recurring subscription in USDC for a SaaS product using Reclack.

Overview: What Happens in a Recurring USDC Subscription

Recurring USDC billing with Reclack requires three steps:

  1. The merchant defines the plan, frequency, and billing cap.
  2. The customer reviews and signs a capped approval to allow recurring transfers up to the stated maximum.
  3. Payments are collected on schedule, and each transfer settles as an onchain transaction. If the customer revokes or changes the approval, or the wallet lacks funds, payment fails.

All flows are non-custodial. The USDC moves from the customer’s wallet to a merchant-controlled settlement address. Reclack never takes custody, never holds a private key, and never requests a seed phrase.

Defining Your SaaS Pricing and Cap Structure

Start by deciding how you will price your SaaS product. Most recurring SaaS subscriptions are either flat-rate (e.g., $99/month) or usage-based (e.g., $0.10 per API call, with a monthly cap). Your cap should reflect the maximum amount you might bill in a single period. For simplicity, this guide uses a flat-rate monthly model.

Example Plan

  • Product: Crypto Analytics Pro
  • Price: 100 USDC per month
  • Billing cycle: Monthly
  • Cap: 100 USDC per month

Customers will be asked to approve a recurring payment with a 100 USDC cap. No one can be charged more in any period, unless the approval is updated and re-signed by the customer.

Setting Up a Plan in Reclack

Plans in Reclack are defined in the dashboard or through the API. Each plan includes:

  • Asset: USDC
  • Chain: Base, Ethereum, or Polygon (pick one per plan)
  • Amount: recurring charge (e.g., 100 USDC)
  • Frequency: billing interval (e.g., monthly)
  • Cap: same as amount for flat-rate; higher for metered

For most SaaS use cases, set the cap equal to the recurring charge. If you later want to support overages, you can increase the cap and update the approval.

Customer Checkout: Approval and Signature Flow

When a customer signs up, they are shown a payment page. The page displays:

  • The recurring charge (e.g., 100 USDC/month)
  • The cap (maximum possible in one billing period)
  • A wallet connect prompt

The customer connects their wallet of choice. Reclack presents a transaction for signature. This is an ERC-20 approval, granting permission for the Reclack billing contract to transfer USDC up to the stated cap. The customer signs the approval onchain. Reclack never asks for a private key or seed phrase.

Example Approval Transaction:

// USDC contract
// Approves 100 USDC for billing contract
usdc.approve(billingContractAddress, 100 * 1e6); // USDC uses 6 decimals

This approval is visible in any block explorer. The cap is explicit. The merchant cannot collect more than the approved amount without a new signature.

Recurring Billing: How Payments Are Collected

At the start of each billing cycle, Reclack prepares a transfer from the customer’s wallet to the merchant’s settlement address. The transfer only succeeds if:

  • The approval is still valid (not revoked, not reduced)
  • The wallet has at least the required USDC balance

If both conditions are met, Reclack executes the transfer. Each transfer is a new transaction. Settlement is visible onchain. After confirmation, the merchant receives the funds directly. Reclack never holds the funds.

If the approval has been revoked or reduced, or if the wallet lacks funds, the payment attempt fails. Reclack notifies both the merchant and the customer. Merchants can prompt the customer to top up or re-approve.

Handling Payment Failures and Edge Cases

Payment can fail for several reasons:

  • Approval is revoked or reduced below the required cap
  • Wallet has insufficient USDC
  • Customer switches wallets

When payment fails, no funds move. There is no partial settlement. Reclack can automatically retry at configurable intervals. Operators can configure how many retries to attempt and how to notify the customer after persistent failures.

Example Failure Handling:

  • On failure, Reclack marks the subscription as unpaid.
  • Merchants can block service until payment is received.
  • Customer receives an onchain and email notification, prompting corrective action.

Updating or Canceling a Subscription

If you want to change the billing amount or cap (for example, after a price increase), you must prompt the customer to sign a new approval. The customer reviews and signs an updated capped approval. No changes take effect until the new approval is confirmed onchain.

To cancel, the customer can:

  • Revoke the approval in their wallet
  • Use the Reclack customer portal to cancel the subscription (this triggers an onchain revoke)

Once revoked, no further charges can be made. Merchants can immediately reflect this status in their SaaS product.

Worked Example: Setting Up a 100 USDC/Month Subscription on Base

Suppose you operate SaaS Analytics Pro. You want to charge 100 USDC per month on Base.

Step 1: Create a Plan in Reclack Dashboard

  • Asset: USDC
  • Chain: Base
  • Price: 100 USDC
  • Cap: 100 USDC
  • Frequency: Monthly

Step 2: Share the Hosted Checkout Link with the Customer

The customer visits the link, sees the plan details, and connects their wallet (e.g., MetaMask).

Step 3: Customer Signs the Approval

The customer is prompted to approve 100 USDC for the billing contract. The wallet shows the contract address and the amount. Customer confirms onchain.

Step 4: On the Next Billing Date

Reclack initiates a transfer from the customer’s wallet to your merchant settlement address for 100 USDC. You receive the funds after confirmation. The approval remains valid for future cycles, up to the cap.

If Payment Fails:

  • Reclack notifies you and the customer.
  • You may choose to pause access until payment is retried and succeeds.

Security and Control: What the Customer Sees and Signs

Every approval is explicit. The customer sees the cap and frequency before signing. Reclack never asks for unlimited approvals. All permissions can be revoked by the customer at any time, either through their wallet or the customer portal. Funds move directly, and only after customer signature and onchain confirmation.

Monitoring and Reconciling Settlements

Each payment is an onchain transfer. Merchants can view all settlements in the Reclack dashboard, or query their own address directly onchain. No offchain adjustments are needed. For accounting, export a CSV from Reclack, or use webhooks for real-time updates.

Operator Checklist: Going Live

  • [ ] Define your plan and cap
  • [ ] Set up in Reclack (dashboard or API)
  • [ ] Test with your own wallet on a supported chain
  • [ ] Share checkout link with customers
  • [ ] Monitor first settlements and handle any failed payments

We built Reclack to make recurring USDC billing predictable and safe for both merchants and customers. Every approval is capped, every transfer is final, and funds settle directly to your address. You can read more or start configuring billing flows at reclack.com.

recurring-billingusdcsaas