Skip to content

Features ​

This page lists every feature of OpenRampKit, with a link to its documentation. For how the parts fit together, read Architecture. For the step-by-step flows, read Flows.

Deposits ​

FeatureWhat it doesRead more
Crypto destinationThe money ends as a token on a chain, at an address that your backend setsSessions, Pathways
Merchant destinationThe money ends in your own fiat account at a payment provider (Xendit). No crypto.Merchant fiat destination
On-chain settlementThe payment goes through OpenRampSettlement. The chain records the session id.On-chain settlement, flow
Destination callsContract calls after delivery, in the same transaction (for example a vault deposit)Destination calls
Signed settlement intentsYour server signs an EIP-712 intent. The payer cannot change the recipient, token or calls.Signed intents
Fiat onrampsCard, bank and local methods at Coinbase, Transak, MoonPay, Stripe, Swapped, Meld, OnramperAdapters, flow
Local QR and e-walletsQRIS, QR Ph, PromptPay, PayNow, VietQR, GCash, MoMo and moreXendit, Swapped, flow
Crypto transferThe user sends crypto from any wallet or exchange to a deposit addressRelay, flow
Wallet paymentThe user pays from a connected EVM or Solana wallet. Relay bridges or swaps when needed.Wallets (wagmi), Solana, flow
Two-leg pathwaysAn onramp buys a hop asset, then a Relay bridge moves it to the destinationHops, flow
Peer-to-peer onrampFiat to crypto through PeerPeer

Withdrawals ​

FeatureWhat it doesRead more
To walletThe user sends the source asset to an address on a network they pickTo wallet
To cashThe user gets fiat in their own bank or e-wallet accountTo cash
User custodyThe user's wallet signs the transaction (custody: 'user_wallet')Custody
App custodyYour treasury hook sends the transaction (custody: 'app'), once per stepcustody: 'app'
Allowed targetsLimit the chains or currencies that a user can pickAllowed targets
Address screeningYour screenAddress hook refuses an address. An error also refuses it.Screen addresses
Withdraw eventsThe same session.* events as a deposit. data.object.session.direction is withdraw.Events

See the withdraw flow.

Planning and quotes ​

FeatureWhat it doesRead more
Pathway plannerA pure function builds every one-leg and two-leg pathway to the destinationThe planner algorithm
Method groupsMethods show as Connected, Most popular, Other options and Not availableGrouping
Country rulesRegion policy per leg, local methods first per countryMethod country rules
Global payment methodsSEPA Instant, Faster Payments, pay by bank, iDEAL, Bancontact, BLIK, SPEI, PSE, Khipu, Interac, IMPS, PayID, M-Pesa and mobile money, next to cards, Apple Pay, Google Pay, ACH, Pix and UPIPayment methods
PolicymaxLegs, regions, methodPriority, disabledMethods, hopPreferencecreateOpenRamp
Per-session method listallowedMethods hides and blocks other methodsSessions
Amount boundsA min and a max per session, enforced on quotes and on selectAmount bounds
Live catalogsAn adapter can refine its legs per user (methods, limits, assets)Writing an adapter
Parallel quotesUp to 5 pathways per method, each with a timeout. Failures are fields, not exceptions.Quoting
RankingBest price and fastest badgesQuoting
Exact outputQuote the amount that arrives (amountSide: 'destination') on one-leg pathwaysPOST /sessions/:id/quotes

Flow and UI ​

