Hosted Checkout
Hosted Checkout provides a complete, secure interface for fiat-to-stablecoin payments.
Your users are redirected to Inflow's payment page where they can pay with their bank account via Open Banking, eliminating the need for custom payment UI development.
High Level Flow
The hosted checkout process follows these steps:
- Create Payment: You create a payment via API specifying amount, currency, and destination wallet
- Generate Checkout URL: Inflow returns a secure checkout URL for your user
- User Redirect: You redirect your user to the hosted checkout interface
- Bank Selection: User selects their bank from available Open Banking providers
- Authentication: User authenticates with their bank credentials securely
- Payment Authorization: User reviews and authorizes the payment
- Automatic Processing: Inflow collects funds, converts to stablecoins, and delivers to destination
- Completion: User is redirected back to your application with payment status
Create Hosted Checkout
Request
Endpoint: POST /onramp/{customerId}
curl -X POST https://api.inflowconnect.com/onramp/{customerId} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"currency": "EUR",
"amountInCents": 10000,
"destinationAccountId": "acc_a1b2c3d4e5f6g7h8",
"successUrl": "https://yourapp.com/success",
"cancelUrl": "https://yourapp.com/cancel",
"referenceId": "order_12345"
}'
Required Parameters:
currency
- Source fiat currency (currentlyEUR
)amountInCents
- Payment amount in cents (minimum 150 for EUR)destinationAccountId
- Target wallet account ID
Optional Parameters:
successUrl
- Redirect URL after successful paymentcancelUrl
- Redirect URL if user cancelsreferenceId
- Your internal reference IDmetadata
- Custom metadata object
Response
{
"id": "onramp_x1y2z3a4b5c6d7e8",
"customerId": "cus_a1b2c3d4e5f6g7h8",
"status": "INITIATION",
"source": {
"amountInCents": 10000,
"currency": "EUR"
},
"destination": {
"accountId": "acc_a1b2c3d4e5f6g7h8",
"walletAddress": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
"chain": "ethereum",
"currency": "USDC"
},
"checkoutUrl": "https://checkout.inflowconnect.com/pay/onramp_x1y2z3a4b5c6d7e8",
"expiresAt": "2024-01-16T10:30:00Z",
"createdAt": "2024-01-15T10:30:00Z"
}
Key Response Fields:
id
- Unique payment identifiercheckoutUrl
- Secure URL for user to complete paymentstatus
- Current payment statusexpiresAt
- Payment expiration timestamp (24 hours)
User Experience
Checkout Interface
When users access the checkoutUrl
, they experience:
- Payment Summary - Clear display of amount, currency, and destination
- Bank Selection - List of available banks via Open Banking
- Secure Authentication - Direct connection to user's bank
- Payment Confirmation - Final review before authorization
- Real-time Updates - Progress indicators during processing
- Completion Page - Success/failure status with next steps
Supported Banks
Available through Open Banking integration:
- Major European banks (SEPA Instant compatible)
- Real-time payment processing
- Automatic bank account verification
- Enhanced security with bank-level authentication
Error Handling
Common Issues
Error | Cause | Solution |
---|---|---|
INVALID_DESTINATION | Wallet account not registered | Register destination account first |
AMOUNT_TOO_LOW | Below €1.50 minimum | Increase payment amount |
EXPIRED_PAYMENT | Payment timeout (24h) | Create new payment |
BANK_DECLINED | User's bank rejected transaction | User should contact their bank |
INSUFFICIENT_FUNDS | User's account has insufficient balance | User needs to fund bank account |
Retry Logic
For failed payments:
- Check failure reason in payment status
- Allow user to retry with same or different bank
- Create new payment if previous one expired
- Provide clear error messages to users
Updated 15 days ago