Payments / Onramp·Multi-chain · EVM · Solana · Bitcoin
Ramp Network
Fiat-to-crypto onramp and offramp widget with strong European coverage (SEPA, Open Banking) and 130+ countries. Drop-in JS/React/iOS/Android SDKs, REST API for quotes, and signed webhook events.
- 01European fiat onramp (SEPA, Open Banking)
- 02fiat offramp / cash-out
- 03embeddable widget
- 04DApp / wallet first-purchase flow
- 05low-friction Apple Pay / Google Pay
- pnpm add @ramp-network/ramp-instant-sdk
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_RAMP_HOST_API_KEY | Client | Ramp `hostApiKey`. Required by the widget for attribution; safe to ship to the browser. Use the staging key for `https://app.demo.ramp.network` and prod key for `https://app.ramp.network`. |
| RAMP_WEBHOOK_PUBLIC_KEY | Server | ECDSA public key (PEM) used to verify the `X-Body-Signature` on Ramp webhook events. Distributed by Ramp at onboarding. |
Use Ramp Network for fiat on/offramp. On the client, `import { RampInstantSDK } from '@ramp-network/ramp-instant-sdk'` and call `new RampInstantSDK({ hostApiKey: NEXT_PUBLIC_RAMP_HOST_API_KEY, hostAppName, hostLogoUrl, swapAsset: 'USDC_ETH', userAddress, fiatCurrency: 'EUR', fiatValue: '100', url: 'https://app.ramp.network' }).show()`. Listen to widget events (`PURCHASE_CREATED`, `OFFRAMP_SALE_CREATED`) for UI updates, but trust only signed webhook events server-side: Ramp signs the raw body with ECDSA and sends `X-Body-Signature`; verify against `RAMP_WEBHOOK_PUBLIC_KEY` before crediting. For quote / asset metadata call REST v3 at `https://api.ramp.network/api/host-api/v3/...`.
- ⚑There are two Ramp companies — Ramp Network (this onramp) and Ramp (corporate spend management). Do not confuse `docs.ramp.com` with `docs.rampnetwork.com`.
- ⚑Staging (`app.demo.ramp.network`) and production (`app.ramp.network`) require different `hostApiKey` values; using the wrong key for the URL silently shows the widget in unbranded fallback mode.
- ⚑Webhook signature is ECDSA over the raw bytes — Express body-parser or Next.js's default JSON parser strips formatting and breaks verification. Capture the raw body buffer.
- ⚑`swapAsset` uses Ramp's symbol_chain syntax (e.g. `USDC_ETH`, `USDC_MATIC`, `SOL_SOL`) — fetch the live list from `/host-api/v3/onramp/assets` rather than hard-coding. Misnamed assets just hide the widget options.
- ⚑Offramp requires the user to send crypto to a Ramp-issued deposit address inside the widget; if your UX dismisses the widget early the deposit address is lost. Persist the `OFFRAMP_SALE_CREATED` payload server-side.
- ⚑Apple Pay / Google Pay availability depends on issuer + region + asset combination — call `/host-api/v3/onramp/payment-methods` per quote rather than assuming.
- ⚑Sandbox issues only test crypto on testnets; switching to live requires KYC of the partner entity and a separate prod hostApiKey.