Skip to main content

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

Core building blocks

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.