--- id: TASK-125 title: Configure Stripe & Mollie API keys and test HyperSwitch payment channels status: To Do assignee: [] created_date: '2026-03-24 00:56' labels: - payments - hyperswitch - infrastructure dependencies: [] references: - 'https://pay.rspace.online/health' - 'https://dashboard.stripe.com/test/apikeys' - 'https://my.mollie.com/dashboard' priority: medium --- ## Description HyperSwitch payment orchestrator is deployed at `pay.rspace.online` with merchant account `rspace_merchant` and DB migrations complete. The connector configuration and end-to-end payment testing is blocked on obtaining real API keys from Stripe and Mollie. ## Context - HyperSwitch is live: `https://pay.rspace.online/health` - Merchant account created with publishable key `pk_snd_9167de4f...` - Merchant API key saved to `.env` as `HS_MERCHANT_SECRET_KEY` - Internal mint/escrow/confirm APIs verified working on rspace-online - Bonding curve ($MYCO) endpoints live and tested - `INTERNAL_API_KEY` and `RSPACE_INTERNAL_API_KEY` deployed to both repos ## Steps 1. **Obtain Stripe API key** — create Stripe account or use existing, get test mode API key (`sk_test_...`) 2. **Obtain Mollie API key** — create Mollie account, get test API key 3. **Add keys to Infisical** — `STRIPE_API_KEY`, `STRIPE_WEBHOOK_SECRET`, `MOLLIE_API_KEY` in rspace project 4. **Add keys to payment-infra `.env`** on Netcup 5. **Run `scripts/setup-hyperswitch.sh`** — configures Stripe + Mollie connectors, geo-based routing (EU→Mollie, US→Stripe), webhook endpoint 6. **Rebuild payment-infra onramp/offramp services** — they have new HyperSwitch integration code (`hyperswitch.ts`, `hyperswitch-offramp.ts`) but haven't been rebuilt 7. **Test Stripe channel** — create payment intent, complete with test card `4242424242424242`, verify cUSDC minted 8. **Test Mollie channel** — create payment intent with EU billing, complete via Mollie test mode, verify cUSDC minted 9. **Test off-ramp** — initiate withdrawal, verify escrow burn, simulate payout webhook, verify confirm/reverse 10. **Run `bun scripts/test-full-loop.ts`** — full loop: fiat in → cUSDC → $MYCO → cUSDC → fiat out ## Key files - `payment-infra/scripts/setup-hyperswitch.sh` — connector + routing setup script - `payment-infra/services/onramp-service/src/hyperswitch.ts` — on-ramp integration - `payment-infra/services/offramp-service/src/hyperswitch-offramp.ts` — off-ramp integration - `rspace-online/scripts/test-full-loop.ts` — end-to-end test script - `rspace-online/server/index.ts` — internal mint/escrow/confirm endpoints (lines 570-680) - `payment-infra/config/hyperswitch/config.toml` — HyperSwitch TOML config on Netcup ## Acceptance Criteria - [ ] #1 Stripe test API key obtained and added to Infisical + payment-infra .env - [ ] #2 Mollie test API key obtained and added to Infisical + payment-infra .env - [ ] #3 setup-hyperswitch.sh runs successfully — Stripe + Mollie connectors configured with geo-based routing - [ ] #4 onramp-service and offramp-service rebuilt with HyperSwitch integration code - [ ] #5 Stripe test payment completes end-to-end: card payment → webhook → cUSDC minted in CRDT ledger - [ ] #6 Mollie test payment completes end-to-end: iDEAL/SEPA → webhook → cUSDC minted - [ ] #7 Off-ramp escrow flow verified: escrow burn → payout → confirm (or reverse on failure) - [ ] #8 Full loop test passes: fiat → cUSDC → $MYCO swap → cUSDC → fiat withdrawal