Developer overview
Everything you need to integrate MONEI into your website or app. Pick an integration approach, then wire up the API, client SDK, and webhooks.
Choose your integration
- Hosted Payment Page — redirect to the MONEI Hosted Payment Page with every payment method, almost no frontend code.
- Custom checkout — collect payment details on your own page with MONEI.js Components.
- Payments API — create and manage payments server-to-server.
Core building blocks
- REST API reference — every endpoint, with request and response schemas.
- GraphQL API — for MONEI Connect partners.
- MONEI.js — the client library for Components and .
- Webhooks — receive the authoritative payment status on your server.
- Channel tokenization — reuse saved payment methods across channels.
- Documentation for AI agents — read any page as Markdown and query the docs search API.
Before you go live
Test and go live — use test cards, Bizum, and PayPal to validate your integration, then switch to live keys.
Common questions
Which integration should I pick?
If you want the least work, use the Hosted Payment Page. If you need the checkout to live on your own page, use a custom checkout. Use the API directly only when you process server-to-server.
How do I confirm a payment really succeeded?
Always rely on the webhook sent to your server — never the client-side result alone.
Can I send an idempotency key so a retry doesn't charge twice?
No. Payment-creation endpoints accept no idempotency key, and idempotency is not uniform across the API — SEPA Request to Pay (a closed beta, not a payment method merchants can use) is the exception, where the resourceId you choose acts as one. Creating a payment is not idempotent — if a request times out and you send it again, you get a second payment. Send your own orderId on every payment, then look the order up before you retry, and treat the webhook or a payment lookup as the source of truth rather than the response you missed.
Actions on an existing payment are safer: repeating the same capture, cancel, or refund on the same payment is collapsed rather than applied twice, so a refund retried immediately after a timeout does not refund twice. That guard is short-lived, so don't rely on it minutes later — check the payment first.