On/off-ramp via Ramp Network: A Step-by-Step Guide
Imagine: you launch a crypto app, users are registering en masse, but they're stuck at the fiat on-ramp. Bank cards charge high fees, and QIWI and PayPal are gray schemes. We've faced this many times. The solution is integrating Ramp Network, a specialized on/off-ramp service focused on Open Banking. Their standout feature is direct connection to users' bank accounts via Open Banking API in the EU and UK, giving fees from 0.49% instead of 2.9% from card giants. Having implemented over 50 such integrations, Ramp is one of the most flexible tools. This fiat gateway allows buying cryptocurrency (including ERC-20 tokens) and withdrawing fiat back, which is critical for many applications.
How to Integrate Ramp Network into a Crypto App?
Integration splits into three layers: client SDK, server logic, and webhook notifications. Let's go through each with practical examples.
SDK integration — for the frontend. Add the package @ramp-network/ramp-instant-sdk, pass the key, wallet address, and amount. Ramp renders the purchase widget itself. We recommend using swapAmount in wei and fiatValue to lock the fiat amount. This reduces slippage in volatile conditions.
import { RampInstantSDK } from '@ramp-network/ramp-instant-sdk'; const ramp = new RampInstantSDK({ hostAppName: 'Your App Name', hostLogoUrl: 'https://yourapp.com/logo.png', hostApiKey: process.env.RAMP_API_KEY, swapAsset: 'ETH_ETH,MATIC_POLYGON', userAddress: walletAddress, swapAmount: '50000000000000000', fiatCurrency: 'EUR', fiatValue: 100, userEmailAddress: user.email, }); ramp.on('PURCHASE_CREATED', (purchase, _purchaseViewToken, apiUrl) => { console.log('Purchase created:', purchase); }); ramp.on('PURCHASE_SUCCESSFUL', (purchase) => { handleSuccess(purchase); }); ramp.show(); Server-side API — to check statuses and fetch asset lists. Uses JWT authentication with short-lived tokens. Example in Python with httpx:
import httpx import jwt from datetime import datetime, timedelta class RampClient: BASE_URL = "https://api.ramp.network/api" def __init__(self, api_key: str, secret: str): self.api_key = api_key self.secret = secret async def get_purchase(self, purchase_id: str) -> dict: token = jwt.encode( {"iss": self.api_key, "exp": datetime.utcnow() + timedelta(minutes=5)}, self.secret, algorithm="HS256" ) async with httpx.AsyncClient() as client: resp = await client.get( f"{self.BASE_URL}/purchases/{purchase_id}", headers={"Authorization": f"Bearer {token}"} ) return resp.json() async def get_supported_assets(self) -> list: async with httpx.AsyncClient() as client: resp = await client.get(f"{self.BASE_URL}/host-api/assets", params={"hostApiKey": self.api_key}) return resp.json()["assets"] Webhook — to receive real-time events. Ramp signs requests with JWT and a public key. Always verify the signature:
@app.post("/webhooks/ramp") async def ramp_webhook(request: Request): auth = request.headers.get("Authorization", "").replace("Bearer ", "") try: payload = jwt.decode(auth, RAMP_PUBLIC_KEY, algorithms=["RS256"]) except jwt.InvalidTokenError: raise HTTPException(403) event = await request.json() if event["type"] == "CREATED" and event["purchase"]["status"] == "RELEASING": await process_pending_purchase(event["purchase"]) Why Ramp Network Is the Optimal On-ramp Choice?
Compare with other popular providers on key parameters:
| Parameter | Ramp Network | MoonPay | Transak |
|---|---|---|---|
| Open Banking fee | 0.49% | 1.0% | 1.5% |
| Card fee | 2.9% | 4.5% | 3.5% |
| Direct bank transfer | Yes (SEPA) | No | No |
| Off-ramp | Yes | Yes | Yes |
| KYC on provider side | Yes | Yes | Yes |
| UI customization | SDK + iframe | iframe | iframe |
The fee advantage with Open Banking is 6x better than MoonPay. For projects with European users this is critical. At a volume of €100,000 per month, you save up to €2,500 in fees.
What's Included in the Integration Process?
The process consists of stages: analysis → SDK setup → server logic → testing → deployment. We prepare a full package to launch on/off-ramp:
| Stage | Duration | Description |
|---|---|---|
| Analysis | 1-2 days | Study your app's architecture, identify integration points. |
| SDK setup | 2-3 days | Connect frontend, configure widget parameters. |
| Server logic | 2-4 days | Implement webhooks, signature validation, purchase status handling. |
| Testing | 2-3 days | Verify all scenarios: successful purchase, errors, refunds. |
| Deployment | 1 day | Deploy to production, configure monitoring. |
Additionally we provide:
- Documentation: integration description, webhook specification, error handling schemes.
- Access: API key setup, webhook configuration, test environment.
- Custom UI: widget adapted to your design, with dark theme support.
- Team training: workshop on monitoring and handling refunds.
- Support: 2 weeks of technical support post-deployment.
Webhook setup: endpoint must be accessible via HTTPS and return 200 OK. Ramp retries requests up to 3 times with exponential backoff. Log all events for debugging.
What Are Common Mistakes When Integrating Ramp?
- JWT expiry — token lives 5 minutes; set up automatic renewal.
- Invalid swapAsset — check format:
ASSET_NETWORK. For example,ETH_ETHorMATIC_POLYGON. - Missed webhook — always implement reprocessing after successful KYC verification.
- Incorrect fiatValue — pass amount with two decimal places, otherwise slippage may occur.
Timeline and Cost
Estimated timeline: from 5 to 14 business days depending on complexity. Cost is calculated individually — contact us for a free estimate. We guarantee transparency and fixed price at the start.
Additional Information
According to Ramp Network API documentation, you can integrate both on-ramp and off-ramp using a single SDK. Learn more about the service on Wikipedia.
Get a consultation on integration — let's discuss your project details. Order integration today and start accepting fiat within a week.







