Send money across borders instantly using USDC on Stellar. Built for the corridors the banks forgot.
Paywift is a mobile-first cross-border payment application that uses Stellar's native speed and USDC to move money between countries in seconds — not days — at a fraction of traditional wire fees.
Stellar was purpose-built for global payments. Paywift is the consumer layer that makes that power accessible to anyone with a smartphone.
Sending $200 from Lagos to London today: 3–5 business days, $15–25 in fees, opaque FX rates with hidden markups, and zero transparency until it (hopefully) arrives. The $700 billion global remittance market still runs on infrastructure built in the 1970s.
For the 281 million international migrants who send money home, this isn't a fintech inconvenience — it's a tax on survival.
Paywift settles on the Stellar network. Transactions confirm in 3–5 seconds. USDC eliminates FX volatility for corridor transfers. Fees are flat, transparent, and published before you send.
| Metric | Traditional Wire | Paywift |
|---|---|---|
| Settlement time | 3–5 business days | ~5 seconds |
| Average fee | $15–25 | $0.01 + 0.5% |
| FX transparency | Hidden markup | On-screen before send |
| Receipt | Email (maybe) | On-chain, permanent |
| Weekend availability | No | Yes |
Send USDC to a phone number, email, or Stellar address. Recipients without a wallet get a claim link that auto-creates one on first use.
Generate a payment QR that anyone with Paywift can scan to send — no address copying, no errors. Perfect for merchants, freelancers, and person-to-person payments.
Every send screen shows the exact fee, the exact exchange rate (if applicable), and the exact amount the recipient will receive — before you confirm. No surprises on arrival.
Full on-chain transaction history with memo support. Every payment is a permanent, verifiable Stellar transaction — your own immutable record.
Paywift integrates with regional ramp providers so senders can fund from local bank accounts or mobile money, and recipients can cash out to local currency or mobile wallets.
Users see amounts in their local currency with live conversion rates. The underlying settlement is always USDC on Stellar — local currency display is a UX layer, not a different asset.
| From | To | Typical Arrival |
|---|---|---|
| Nigeria (NGN) | United Kingdom (GBP) | < 30 seconds |
| Mexico (MXN) | United States (USD) | < 30 seconds |
| Philippines (PHP) | United States (USD) | < 30 seconds |
| Kenya (KES) | United Kingdom (GBP) | < 30 seconds |
| Ghana (GHS) | Canada (CAD) | < 30 seconds |
More corridors are added continuously as ramp integrations are completed. All corridors share the same Stellar settlement layer.
Sender App Stellar Network Recipient App
────────────────── ────────────── ─────────────────
User inputs amount → USDC transfer on Stellar → Recipient wallet credited
Ramp converts NGN → Settles in ~5 seconds → Ramp converts to GBP
to USDC → Fee: $0.00001 on-chain → Bank/mobile payout
- Settlement Layer: Stellar (USDC native)
- Wallet Management: Freighter SDK + custodial fallback for new users
- Ramp Integrations: Bitso (MX/US), Yellow Card (NG/GH/KE), GCash (PH)
- Frontend: React Native (iOS + Android)
- Backend: Node.js + Express, PostgreSQL for off-chain user data
- Notifications: Push alerts on send confirmation and receipt
import { StellarSdk } from 'stellar-sdk';
const server = new StellarSdk.Horizon.Server('https://horizon.stellar.org');
// Build a USDC payment transaction
async function sendUSDC(senderKeypair, recipientAddress, amount) {
const account = await server.loadAccount(senderKeypair.publicKey());
const transaction = new StellarSdk.TransactionBuilder(account, {
fee: await server.fetchBaseFee(),
networkPassphrase: StellarSdk.Networks.PUBLIC,
})
.addOperation(
StellarSdk.Operation.payment({
destination: recipientAddress,
asset: new StellarSdk.Asset('USDC', 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN'),
amount: amount.toString(),
})
)
.addMemo(StellarSdk.Memo.text('Paywift transfer'))
.setTimeout(30)
.build();
transaction.sign(senderKeypair);
return await server.submitTransaction(transaction);
}Paywift implements Stellar Ecosystem Proposals for maximum interoperability:
| SEP | Description | Status |
|---|---|---|
| SEP-1 | Stellar TOML | ✅ Implemented |
| SEP-6 | Deposit/Withdrawal API | ✅ Implemented |
| SEP-10 | Stellar Web Authentication | ✅ Implemented |
| SEP-24 | Hosted Deposit/Withdrawal | ✅ Implemented |
| SEP-31 | Cross-Border Payments | 🔄 In Progress |
git clone https://github.com/your-org/paywift
cd paywift
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Add your Stellar keypair and ramp API keys
# Start local development server
npm run dev
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Run tests
npm testSTELLAR_NETWORK=testnet
STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
USDC_ISSUER=GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
RAMP_PROVIDER_API_KEY=your_key_here
PUSH_NOTIFICATION_KEY=your_key_herev1.0 — Beta (Current)
- USDC send/receive on Stellar
- QR payment support
- Nigeria → UK, Mexico → US corridors
- Transaction history
v1.1
- Philippines → US corridor
- Multi-language support (Spanish, Tagalog, Yoruba)
- Biometric authentication
- Scheduled/recurring payments
v2.0
- Merchant payment terminals (QR-based)
- Group payments and bill splitting
- Savings pockets (yield via Vaultex integration)
- Stellar-native debit card partnership
Paywift is community-built and welcomes contributors across mobile dev, backend, Stellar integration, and regional ramp partnerships.
Good first issues are labeled in the tracker. See CONTRIBUTING.md for setup instructions and contribution flow.
MIT © Paywift Contributors
Paywift is not a bank. USDC is issued by Circle. Paywift does not hold user funds — all balances are on-chain.