Skip to main content
Rewards is infrastructure that lets partners add a points program to their card product. Cardholders earn points on posted card transactions, and can access multiple redemption options, including statement credits (functionally similar to cashback) and travel rewards. Rain supports three points modes: Rain-Managed (default), where Rain handles the full lifecycle onchain, and two Partner-Managed modes for partners that own part or all of the rewards orchestration.

Points Modes

Partner-managed programs should choose Onchain if your end users are crypto native, hold crypto wallets, and want to self-custody their assets, or if you otherwise want to take advantage of the extensibility/interoperability of public blockchain networks. If you want to optimize for simplicity and ease of integration, choose Offchain.

How It Works (Rain-Managed)

  1. Earn: When a transaction settles, points entries are created in a pending state
  2. Settle: When the statement closes, points move from pending to ready
  3. Mint: At liquidation, ready points are minted onchain to the user’s collateral contract
  4. Redeem: Cardholder uses points for statement credits or travel bookings

How It Works (Partner-Managed)

Partner-Managed behavior depends on whether balances live onchain or in Rain’s database:
  1. Earn: In onchain mode, calculate points from transaction.spend.completed webhooks. In offchain mode, Rain calculates card-spend points from your configured earn rates and stores them in the DB ledger.
  2. Mint: In onchain mode, mint tokens to user wallets you control. In offchain mode, Rain marks points as minted in the DB without submitting an onchain transaction.
  3. Redeem: For statement credits, onchain partners handle the redemption in their own system, while offchain partners call Rain to debit the DB points balance and then apply the credit themselves. For travel redemptions, Rain orchestrates the booking and checks balances against your webhook (onchain) or Rain’s database (offchain).
See Earning and Minted for mode-specific details.

What You Configure

During onboarding, you will:
  • Choose a points mode: Rain-Managed (default), Partner-Managed (Onchain), or Partner-Managed (Offchain)
  • Set earn rates (Rain-Managed and Partner-Managed Offchain): Define how many points cardholders earn per category. See Configuring Rates.

Billing

Rewards allows you to take advantage of the same economics that have made programs like Skymiles the most profitable division of Delta Airlines. When cardholders earn points, there are no cash expenses incurred by you or Rain. Points are created as either tokens or database entries depending on your configuration, and you realize the benefit of rewards-based spend lift immediately. Cash expenses are only incurred later at redemption time, so you can take advantage of the float created by the time value of money and breakage when points go unredeemed. Rain will include all expenses incurred by rewards redemptions for a given period on that period’s invoice. If a reward is refunded after you have been billed for it, you will see a credit on your next invoice.
For clients with more complex accounting needs, please inquire for alternative reward funding mechanisms.

What Is Automatic

What Rain handles automatically depends on your points mode:

Reading Balances

Use these endpoints to display points data in your app:
  • GET /issuing/raindrops/balance - Returns the full onchain, withheld, pending, statement-credit, and available breakdown for Rain-Managed tenants. For Partner-Managed Offchain tenants, returns { availablePoints }. Partner-Managed Onchain tenants receive 405 because balances are read from your system.
  • GET /issuing/raindrops/activity β€” Returns a paginated list of earn and redeem events
Point amounts in API responses are JSON strings to preserve precision for values beyond 2^53.
For Partner-Managed (Onchain), you maintain balances in your own system. Rain queries your balance via the raindrop_balance.requested webhook when needed for travel redemptions. External endpoints require the Api-Key header. See Authenticating with the API for details.