How to accept a payment — choose your integration
Four ways to accept a payment with Wajub — Hosted Checkout, Embedded Components, Payment Links, and direct API. Choose the right one for your use case.
Wajub offers four integration modes for accepting payments. They differ in how much control you have over the UI and how much code you need to write.
Decision matrix
| Mode | Who builds the UI | Code required | Customization | Best for |
|---|---|---|---|---|
| Hosted Checkout | Wajub | Minimal (redirect) | Logo + colors | Fastest integration, any framework |
| Embedded Components | Wajub (inside your page) | Moderate | Full theme control | Custom branded checkout on your site |
| Payment Links | Wajub | Zero | Logo + colors | No-code, shareable links |
| API Direct | You | Full | Total | Custom flows, native apps |
Option 1 — Hosted Checkout (recommended for most)
Your server creates a payment and redirects the customer to a Wajub-hosted payment page
(pay.wajub.com). After payment, Wajub redirects back to your callback URL.
Effort: ~30 minutes. One server route + one return handler.
Your server → POST /payments → authorization_url → redirect customer
Customer pays on pay.wajub.com
Wajub → redirect to callback + send webhook
Your server → verify GET /payments/{id} → fulfillOption 2 — Embedded Components
Your server creates the session; the browser renders the full checkout UI inline on your
page using @wajub/js (or the React / Vue / Svelte wrappers). The customer never leaves
your domain.
Effort: ~2 hours. One server route + frontend SDK integration.
Your server → POST /payments → authorization_token → pass to frontend
Frontend → wajub.mount('#checkout', { sessionId: token }) → checkout renders
Customer pays inline
Webhook → your server → fulfillBest of both worlds
Embedded Components give you the full Wajub checkout (Mobile Money, cards, OTP, 3DS) without building any payment UI yourself — just a branded wrapper.
Option 3 — Payment Links (no code)
Create a link from the Dashboard or via the API. Share it by email, SMS, or WhatsApp. No server code required.
Effort: 5 minutes. Dashboard only, or one API call.
When to use
Payment Links are ideal for invoicing individual customers, collecting event fees, or any scenario where you don't have a server-rendered checkout flow.
Related pages
Option 4 — API Direct
Call POST /payments from your backend, receive authorization_url, and handle the full
redirect + return flow manually. Use this when you need full control — native mobile app,
custom checkout engine, or a framework not supported by the Components SDK.
Effort: ~1 hour. Full flexibility, full responsibility.
Related pages
Summary
Speed of integration: Payment Links > Hosted Checkout > Embedded > API Direct
UI control: API Direct > Embedded > Hosted Checkout ≈ Payment Links
Framework agnostic: Payment Links, Hosted Checkout, API Direct ✓
Embedded: React, Vue, Svelte, or vanilla JSStill unsure? Start with Hosted Checkout — you can migrate to Embedded Components later without changing your server-side code.
Was this page helpful?