| Provider | Region | Strengths | Sovereign Fit |
|---|---|---|---|
| Unit | USA | All-in-one · accounts/cards/lending/payments | Sponsor bank model · BDET as program manager · KYC done by sponsor |
| Stripe Treasury | USA + EU | Platform-first · embedded ACH/SEPA/cards | Strong but requires Stripe platform commit · less custom |
| Treasury Prime | USA | Multi-bank (route to best fit per use case) | Best for sovereign-allied bank partnerships · diversifies counterparty risk |
| Synctera | USA + CA | Fintech-bank matchmaking + infra | Easier path to indigenous-owned bank partners |
| Galileo | USA + LatAm | Card processing · payment rails · 24/7 | Strong LatAm presence · Latam-allied opportunities |
| Solaris | EU (Germany) | Full German banking license · EU passport | Sovereign-friendly · German banking regulator more crypto-neutral |
| Swan | EU | SEPA accounts · IBAN issuance | For EU citizen INKG holders · clean SEPA rails |
| Griffin | UK | FCA-licensed bank · embedded | UK regulated · post-Brexit independent |
Choose ONE provider for pilot. Recommendation: Treasury Prime (multi-bank flexibility) OR Synctera (indigenous bank partnership). Start with 100-500 citizens INKG · KYC via INKG sovereign (sponsor bank accepts sovereign ID if pre-negotiated). Issue virtual cards via Lithic. Money flow: WUSD → bank account → card · 1:1.
Add second BaaS (geographic diversification). EU: Solaris or Swan. Add physical cards via Marqeta. Citizens spend WUSD anywhere Visa/MC accepted. Off-ramp: deposits to card auto-convert to WUSD on Chain 777777.
Partner with actual indigenous-owned or sovereign-friendly bank (e.g., Asia Nexus expansion · or new partnership). BDET becomes program manager rather than fintech-on-someone-elses-rails. Full sovereign treaty operationalized.
// Citizen sovereign onboarding via Unit BaaS
const Unit = require("@unit-finance/unit-node-sdk");
const unit = new Unit({ token: process.env.UNIT_API_KEY });
async function onboardCitizen(citizenInkg) {
// 1. Verify citizen has INKG sovereign ID
const sovereignId = await db.query("SELECT * FROM citizens WHERE inkg_id=?", [citizenInkg.id]);
if (!sovereignId.length) throw new Error("Not INKG verified");
// 2. Create individual customer in Unit (BaaS handles KYC under their license)
const customer = await unit.customers.create({
type: "individualCustomer",
attributes: { fullName: citizenInkg.fullName, ... }
});
// 3. Open deposit account
const account = await unit.accounts.create({
type: "depositAccount",
relationships: { customer: { data: { type: "customer", id: customer.id } } }
});
// 4. Issue virtual card linked to account
const card = await unit.cards.create({
type: "individualVirtualDebitCard",
relationships: { account: { data: { type: "depositAccount", id: account.id } } }
});
// 5. Link to BDET wallet · 1:1 WUSD ↔ account USD
await db.query("INSERT INTO baas_bridge (inkg_id, unit_account_id, bdet_wallet) VALUES (?,?,?)",
[citizenInkg.id, account.id, citizenInkg.wallet]);
}