Start with a link.
Grow to the API.
Accept payments from every country, get payouts in any currency — to any account, card or wallet. Take your first payment with a no-code link today; the full REST API is waiting when you outgrow it. Nothing gets rewritten along the way.
payment.paid
Four steps. One engine.
Integration is not a month of work. Start where it's easy, climb when the business asks for it — everything you build stays with you.
Payment link
Create a link in the dashboard and send it to the buyer — in a chat, an email or under a video. You can sell today.
Dynamic QR
A fresh QR for every payment: the buyer scans and pays from their phone, the way they're used to. No frontend to host.
Embedded widget
checkout.js opens the payment right on your page — the buyer never leaves your site or game.
REST API
Payments, payouts, balances and webhooks under your full control — host to host.
One engine underneath: same keys, same payments, same dashboard on every step. Climbing up never means rewriting.
A payment is one POST.
Amounts are integers in minor units, a retried request never creates a second payment, every webhook is signed. The things that usually hurt in payment APIs are already solved here.
-
No double charges
Idempotency-Key on create and webhook dedup by event id: a retry returns the original result, never a new payment.
-
Not a cent is lost
amountMinor is an integer count of the currency's minor units. No floats, no rounding: 1 000 000 = 10 000.00 ₽.
-
Webhooks you can trust
Every delivery is signed — verify on the raw body. Duplicate and late events can't corrupt a payment's status.
-
Sandbox equals live
Same request shape in both worlds. Debug on test keys, switch the key prefix — and you're taking real money.
# create a payment — amount in integer minor units curl https://app.freeconomy.shop/api/v1/payments \ -H "Authorization: Bearer sk_test_9f2b…" \ -H "Idempotency-Key: order_10482" \ -H "Content-Type: application/json" \ -d '{ "amountMinor": 1000000, "currency": "RUB", "method": "sbp" }' # → 201 Created { "id": "pay_3Kd9…", "status": "pending", "amountMinor": 1000000, "currency": "RUB" } # the buyer pays → a signed webhook: payment.paid
Six endpoints do all the work.
The version lives in the path, so nothing breaks without your say-so. Bearer auth on every call, amounts in integer minor units.
Create a payment. Idempotency-Key header required.
Issue the QR for a payment — show it to the buyer.
List payments with filters and cursor paging.
One payment and its current status.
Create a payout: the amount and where it goes — account, card or wallet.
Available and pending balance per currency.
Four events tell the whole story.
Each terminal has its own webhook URL and signing secret. Verify the signature on the raw body; the dashboard has a tester, one-click replay and a full delivery log.
Money received and confirmed.
Payment failed or expired unpaid.
A confirmed payment was returned to the buyer.
Your payout reached its account, card or wallet.
Take your first payment today.
Sandbox keys are instant and free — no calls, no waiting. When you're ready for real money, the check takes a couple of minutes and a real person walks you through it.
Services are provided to onboarded clients after a KYC/KYB check, through licensed partners; availability varies by jurisdiction. This page is informational and not an offer of financial services.