Skip to content

Add DFX fiat ramp provider#6061

Open
j0ntz wants to merge 2 commits into
developfrom
jon/integrate-dfx-ramp
Open

Add DFX fiat ramp provider#6061
j0ntz wants to merge 2 commits 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 new SEPA fiat buy/sell ramp (no swap), using the new src/plugins/ramps/ external-ramp pattern (same shape as bitsofgold/libertyx): no quoting API, the user is deeplinked into the DFX web widget to complete the buy/sell.

What this adds:

  • src/plugins/ramps/dfx/dfxRampPlugin.ts and dfxRampTypes.ts — the DFX external ramp factory plus its init-options cleaner.
  • Registers dfx in allRampPlugins.ts.
  • Adds the dfx GUI plugin (baseUri: https://app.dfx.swiss, camera permission for QR scanning) and wires dfx into RAMP_PLUGIN_INITS in envConfig.ts (default undefined, i.e. off until enabled via env/info-server).

Support matrix: sepa payment type, EUR/CHF, SEPA region plus Switzerland and Liechtenstein, for Bitcoin, Ethereum, Arbitrum, Optimism, Polygon, Base, BNB Smart Chain, Solana and Monero; buy → /buy, sell → /sell.

A second commit adds testIDs to the ramp create scene's fiat/crypto dropdown buttons so UI tests can drive the selectors by id.

Testing: drove the Buy flow on the iOS simulator with region Germany / fiat EUR / Bitcoin. DFX surfaces as the "SEPA Bank Transfer" payment method ("Powered By: DFX", settlement 1-3 days), and selecting it opens the DFX web widget (app.dfx.swiss). Screenshots attached. tsc --noEmit, eslint and the jest suite pass.

Asana task


Note

Low Risk
New optional ramp provider behind env init config; no changes to auth, payments, or existing ramp quoting flows beyond registration and UI test hooks.

Overview
Adds DFX as a new SEPA fiat buy/sell ramp using the same external-ramp pattern as Bits of Gold and LibertyX: no in-app quoting; users are deeplinked into the DFX web widget at https://app.dfx.swiss (/buy or /sell).

Wiring includes a new dfx GUI plugin (camera permission for QR), registration in allRampPlugins.ts, and optional RAMP_PLUGIN_INITS.dfx in envConfig.ts (off until enabled via env/info-server). Support is SEPA for EUR/CHF in SEPA countries plus CH/LI, with settlement 1–3 days, for BTC, ETH, several EVM L2s, BSC, Solana, and Monero. Init options allow partnerIcon and a wallet identifier for white-label builds.

Also adds testIDs rampFiatDropdown and rampCryptoDropdown on RampCreateScene dropdown buttons for UI automation.

Reviewed by Cursor Bugbot for commit ee8d927. Bugbot is set up for automated code reviews on this repo. Configure here.

@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 from fc8ddf3 to a096719 Compare June 25, 2026 23:36
j0ntz added 2 commits June 25, 2026 16: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, adds its GUI
plugin entry and env init option, and supports EUR/CHF across the SEPA region
plus Switzerland and Liechtenstein for BTC, ETH and major EVM chains, Solana
and Monero.
Add testIDs to the fiat and crypto dropdown buttons in the ramp create scene
so UI tests can drive the fiat/crypto selectors by id.
@j0ntz j0ntz force-pushed the jon/integrate-dfx-ramp branch from a096719 to ee8d927 Compare June 25, 2026 23:36
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