Introduction
Phoenix Pay is a multi-tenant payment gateway that abstracts PSP integrations, letting you integrate once and route payments to any provider.
Phoenix Pay is designed for machine-to-machine communication. There is no user-facing UI — your backend calls the Phoenix Pay API directly using an API key pair from the admin dashboard.
Why Phoenix Pay?
Without Phoenix Pay, every product in the ecosystem must independently integrate with each PSP — handling credentials, webhooks, status mapping, retries, and idempotency. Phoenix Pay centralizes all of this.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Phoenix Shop│────▶│ │────▶│ NOWPayments │
└─────────────┘ │ │ │ (crypto) │
│ Phoenix Pay │ └──────────────┘
┌─────────────┐ │ │ ┌──────────────┐
│ ET Lottery │────▶│ Gateway │────▶│ Chapa │
└─────────────┘ │ │ │ (fiat ETB) │
│ │ └──────────────┘
┌─────────────┐ │ │ ┌──────────────┐
│ Your App │────▶│ │────▶│ Future PSP │
└─────────────┘ └──────────────┘ └──────────────┘Key Features
Multi-Tenant by Design
Each organization is a tenant with isolated PSP credentials, callback URLs, and payment data. Platform operators manage all tenants; tenants see only their own data.
Channel-Based Routing
Choose how to accept or send money — redirect checkout, crypto address, USSD push, OTP, or direct payout. Phoenix Pay routes to the right PSP automatically.
Cryptographic Webhooks
Outbound webhooks are signed with Ed25519 asymmetric signatures. Verify authenticity using the public key endpoint — no shared secrets to manage.
Resilient by Default
Background status sync polls pending payments every 5 minutes, catching any missed webhooks. Combined with idempotent state transitions, no payment update is ever lost.
Deposits and Withdrawals
Accept payments via crypto (NOWPayments) or fiat (Chapa) and send payouts to bank accounts or mobile money — all from day one.
Built for Scale
Designed for 100M transactions/day with time-partitioned tables, read replicas, ETS caching, and stateless horizontal scaling.
Supported PSPs
| PSP | Type | Currencies | Deposit Channels | Withdrawal Channels |
|---|---|---|---|---|
| NOWPayments | Crypto | USDT, BTC, ETH, LTC, and 100+ cryptocurrencies | crypto_address | — |
| Chapa | Fiat | ETB (Ethiopian Birr) | checkout, ussd_push, otp | direct_payout |