One platform. The full life of money.
Most stacks bolt a payment gateway to a payout vendor to an FX desk to a spreadsheet. Lumina is the four of them as one system — every product reads and writes the same balance, the same ledger, the same API.
Accept everything, everywhere.
Cards, bank transfers, wallets, and the local methods that decide your conversion rate in each market. One integration, one settlement currency of your choice.
$ curl https://api.lumina.dev/v1/charges \
-u sk_live_…: \
-d amount=12000 \
-d currency=eur \
-d method=card{
"id": "ch_9fKb2Lq",
"status": "authorized",
"net": 11964
}Pay thousands like you’d pay one.
Mass payouts to sellers, creators, and suppliers in 135 currencies. One API call carries the whole batch; each leg settles on the fastest rail available to it.
| Aurelia Studio | sepa_instant | €4,210.00 | sent |
| Kojima Parts K.K. | zengin | ¥812,400 | sent |
| Beira Logistics | pix | R$ 12,940.55 | sent |
| Hartley & Co | fps | £2,380.00 | queued |
| Mirko Ferro | sepa_instant | €640.00 | queued |
await lumina.payouts.createBatch({
source: 'acct_main_eur',
items: sellers.map(s => ({
destination: s.iban,
amount: s.balanceDue,
currency: s.currency,
})),
});
// 1,847 legs · 14 rails · one callMid-market, plus one number.
Every conversion is priced at the live mid-market rate plus a fixed margin you can read on a single line. No spreads that widen on Fridays.
| Pair | Mid | Your rate | Margin |
|---|---|---|---|
| EUR / USD | 1.0842 | 1.0815 | 25 bps |
| EUR / GBP | 0.8531 | 0.8510 | 25 bps |
| USD / JPY | 156.24 | 155.85 | 25 bps |
| EUR / BRL | 5.9806 | 5.9657 | 25 bps |
| EUR / PLN | 4.2811 | 4.2704 | 25 bps |
Indicative rates. Live quotes stream over the API and hold for 30 seconds.
A ledger that closes itself.
Hold balances in 31 currencies with local account details in 12. Every charge, payout, and conversion writes a double-entry record the moment it happens.
| Entry | Description | Debit | Credit | Balance |
|---|---|---|---|---|
| le_2vN8xR | charge ch_9fKb2Lq settled | €119.64 | €1,284,902.44 | |
| le_2vN8xQ | payout po_5cD1mT funded | €4,210.00 | €1,284,782.80 | |
| le_2vN8xP | fx fx_2Nv8xR eur→usd | €10,000.00 | €1,288,992.80 | |
| le_2vN8xN | charge ch_9fKb1Xw settled | €1,236.28 | €1,298,992.80 |
How it fits together.
Four products as four stages of one money flow. A marketplace sale, start to finish.
A buyer pays
€120 arrives by iDEAL from a customer in Rotterdam. Authorized, routed, settled into your EUR balance.
{
"id": "ch_3bQv8Nm",
"method": "ideal",
"amount": 12000,
"currency": "eur",
"balance": "acct_main_eur"
}The balance holds it
The ledger splits the sale: your commission stays, the seller’s share is reserved against payout.
{
"commission": {
"amount": 1800, "to": "acct_main_eur"
},
"seller_share": {
"amount": 10200, "to": "reserved"
}
}It changes currency
Your seller invoices in dollars. The reserved share converts at mid-market plus 25 bps, quoted before it moves.
{
"sell": "€102.00",
"mid": 1.0842,
"margin_bps": 25,
"buy": "$110.31",
"held_for": "30s"
}The seller is paid
Funds land in their account in seconds over the fastest local rail. The ledger entry references every hop.
{
"id": "po_8wXc3Rd",
"rail": "fedwire_instant",
"amount": "$110.31",
"trace": ["ch_3bQv8Nm", "fx_7pL2kV"]
}{
"id": "ch_3bQv8Nm",
"method": "ideal",
"amount": 12000,
"currency": "eur",
"balance": "acct_main_eur"
}{
"commission": {
"amount": 1800, "to": "acct_main_eur"
},
"seller_share": {
"amount": 10200, "to": "reserved"
}
}{
"sell": "€102.00",
"mid": 1.0842,
"margin_bps": 25,
"buy": "$110.31",
"held_for": "30s"
}{
"id": "po_8wXc3Rd",
"rail": "fedwire_instant",
"amount": "$110.31",
"trace": ["ch_3bQv8Nm", "fx_7pL2kV"]
}What ships on each plan.
| Capability | Starter | Growth | Enterprise |
|---|---|---|---|
| Card & wallet acceptance | ✓ | ✓ | ✓ |
| Local payment methods | ✓ | ✓ | ✓ |
| Instant payouts | — | ✓ | ✓ |
| FX at mid + 25 bps | mid + 40 | ✓ | ✓ |
| Multi-currency accounts | 3 | 12 | 31 |
| Dedicated IBANs | — | ✓ | ✓ |
| SSO / SAML & audit log | — | — | ✓ |
| Named support engineer | — | — | ✓ |
Plays well with your stack.
Latest from the blog

Changelog: payout schedules, smarter retries
Everything we shipped this quarter, including EU data residency for all plans.

Inside the instant settlement rail
How a charge becomes spendable balance in 1.2 seconds — the pre-funding model, the risk math, and what we gave up to get there.

An FX engine that never sleeps
Streaming mid-market rates, one fixed margin, and the math of never being the worst price.

Webhooks you can actually trust
Exactly-once delivery is a lie. Here is the contract we offer instead, and why it holds.

The long tail of local payment methods
Pix, iDEAL, BLIK — why conversion lives and dies on the second checkout button.

Lumina is now a licensed EMI in the EEA
What our e-money license means for your funds, and what changes (nothing, for you).
Four products. One integration.
Send your first test charge today and watch it move through the whole flow.