Backend: Keep your existing Stripe SDK by overriding the API base URL and using your PayGlobe secret key (sk_*). Frontend: Replace Stripe.js script source with our compatible adapter - your payment logic stays unchanged.
Same endpoints and JSON format as Stripe. Amounts use minor units (cents). Webhook signing uses X-PayGlobe-Signature (HMAC-SHA256) verified against the raw request body.
The word Mandala comes from Sanskrit, meaning "circle" or "center". In Hindu and Buddhist traditions, a mandala is a spiritual symbol representing the universe in harmony.
In our architecture, Mandala Gateway is the central hub that harmonizes external payment systems (Stripe ecosystem) with internal infrastructure (PayGlobe).
Single point of integration for Stripe-compatible merchants
Translates Stripe API calls to PayGlobe protocol
Bridges multiple payment flows with a single API
Drop-in replacement for Stripe SDK
"So, Mandala Gateway is not just a connector — it's a circle of integration. ⭕"
Same Stripe.js syntax you already know
Just swap the script source and API keys
Keep using official Stripe SDK. Just point it to Mandala with your PayGlobe secret key (sk_*):
Your payment logic stays unchanged
Load our Stripe-compatible adapter (configuration change):
Then use Stripe-like syntax (our adapter, not Stripe SDK):
Stripe() constructor (provided by our payglobe-stripe-adapter.js)stripe.confirmPayment(...) as beforeOnly change signature verification
Endpoint stays the same. Signature: header X-PayGlobe-Signature (HMAC-SHA256):
Tip: Accept both Stripe-Signature and X-PayGlobe-Signature during rollback.
Idempotency-Key, Stripe-Version, same ID prefixes (pi_, cs_), states, and errors (card_declined, etc.) — all identical to Stripe*.
Everything you need to migrate from Stripe*
Stripe*-compatible endpoints and JSON responses. Keep your existing Stripe* integration by overriding the API base and using your PayGlobe secret key (sk_*) on the server. Amounts use minor units (cents). Webhook signing uses X-PayGlobe-Signature (HMAC-SHA256) verified against the raw request body.
Use Idempotency-Key header to prevent duplicate payments. 24-hour TTL ensures reliability.
Built-in rate limiting with Bucket4j. 100 requests/minute default, configurable per merchant.
Reliable database storage with complete transaction history and real-time status tracking.
Automatic PayGlobe → Stripe* status conversion. APPROVED → succeeded, etc.
Stripe-compatible webhooks with Stripe-Signature header (HMAC-SHA256). Robust retry policy: 5 attempts with exponential backoff (5s, 25s, 125s, 625s, 3125s). Events: payment_intent.succeeded, payment_intent.payment_failed, charge.refunded.
Mandala orchestrates all payment flows seamlessly
{"amount": 5000, "currency": "eur"}{"amount": 50.00, "currency": "EUR"}
Stripe* endpoints fully supported
| Endpoint | Method | Status | Description |
|---|---|---|---|
/v1/payment_intents |
POST | ✓ Supported | Create payment intent |
/v1/payment_intents/:id |
GET | ✓ Supported | Retrieve payment intent |
/v1/payment_intents/:id/confirm |
POST | ✓ Supported | Confirm payment intent |
/v1/payment_intents/:id/cancel |
POST | ✓ Supported | Cancel payment intent |
/v1/refunds |
POST | ✓ Supported | Create refund |
/v1/webhook_endpoints |
POST GET | ✓ Supported | Register webhook endpoint (WooCommerce compatible) |
Switch from Stripe to PayGlobe without changing your payment logic
Configure Stripe SDK to point to Mandala instead of api.stripe.com.
Replace Stripe.js with our Stripe-compatible adapter.
Your payment logic stays the same. Run tests and deploy!
Get your API keys from Merchant Portal
Test both integration methods side-by-side
Use native PayGlobe/Mandala APIs with fetch()
fetch() to call POST /v1/payment_intents → POST /v1/payment_intents/:id/confirmnext_action.redirect_to_url.url for iframe
Use familiar Stripe.js API (loads processor iframe)
payglobe-stripe-adapter.js (our library with Stripe-like syntax)
Using test credentials: pk_test_PayGlobe123456789TestPublishable
Run a real compatibility test using the official Stripe Node.js client. This proves Mandala works as a true drop-in replacement.
$ npm install stripe
$ node test-stripe-client.js
Click "Run SDK Test" to start...
Create a payment in seconds
Amount is in minor units (cents), like Stripe.
Note: Initial status is requires_payment_method, matching Stripe behavior.
Full integration with return URL for post-payment redirect
return_url is mandatory! After payment, the user will be redirected to this URL with these query parameters:
payment_intent - PaymentIntent IDpayment_intent_client_secret - Client secretredirect_status - succeeded, failed, or canceledredirect_status query parameter can be manipulated by users.
https://your-site.com/payment-complete?order_id=123
&payment_intent=pi_test_abc123
&payment_intent_client_secret=pi_test_abc123_secret_xyz
&redirect_status=succeeded
https://your-site.com/payment-complete?order_id=123
&payment_intent=pi_test_abc123
&payment_intent_client_secret=pi_test_abc123_secret_xyz
&redirect_status=failed