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
Phoenix Pay is a standalone, multi-tenant payment gateway built for the Phoenix Games ecosystem. It abstracts payment service provider (PSP) integrations behind a single, unified API -- so your product integrates with Phoenix Pay once, and gains access to every supported PSP automatically.
Phoenix Pay is designed for machine-to-machine communication. There is no user-facing UI -- your backend calls the Phoenix Pay API directly using service account credentials from Zitadel.
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 Zitadel organization is a tenant with isolated PSP credentials, callback URLs, and payment data. Platform operators manage all tenants; tenants see only their own data.
Unified Payment API
One API for deposits and payouts across all PSPs. Phoenix Pay handles provider selection, request formatting, and response normalization 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 Payouts
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 | Flow |
|---|---|---|---|
| NOWPayments | Crypto | USDT, BTC, ETH, and 100+ cryptocurrencies | Address-based (pay to generated address) |
| Chapa | Fiat | ETB (Ethiopian Birr) | Redirect-based (checkout URL) + bank/mobile money payouts |