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.
Every wallet has swaps. Yours can earn on each one, price every venue at once, and move real Bitcoin.
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.
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.
Route through a single DEX and your users take whatever it quotes. On a bad day that gap is screenshot-able.
If your provider bills you per swap, the feature is a cost instead of revenue.
An embedded swap that asks the user to connect again breaks the one thing a wallet is supposed to own.
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.
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
},
});Real Bitcoin in and out, either direction, settled as the canonical asset. Never a wrapped stand-in.
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.
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.
Colours, radius and font on a config object. It looks like your wallet, not like ours.
Add a webhookUrl to your key and we tell your service when a swap settles, refunds or fails. No polling loop.
Run the whole flow with no real funds and no metering before you ship it.
Not a screenshot. This is app.ravn.exchange/widget/v1 in an iframe, exactly as it would sit in your app.
The widget above is the real one, running live. It is the same iframe you would embed.