Swaps your users do not leave for

Every wallet has swaps. Yours can earn on each one, price every venue at once, and move real Bitcoin.

17Chains15 EVM + BTC + SOL17Routing venuesRaced in parallel16/17Healthy nowDegraded venue0Fees for usersPermanently

Do not lose them at the swap

A wallet loses its user the moment it cannot get them the asset they want. They leave for an exchange and some never come back. One integration covers native BTC, native Solana and 15 EVM chains, and settles the real asset every time.

swapyour userYOUR FEE0 to 100 bps · you set it60%to you40%to ravn

Where wallet swaps fall down

Bitcoin is a wall

Hand back wBTC or cbBTC and the user did not get Bitcoin. Showing "BTC" that is not Bitcoin is a support ticket, not a feature.

One venue, one price

Route through a single DEX and your users take whatever it quotes. On a bad day that gap is screenshot-able.

Swaps cost you money

If your provider bills you per swap, the feature is a cost instead of revenue.

A second wallet prompt

An embedded swap that asks the user to connect again breaks the one thing a wallet is supposed to own.

One iframe, your wallet

Drop the hosted widget on a page and bridge it to the connection the user already made with you. No second wallet prompt, no second signing surface.

widget.tsno key
import { createRavnWidgetBridge } from '@ravnexchange/widget-connector';

const bridge = createRavnWidgetBridge({
  iframe: document.querySelector('#ravn'),
  // reuse the connection the user already made with you
  provider: yourExistingProvider,
  config: {
    primaryColor:  '#F7931A',
    background:    '#0A0A0A',
    textPrimary:   '#F0EDE6',
    borderRadius:  0,
    fontFamily:    yourFontStack,   // whatever your app already loads
  },
});

Ten theming fields, no CSS overrides. Try your palette on it first at app.ravn.exchange/widget/playground.

What you get

Native BTC

Real Bitcoin in and out, either direction, settled as the canonical asset. Never a wrapped stand-in.

Your fee

Set your fee once on your key, up to 1%. We collect it, keep 40%, and pay you the rest. Your users pay nothing extra to us.

No key to ship

Every endpoint works with no key. The widget calls the API straight from the page, with no server of yours in between and no secret in your bundle.

Ten theming fields

Colours, radius and font on a config object. It looks like your wallet, not like ours.

Settlement webhooks

Add a webhookUrl to your key and we tell your service when a swap settles, refunds or fails. No polling loop.

Sandbox

Run the whole flow with no real funds and no metering before you ship it.

The widget, live

Not a screenshot. This is app.ravn.exchange/widget/v1 in an iframe, exactly as it would sit in your app.

Preview · live quotes · swaps run in the app

Put it on your own page

The widget above is the real one, running live. It is the same iframe you would embed.