Skip to content

Add DFX fiat ramp provider - #6061

Open
j0ntz wants to merge 1 commit into
developfrom
jon/integrate-dfx-ramp
Open

j0ntz wants to merge 1 commit into
developfrom
jon/integrate-dfx-ramp

Conversation

@j0ntz

@j0ntz j0ntz commented Jun 25, 2026 •

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

none

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

Description

Integrate DFX (API, docs) as a SEPA fiat buy/sell ramp (no swap), using the src/plugins/ramps/ external-ramp pattern (same shape as bitsofgold and libertyx): there is no quoting API, so the user is deeplinked into the DFX web widget to complete the buy or sell.

What this adds:

  • src/plugins/ramps/dfx/dfxRampPlugin.ts and dfxRampTypes.ts: the DFX external ramp factory and its init-options cleaner.
  • dfx registered in allRampPlugins.ts.
  • The dfx GUI plugin (baseUri: https://app.dfx.swiss, camera permission for QR scanning).
  • dfx added to the preferProviders id list in src/docs/ramps-deeplink-provider-priority.md.

Enabling it: like every ramp plugin, DFX is off until the rampPlugins map carries it, rampPlugins.dfx = true in config.json and rampPlugins.dfx = {} in keys.json. DFX needs no API key; the optional init fields are partnerIcon and wallet (the partner identifier DFX reads from the URL, default Edge).

Support matrix: sepa payment type, EUR and CHF, for Bitcoin, Ethereum, Arbitrum, Optimism, Polygon, Base, BNB Smart Chain, Solana and Monero (mainnet coins only). Buy opens /buy, sell opens /sell. Countries are the EEA members plus Switzerland where DFX's country list (api.dfx.swiss/v1/country) allows IBAN, bank and KYC: 30 countries, with Iceland and Norway included and Bulgaria left out because DFX disallows it.

Rebased onto current develop. The earlier envConfig.ts hunk is gone because that file was removed by the env.json split, and the earlier testID commit dropped out because the same testIDs already landed upstream.

Testing: drove Buy (500 EUR) and Sell (100 EUR) on the iOS simulator with region Germany, fiat EUR and a Bitcoin wallet. In both directions DFX appears as the "SEPA Bank Transfer" payment method ("Powered By: DFX", settlement 1 to 3 days), and selecting it opens the DFX web widget. Screenshots attached. tsc --noEmit, eslint and the jest suite pass.

Asana task

Test evidence

3819441
Add DFX fiat ramp provider
2026-10-01

1. buy dfx sepa option

2. buy dfx webview

3. sell dfx sepa option

4. sell dfx webview

@j0ntz

j0ntz commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (iOS sim — DFX buy flow)

agent proof 1216018838183206 01 buy germany eur

agent proof 1216018838183206 01 buy germany eur

agent proof 1216018838183206 02 dfx sepa provider listed

agent proof 1216018838183206 02 dfx sepa provider listed

agent proof 1216018838183206 03 dfx webview opened

agent proof 1216018838183206 03 dfx webview opened

Captured by the agent's in-app test run (build-and-test).

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit fc8ddf3. Configure here.

Comment thread src/plugins/ramps/dfx/dfxRampPlugin.ts Outdated
@j0ntz
j0ntz force-pushed the jon/integrate-dfx-ramp branch 2 times, most recently from a096719 to ee8d927 Compare June 25, 2026 23:36
Integrate DFX (app.dfx.swiss) as a SEPA-based buy/sell fiat ramp using the
external ramp webview pattern. Registers the dfx ramp plugin and adds its
GUI plugin entry. Like every ramp plugin it is enabled through the
rampPlugins map (config.json plus keys.json). Supports EUR/CHF across the
SEPA region plus Switzerland and Liechtenstein for BTC, ETH and major EVM
chains, Solana and Monero.
@j0ntz
j0ntz force-pushed the jon/integrate-dfx-ramp branch from ee8d927 to 3819441 Compare October 1, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant