Your server never sees a card number. Not once.
Stripe, Bambora, and Moneris integration built on tokenized checkout, 3D Secure fraud prevention, and idempotent webhook handling — so every transaction settles correctly, and your PCI compliance burden stays as light as possible.
Anywhere money changes hands in the product
Payment integration looks different for a one-time checkout than for recurring SaaS billing or a marketplace split payment — the right implementation depends on which of these you actually are.
Six things a reliable integration has to get right
Tokenized checkout
Card data captured by the gateway's hosted fields and tokenized before it reaches your server — keeping you in the lightest PCI compliance tier.
3D Secure & fraud prevention
Strong Customer Authentication triggered where required, cutting chargeback rates without adding friction to every transaction.
Idempotent webhook handling
Every event processed exactly once even if the gateway sends it twice, with a reconciliation job catching anything a webhook missed.
Subscription & recurring billing
Plan changes, proration, and failed-payment retry logic (dunning) configured to match your actual churn tolerance.
Multi-currency support
Pricing and settlement handled correctly across currencies where the gateway and business banking support it.
Refunds & dispute handling
Refunds reflected back into order status automatically, and chargeback notifications routed with enough lead time to respond.
Why tokenization is the whole PCI strategy
| SAQ A (this approach) | Card data never touches your server — captured entirely by the gateway's hosted fields. The lightest PCI-DSS self-assessment tier, with the least ongoing compliance burden. |
|---|---|
| SAQ A-EP / D | Applies when card data does pass through your infrastructure in some form — a far heavier compliance burden that's avoidable for the vast majority of web applications. |
| 3D Secure / SCA | An extra authentication step (often a bank app confirmation) triggered for higher-risk transactions, required under European SCA regulation and increasingly expected globally. |
Stripe vs Bambora vs Moneris, honestly
Stripe
The strongest default for global businesses and modern SaaS — deepest developer tooling and the broadest currency support.
Bambora
A common fit for Canadian businesses, particularly with existing banking relationships or in-person/POS needs.
Moneris
Frequently the choice for Canadian enterprise and retail, especially where established banking ties already exist.
Five stages, from gateway choice to launch
Choose the gateway & billing model
One-time, subscription, or split payments — decided before any integration work starts.
Build tokenized checkout
Hosted fields integrated so card data never reaches your server.
Webhook & reconciliation logic
Idempotent event handling and a reconciliation job built and tested against real gateway events.
Test against real failure cases
Declined cards, expired sessions, and duplicate webhooks tested deliberately, not just the happy path.
Launch & monitor
Live monitoring on the first real transactions, plus documentation for refund and dispute handling.
Common questions
How much does payment gateway integration cost?
A standard integration — one gateway, one-time payments, standard checkout — typically falls in the low four figures. Subscription billing, multiple gateways, multi-currency, or marketplace split payments increase the scope, since each adds its own edge cases.
Which payment gateway should we use — Stripe, Bambora, or Moneris?
Stripe is generally the strongest default for global businesses and modern SaaS. Bambora and Moneris are commonly the better fit for Canadian businesses with existing banking relationships or POS needs. The right choice depends more on business location and banking relationships than technical capability.
Does our server ever handle raw card numbers?
No. Card data is captured directly by the gateway's hosted fields and tokenized before it reaches your server — your backend only ever sees a token, keeping the site in the lowest PCI compliance tier (SAQ A).
How are failed payments and subscription dunning handled?
Through the gateway's built-in retry logic, combined with automated email notifications and a grace period before a subscription is marked past-due or canceled — configured to match your specific churn tolerance.
What happens if a webhook is missed or arrives twice?
Webhook handlers are built to be idempotent, using the event's unique ID to detect and skip duplicates. A reconciliation job periodically checks the gateway's own transaction record against the local database to catch anything a webhook failed to deliver.
How are refunds and chargebacks handled?
Refunds are issued through the gateway's API and reflected into order status automatically via webhook. Chargeback notifications are also received via webhook, giving lead time to submit supporting evidence before the deadline.
Explore related work
Tell me how you get paid today.
Send a short brief — one-time or recurring, which gateway (if you already have one), and what's not working. You'll get a scoped plan back, not a sales call.
Email your project brief