Testing
Stable Genius provides a sandbox environment for development and testing. Sandbox mode uses Base Sepolia testnet — no real money moves.Sandbox access is included with all API keys during private beta. Request early access to get started.
Sandbox vs Production
| Sandbox | Production | |
|---|---|---|
| API key prefix | sk_test_ | sk_live_ |
| Base URL | https://api.stablegenius.co/v1 | https://api.stablegenius.co/v1 |
| Blockchain | Base Sepolia (testnet) | Base (mainnet) |
| USDC | Test USDC (free, no value) | Real USDC |
| Webhooks | Delivered to your endpoint | Delivered to your endpoint |
| Settlement | Simulated (no real ACH) | Real ACH to merchant bank |
| Rate limits | 100 req/min | 1,000 req/min |
Getting Test USDC
To test payments in sandbox mode, you need test USDC on Base Sepolia:- Get Base Sepolia ETH from the Base Sepolia Faucet for gas fees
- Get test USDC from the Circle USDC Faucet (select Base Sepolia)
- Import test USDC into your wallet using the testnet USDC contract address
Testing the Full Flow
1. Create a test payment intent
2. Pay with test USDC
Scan the QR code with a wallet configured for Base Sepolia, or send test USDC directly to thepayment_address returned in the response.
3. Verify webhook delivery
Check your webhook endpoint received thepayment_intent.confirmed event.
4. Verify via API
confirmed with the correct tx_hash and net_amount.
Test Webhook Events
Trigger test webhook events from the dashboard without sending real transactions:- Go to Settings → Webhooks in the dashboard
- Click Send Test Event next to your webhook endpoint
- Select the event type (
payment_intent.confirmed,settlement.completed, etc.) - We send a test event with realistic sample data to your endpoint
Testing Checklist
Before going live, verify the following in sandbox:- Payment intent creation returns valid QR payload
- QR code renders correctly on your terminal/app
- Webhook endpoint returns 200 within 5 seconds
- Webhook signature verification passes
- Duplicate event handling works (we send the same event twice)
- Expired payment intents are handled gracefully
- Network disconnection and reconnection doesn’t break the flow
- Edge case: customer sends wrong amount
Going Live
When you’re ready to switch to production:- Replace
sk_test_withsk_live_in your server configuration - Ensure your webhook endpoint is accessible over HTTPS
- Verify your merchant has completed KYC and linked a real bank account
- Process a small live payment ($0.10) to confirm end-to-end