Your checkout is where all your marketing effort either turns into revenue or quietly vanishes. A buyer who has browsed, chosen a product and filled in their address is ready to pay. If the UPI app does not open, the page hangs after payment, or the order shows "pending" even though money left their account, you lose not just the sale but often the customer.
For Indian WooCommerce stores, getting payments right means choosing the right gateway, configuring it properly and testing far more carefully than most stores do. This guide covers all three.
How payments work on WooCommerce
WooCommerce does not process cards or UPI itself. It connects to a payment gateway through a plugin. The flow is roughly:
- The customer places an order and chooses a payment method.
- WooCommerce creates the order as "pending payment" and hands over to the gateway.
- The customer pays on the gateway's checkout (popup, redirect or embedded form).
- The gateway confirms the payment back to WooCommerce - through the customer's browser returning, and ideally through a webhook sent directly server to server.
- WooCommerce marks the order "processing", reduces stock and sends confirmation emails.
Most payment problems happen at step 4.
Choosing a gateway for an Indian store
Several established gateways offer official WooCommerce plugins, including Razorpay, PayU, Cashfree, PhonePe and CCAvenue. Rather than picking by brand name, compare them on what matters to your business:
| Criterion | What to check |
|---|---|
| Payment methods | UPI (intent and collect), cards, net banking, wallets, EMI, pay later |
| Mobile experience | Does UPI open the customer's app smoothly on Android and iPhone? |
| Plugin quality | Is the WooCommerce plugin maintained, compatible with your WooCommerce version and HPOS? |
| Onboarding | KYC documents, approval time, restrictions on certain product categories |
| Settlements | How quickly funds reach your bank account |
| Refunds | Can refunds be issued from the WooCommerce admin? |
| International cards | Needed if you sell to overseas customers |
| Support | Responsiveness when payments fail during a sale |
The commercial terms - fees and settlement terms - vary by gateway and business, so compare the latest terms directly with each provider.
Step-by-step setup
Step 1: Complete KYC first
Gateways need business documents before you can accept live payments. Start KYC early, because it can take time and may require clarifications. Make sure the account is registered to your business, not your developer.
Step 2: Install the official plugin
Install the gateway's official plugin from the WordPress.org directory or the gateway's own website. Avoid unofficial or modified versions.
Step 3: Add test keys and enable test mode
Every major gateway provides test (sandbox) API keys. Use these first. Never test with live keys and real cards on a production store unless you are doing a final small live check.
Step 4: Configure webhooks
This is the step most stores skip, and it causes most "paid but pending" order problems. In the gateway dashboard, add your store's webhook URL (provided by the plugin documentation), choose the payment events to send, and set a webhook secret. Then enter the same secret in the plugin settings.
Step 5: Set order status behaviour
Decide what happens after successful payment - usually "processing" for physical products. Check that stock reduces correctly and that failed payments leave orders as "failed" or "pending" rather than processing them.
Step 6: Customise the checkout display
- Show a clear payment method title, such as "UPI, Cards, Net Banking".
- Add trust cues near the button - accepted methods and a short secure-payment note.
- Keep the checkout form short. Remove fields you do not need.
Step 7: Go live carefully
Switch to live keys, place one or two small real orders using different methods, refund them, and confirm everything reconciles in both WooCommerce and the gateway dashboard.
Setting up Cash on Delivery properly
COD remains important in India, especially for first-time buyers and smaller towns. WooCommerce has a built-in COD option, but a good setup goes further:
- Restrict by pin code to areas your courier actually serves for COD.
- Set order value limits if high-value COD orders carry more risk for you.
- Verify COD orders with an automated WhatsApp or SMS confirmation before dispatch.
- Nudge towards prepaid by highlighting faster dispatch or a small benefit for paying online - keep the offer honest and clear.
- Track refused deliveries (return-to-origin) by pin code and adjust rules over time.
The testing checklist most stores skip
Run each of these on real phones before launch and after any major update:
| Test | What should happen |
|---|---|
| UPI payment on Android | UPI app opens, payment completes, order becomes processing |
| UPI payment on iPhone | Same, including returning to the browser |
| Card payment with OTP | OTP page loads correctly, order completes |
| Customer closes browser after paying | Webhook still marks order paid |
| Payment fails or is cancelled | Order stays failed/pending, customer can retry |
| Refund from admin | Refund reaches gateway and order notes update |
| COD order | Correct confirmation, no payment step |
| Coupon plus payment | Discounted amount charged correctly |
Handling failed and abandoned payments
Even with a perfect setup, some payments will fail - bank downtime, wrong UPI PIN, network drops. Reduce the impact:
- Send "complete your payment" reminders by email or WhatsApp with a link back to the order.
- Keep a second gateway configured that you can switch on if the primary one has issues during a sale.
- Review failed payment reasons in the gateway dashboard to spot patterns.
Accepting payments from overseas customers
If you sell to customers outside India - for example, to the Indian diaspora or international B2B buyers - check a few extra points:
- International card acceptance is often a separate activation on Indian gateways and may need additional documents.
- Currency display: decide whether overseas buyers see prices in rupees or in their own currency, and use a reliable currency plugin if you show converted prices.
- Export documentation: cross-border sales bring their own GST and foreign exchange paperwork. Speak to your CA before switching on international sales.
- A second gateway that specialises in international payments can be worth adding alongside your domestic one.
Common configuration mistakes we see
| Mistake | What it causes | Fix |
|---|---|---|
| Webhooks not set up | Paid orders stuck in "pending" | Add webhook URL and secret in gateway and plugin |
| Test keys left active after launch | Real customers cannot pay | Switch to live keys and place a small real order |
| Plugin not updated | Checkout breaks after WooCommerce or PHP updates | Update on staging, test, then update live |
| Caching the checkout page | Wrong totals or failed payments | Exclude cart, checkout and my-account pages from cache |
| Too many payment options shown | Confused buyers, slower checkout | Group methods under one clear gateway option |
| Gateway account in developer's name | Settlements and control outside your business | Register the account to your business |
Reconciliation: making sure the money matches
At least once a week in the early days, compare three things: orders marked paid in WooCommerce, successful payments in the gateway dashboard and settlements in your bank account. Small mismatches usually point to a configuration issue - a missing webhook, a refund done outside WooCommerce or a duplicate order. Catching them early saves painful accounting clean-ups at the end of the quarter, and gives your accountant a clean trail for GST filing.
Connecting payments to the rest of your business
Once payments work reliably, connect them to the systems your team already uses. Common integrations include syncing paid orders to accounting software or Tally, pushing order data to a CRM, generating GST invoices automatically, and triggering shipping label creation. Our API integration and automation work often starts right here.
Key takeaways
- Compare gateways on payment methods, mobile UPI experience, plugin quality and support - not just brand.
- Complete KYC in your business's name, early.
- Configure webhooks; they prevent most "paid but pending" order problems.
- Treat COD as a managed option with pin-code rules and verification.
- Test every payment path on real phones before launch and after updates.
Payments are not a place to take shortcuts. If your WooCommerce checkout has problems - or you are launching a new store and want it right from the start - our team can help. Explore our WooCommerce development services or our wider ecommerce website development offering, and book a free consultation to talk through your checkout.






