Instant Crypto On/Off-Ramp
Accept fiat via bank transfer, convert to stablecoins instantly, settle on-chain in seconds. Bridge traditional banking with blockchain settlements using OpenFinance + Stablecoins.
What You Get
A complete fiat-to-crypto infrastructure that handles the entire flow from bank account to blockchain wallet.
SEPA/SWIFT transfers automatically convert to eUSD/eEUR/eGBP stablecoins the moment they clear.
Full KYC/AML compliance with Danish FSA supervision. All transactions audit-ready.
Deploy stablecoins to Ethereum, Polygon, Arbitrum, or any EVM-compatible chain.
On-chain settlements work around the clock with 10-15 second finality.
Implementation Steps
Six clear steps from integration to production launch with code examples.
Connect to ARYZE OpenFinance to accept SEPA instant payments and SWIFT transfers. Configure webhook endpoints to receive payment notifications.
// Initialize OpenFinance client
const openfinance = new OpenFinance({
apiKey: process.env.ARYZE_API_KEY,
environment: 'production'
});
// Create a payment intent
const intent = await openfinance.paymentIntents.create({
amount: 10000, // 100.00 EUR
currency: 'EUR',
method: 'sepa_instant',
metadata: { userId: 'user_123' }
});
console.log(intent.bankDetails); // IBAN, BIC, referenceAPI Endpoint: POST /v1/payment-intents
Set up automatic stablecoin minting when fiat payments are received. Define minting rules and destination wallets.
// Configure auto-mint rules
const mintConfig = await stablecoins.mintConfigs.create({
trigger: 'payment.received',
sourceAsset: 'EUR',
targetAsset: 'eEUR',
destinationAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
chain: 'ethereum',
autoMint: true
});
// Mint manually for specific payment
const mint = await stablecoins.assets.mint({
asset: 'eEUR',
amount: 10000,
destinationAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
chain: 'polygon',
metadata: { paymentId: intent.id }
});API Endpoint: POST /assets/{asset}/mint
Configure on-chain settlement parameters including gas management, transaction monitoring, and confirmation thresholds.
// Monitor on-chain settlement
const transfer = await stablecoins.transfers.get(
transferId
);
console.log({
status: transfer.status, // 'pending', 'confirmed', 'finalized'
txHash: transfer.transactionHash,
confirmations: transfer.confirmations,
blockNumber: transfer.blockNumber,
gasUsed: transfer.gasUsed
});
// Configure gas strategy
const gasConfig = await stablecoins.gasConfigs.update({
strategy: 'fast', // 'slow', 'medium', 'fast'
maxGasPrice: '100', // gwei
priorityFee: 'auto'
});Build the user flow from payment initiation to on-chain confirmation. Handle edge cases like failed transfers and refunds.
// Complete on-ramp flow
async function processOnRamp(userId, amount, currency, wallet) {
// 1. Create payment intent
const intent = await openfinance.paymentIntents.create({
amount, currency, metadata: { userId, wallet }
});
// 2. User completes bank transfer
await displayBankDetails(intent.bankDetails);
// 3. Webhook receives payment confirmation
// (handled by webhook endpoint)
// 4. Auto-mint triggered
const mint = await stablecoins.assets.mint({
asset: `e${currency}`,
amount,
destinationAddress: wallet,
metadata: { paymentId: intent.id }
});
// 5. Return transaction details
return { intent, mint };
}Set up webhook handlers to receive real-time updates on payments, mints, and on-chain transfers.
// Webhook handler
app.post('/webhooks/aryze', async (req, res) => {
const event = req.body;
switch(event.type) {
case 'payment.received':
// Trigger stablecoin mint
await handlePaymentReceived(event.data);
break;
case 'asset.minted':
// Notify user of successful on-ramp
await notifyUser(event.data.userId, {
amount: event.data.amount,
asset: event.data.asset,
txHash: event.data.transactionHash
});
break;
case 'asset.transferred':
// Update internal records
await updateTransferStatus(event.data);
break;
}
res.json({ received: true });
});payment.received- Fiat payment confirmedasset.minted- Stablecoin minted on-chainasset.transferred- Transfer finalized with confirmations
Run comprehensive tests in sandbox environment before production launch. Test both on-ramp and off-ramp flows.
- Test SEPA instant payments (2-10 seconds)
- Test SEPA standard payments (1-2 business days)
- Test multi-chain minting (Ethereum, Polygon, Arbitrum)
- Test off-ramp redemptions (stablecoin to fiat)
- Verify webhook delivery and retry logic
- Test error handling and refund flows
Services Used
This recipe combines two core ARYZE services for complete fiat-crypto bridging.
Accept SEPA instant, SEPA standard, and SWIFT transfers. Handles all bank integrations, KYC/AML compliance, and payment routing.
- Virtual IBANs for each user
- Real-time payment notifications
- Automated reconciliation
Mint and burn eUSD, eEUR, and eGBP stablecoins on any EVM chain. Fully backed 1:1 with Danish FSA supervision.
- Multi-chain deployment
- Instant minting and burning
- Regulatory compliant reserves
Technical Requirements
API endpoints, webhooks, and SDKs needed for implementation.
- POST /v1/payment-intents
- GET /v1/payment-intents/:id
- POST /assets/{asset}/mint
- POST /assets/{asset}/burn
- GET /transfers/:id
- POST /webhooks/configure
- payment.received
- payment.failed
- asset.minted
- asset.burned
- asset.transferred
- transfer.confirmed
- Node.js / TypeScript
- Python
- REST API (any language)
- GraphQL API
Related Industries
This recipe is commonly used in these industries.
Enable fiat on-ramps for DeFi protocols, NFT marketplaces, and crypto exchanges.
View IndustryAdd stablecoin wallets and crypto services to existing fintech platforms.
View IndustryInstant deposits and withdrawals for gaming platforms with crypto options.
View IndustryReady to Build Your On-Ramp?
Join companies using ARYZE to bridge traditional banking with blockchain settlements. Get started in sandbox in minutes.