Rain Managed
Rain orchestrates the redemption and fires
raindrop_redemption.created so you can burn the points. Covers the flow plus the portal-launch and webhook recipes.Partner Managed
Rain uses your balance source (onchain or offchain) and fires
raindrop_redemption.completed. Covers both modes plus the balance, completion, and refund recipes.Who Builds What
Redemption Status Values
API Endpoints
Use these endpoints to manage travel redemptions.
In a corporate program, only the company owner can book with points. A booking request for any other employee returns
403. In Rain-Managed and Partner-Managed Offchain programs, the balance endpoint returns the company’s shared balance for any employee. In Partner-Managed Onchain programs, Rain asks your system for the balance of the employee in the request, so return the company’s shared balance. See Corporate Programs.
An
Admin API key covers the raindrops-travel scope, so it can call every travel redemption endpoint. A custom API key for your travel portal needs raindrops-travel:read to display balances and raindrops-travel:write to create or refund redemptions. In production, Rain issues an API key scoped to raindrops-travel for your travel portal integration.Test in sandbox
To test your webhook handlers before the travel portal is connected, create simulated bookings in sandbox. CallPOST /issuing/raindrops/travel-redemptions with a sandbox API key: either an Admin key or a custom key with raindrops-travel:write. Pass a bookingId that starts with sim_, such as sim_test-booking-1. Rain treats a sim_ booking as confirmed without contacting the travel provider. What happens next depends on your program type:
- Partner-Managed: The call returns
200with statusCOMPLETED, and Rain sendsraindrop_redemption.completed. For a step-by-step walkthrough, see Test in sandbox on the Partner-Managed page. - Rain-Managed: The call returns
201with statusPENDING, and Rain sendsraindrop_redemption.created. When the cardholder authorizes the burn, Rain skips the travel provider confirmation for thesim_booking. The redemption completes after the onchain burn. Rain-Managed programs do not receive araindrop_redemption.completedwebhook.
- Rain checks the cardholder’s balance before it creates the redemption. For Partner-Managed Onchain programs, this check sends
raindrop_balance.requestedto your endpoint. - To test your refund handling, call
POST /issuing/raindrops/travel-redemptions/{redemptionId}/refundon the completed redemption. - Each
bookingIdmust be unique, so use a newsim_ID for each test. Reusing an ID returns409.
sim_ prefix has no special handling, and Rain asks the travel provider to confirm every booking.