FeatureWhat it doesRead more
Server-driven stepsThe server sends a Step. The modal renders it. A new provider needs no UI release.Flow state machine
Ten surfacesREDIRECT, IFRAME, PROVIDER_SDK, QR, DEEPLINK, BANK_FIELDS, DEPOSIT_ADDRESS, WALLET_TX, OTP, FORMSurfaces
Popup-safe start URLsProvider checkouts open from a signed URL on your originPopup-safe start URLs
Iframe message protocolProvider pages can signal completion. The modal checks origin and source.Iframe flow, IFRAME
Provider SDK renderersMount a provider's own UI, for example the Stripe onramp element, or drive a headless flow (Stripe Link)PROVIDER_SDK, Stripe, Stripe Link
Restart"Choose another method" leaves a payment that waits for the userTransitions
Errors as fieldsOpenRampError with a code, a safe message and a recovery hintErrors as fields
Web component<openramp-modal> in Shadow DOM, for any framework or noneWeb component, @openrampkit/web
Embedded modeRender the widget inline in your pageEmbedded mode
Framework wrappersReact, Vue, Svelte and SolidReact, Vue, Svelte, Solid
Headless controllerDrive DepositController with your own UI@openrampkit/client, Custom UIs
ThemesLight, dark and auto themes, appearance options, CSS variables and partsTheming
LanguagesEnglish, Vietnamese, Indonesian, Thai, Malay and Filipino. English unless the app sets a locale.Languages
HistoryThe user's past deposits and withdrawals in the widget, with status and explorer links (server option history)History
Browser eventsmodal.opened, method.selected, quote.selected, step.changed and more, for analyticsBrowser events

Wallets and chains ​

FeatureWhat it doesRead more
EVM walletswagmiWallet() sends transactions and reads balancesWallets (wagmi)
Solana walletssolanaWallet() over Wallet StandardSolana
Several walletscombineWallets() joins an EVM and a Solana walletSolana
Solana destinationsDeposits to SOL and SPL tokensSend deposits to Solana
TempoChain and token support for TempoTempo
On-chain verificationSame-chain payments are checked on chain before a leg countsSecurity

Server ​

FeatureWhat it doesRead more
One web-standard handlerRequest to Response. Runs on Workers, Vercel, Node, Bun and Deno.@openrampkit/server, HTTP routes
Sessions and client secretsThe backend fixes user and destination. The browser gets a scoped secret.Sessions and security, flow
Browser-created sessionsOptional POST /sessions through your authorize hookBrowser-created sessions
Provider webhooks inPOST /webhooks/:adapterId, verified by the adapterProvider webhooks
Signed webhooks outHMAC-signed events to your backend, with an outbox and retriesWebhooks to your backend, flow
Background sweepRetries webhooks, refreshes payments, expires sessionsBackground sweep, flow
Pay linksA signed, expiring page where a person pays one sessionPOST /sessions/:id/pay-link, GET /pay/:credential
IdempotencyIdempotency-Key on select and transitionsIdempotency
Rate limitsProvider calls per session per minuteLimits
Health checksGET /health, and a deep check with the tasks tokenGET /health
CORSAllow other origins to call the handlerCORS
Session storesDurable Objects, Redis, Cloudflare KV, memory, or your ownSession stores
Test and live modelivemode on sessions and eventsEvents

Agents ​

FeatureWhat it doesRead more
MCP serverTools for an AI agent: list_payment_methods, get_quotes, create_deposit_session, create_withdraw_session, get_session_status, wait_for_completionAgents (MCP)
GuardrailsAllowed destinations and amount caps that the agent cannot changeGuardrails
Transportsstdio (Claude Desktop, Claude Code) and Streamable HTTPConnect an agent

See the agent flow.

Adapters and testing ​

FeatureWhat it doesRead more
14 provider adapters and a mockRelay, LI.FI, Swapped, Xendit, Coinbase, Transak, MoonPay, Stripe, Stripe Link, Meld, Onramper, Bridge, Binance, Peer, MockAdapters
createAdapter()Write an adapter for any providerWriting an adapter, @openrampkit/adapter
Conformance kitrunAdapterConformance() checks an adapter's shape, quotes, steps and webhooks@openrampkit/adapter
Mock adapter and mock walletTest every flow with no provider accountTesting with mocks
Anvil testA real local chain test for wallet paymentsReal-chain test with Anvil
ExamplesNext.js, Cloudflare Worker, static playground, agentExamples, Live demo

MIT licensed