Chat on WhatsApp
Magento Payment Gateway Specialist

Your gateway charged the card. Why is the order still stuck?

Stuck “Pending Payment” orders, failing 3-D Secure, double charges, a method that vanished at checkout, or a cURL error to the gateway — we trace the full auth → capture → callback chain and fix the real cause. PCI-safe, no core edits, 14-day warranty.

  • Stripe · PayPal · Razorpay · Adyen · Authorize.Net
  • Missed webhooks / IPN replayed — stuck orders settle
  • Emergency triage: first response in under 4 hours
We never touch raw card data Adobe-Certified Magento developer
  • < 4h Emergency triage

    Stuck orders and failed captures get first response inside four hours on the Emergency tier — revenue can’t wait.

  • PCI-safe No card data touched

    We work through the gateway’s tokens and webhooks — never raw PAN. Your SAQ-A scope stays intact.

  • 100% Webhook replay

    Every fix re-drives missed IPN / callback events so “Pending Payment” orders settle to their real status.

  • $0 Double-charge audit

    We reconcile gateway transactions vs. Magento orders so customers aren’t billed twice — refunds verified, not assumed.

Gateways we monitor & fix Live-status mock — illustrative
  • Stripe webhooks live
  • PayPal IPN dropped
  • Razorpay callbacks ok
  • Adyen 3DS retry
  • Authorize.Net capture ok
  • Braintree settled
Common bugs we fix

Six Magento payment bugs we see every week

Real symptoms, real error strings — not generic filler. If your bug isn’t here, it’s probably a variant of one of these. For checkout-flow issues beyond the gateway, see Magento checkout bug fixing.

  • Order stuck on “Pending Payment”

    Gateway charged the card but the webhook / IPN / callback never reached Magento, so the order never moves to Processing. Common with Stripe, PayPal IPN, and Razorpay when the notify URL is blocked by a firewall, redirect, or CSRF gate. We restore the listener and replay the missed events.

  • 3-D Secure / SCA redirect failing

    Customers bounce on the bank’s 3DS / OTP step and land back on an empty cart, or hit Authentication failed. Usually a return-URL mismatch, an iframe / X-Frame-Options block, or a stale Adyen / Stripe payment-intent. We fix the redirect handshake so SCA completes cleanly.

  • Sandbox vs live API keys mismatched

    Live store still pointing at test keys (or vice versa): No such payment_intent, This API key is a test key, or every order silently failing. We audit env-specific config, move secrets out of the DB into env.php, and verify the live endpoint end to end.

  • Double charge / duplicate order

    A retried submit, a slow 3DS return, or a misfiring webhook creates two orders or two captures for one checkout. We add idempotency on the place-order call, reconcile the gateway ledger, and refund the duplicate — then stop it recurring.

  • Payment method not showing at checkout

    PayPal, Stripe, or Authorize.Net disappears from the payment step. Causes: method disabled per website scope, currency / country restriction, a JS error breaking the Hyvä or Luma payment renderer, or a min-order rule. We trace why the method is filtered out and bring it back.

  • cURL error & capture / refund failing in admin

    cURL error 28: timed out or error 60: SSL certificate problem talking to the gateway, plus capture / refund throwing in the Magento admin. Often a blocked outbound port, an expired CA bundle, currency mismatch, or an expired API credential. We fix connectivity and the admin-side capture flow.

How we fix it

From report to verified fix in five steps

We reproduce on staging, trace the transaction, root-cause it, fix via plugin / observer / config — never a core edit — then verify with live test transactions. Need it across the whole store? See urgent Magento bug fixing.

  1. 01

    Report & reproduce

    You send the symptom, gateway, error string, and a sample order ID. We reproduce it on staging with a test card and capture the gateway request / response.

    0 – 2h
  2. 02

    Trace the transaction

    We follow the full auth → redirect → capture → callback chain through payment.log, the gateway dashboard, and Magento’s sales_payment_transaction table to find exactly where it breaks.

    Same day
  3. 03

    Root-cause the failure

    Pin the real cause — blocked webhook URL, key mismatch, 3DS return mismatch, currency / scope rule, or missing idempotency — not just the surface symptom. You get a written diagnosis.

    4 – 24h
  4. 04

    Fix + regression test

    Patch via plugin / observer / config (never a core edit), replay missed callbacks, then run live-mode test transactions across auth, capture, partial refund, and 3DS to prove it holds.

    1 – 2 days
  5. 05

    Deploy & verify

    Ship to production, watch the first real orders settle correctly, and hand over a short note on what broke and how to prevent it. 14-day fix warranty on the same bug.

    Go-live
Pricing

Fixed prices. Billed at $25/hr.

Pick the tier that matches the problem. Anything out of scope is quoted upfront before work starts — never billed silently.

  • Quick Fix

    $ 99 USD

    ~4h @ $25/hr · one bug, 24–48h

    Best for: A single, well-defined gateway bug — e.g. one stuck “Pending Payment” order, a 3DS redirect, or a method missing at checkout

    • One clearly-scoped payment bug
    • Root-cause diagnosis in writing
    • Fix via plugin / observer / config — no core edits
    • Missed webhook / callback replayed
    • Live-mode test transaction to confirm
    • 14-day warranty on the same bug
    Fix one bug — $99
  • Emergency / Retainer

    Custom

    24/7 on-call · < 4h first response

    Best for: Live store losing orders right now, or a high-volume merchant who wants payments monitored continuously across multiple gateways

    • Everything in Bug-Fix Sprint, plus:
    • < 4h first response, 24/7 on-call SLA
    • Multi-gateway coverage (Stripe / PayPal / Adyen / Razorpay / Authorize.Net)
    • Webhook + payment-failure monitoring & alerting
    • $2,499 stabilization sprint (~100h @ $25/hr) for deep payment-stack rebuilds
    • Monthly retainer for ongoing cover
    Get emergency help

Prices in USD at our canonical $25/hr rate. Quotes available in GBP / EUR / AUD / INR — ask in the form. Any gateway transaction fees are charged by your provider, not us.

Report your bug

Tell us what’s broken

Takes 2 minutes. Include the gateway, the error string, and a sample order ID — emergency cases get a first response in under 4 hours.

We will get back to you shortly.

What clients say

Merchants we’ve unstuck

Real stores, real payment fixes — five-star average across Upwork, Clutch, and direct referrals.

Kishan is a great magento developer and he was a great asset to our organization.

Kishan is a great magento developer and he was a great asset to our organization. He worked with us for a long time and he provided to us a lot of knowledge about magento. we are very gratefull with

AR

Alfredo Rodriguez

Cronapis

Kishan was great to work with.

Kishan was great to work with. I needed a small change to my site, with an attribute adding to appear on the frontend. Kishan completed this very quickly, and had the work completed the same day. I am very happy with the work completed by Kishan and would be happy to employ his...

CK

Chanette Kennedy

great professional with enthusiasm, knowledge, skill and exceptional patience in solving problems.

great professional with enthusiasm, knowledge, skill and exceptional patience in solving

D

Dennis

Bay Tech

Thank you for taking care of this job for me.

Thank you for taking care of this job for me. Job well

MW

Michael Webber

Kishan was very helpful in helping set up my magento site, theme, installing my extensions, and fix any errors.

Kishan was very helpful in helping set up my magento site, theme, installing my extensions, and fix any errors. He is very trustworthy and I highly recommend hiring

SE

Sarah Ehling

Kishan provided a quick and straightforward solution to a problem I thought was complicated.

Kishan provided a quick and straightforward solution to a problem I thought was complicated. I am very impressed and I

NN

Neudell Nicholson

Vertex Select Ltd

Fixing payments for stores in

  • United States
  • United Kingdom
  • Canada
  • Australia
  • Germany
  • France
  • Netherlands
  • India
FAQ

Magento payment bug questions, answered

How much does it cost to fix a Magento payment bug?

Fixed prices, no hourly surprises: a Quick Fix is $99 (~4h @ $25/hr) for one well-defined bug — like a single stuck “Pending Payment” order or a 3DS redirect. A Bug-Fix Sprint is $499 (~20h @ $25/hr) for a batch of bugs or one gnarly root cause with reconciliation and regression tests. For live stores losing orders right now, the Emergency / Retainer tier adds a 24/7 on-call SLA, with a $2,499 stabilization sprint (~100h @ $25/hr) for deeper payment-stack rebuilds.

My Magento orders are stuck on “Pending Payment” — what’s wrong?

Almost always the gateway charged the card but its webhook / IPN / callback never reached Magento, so the order never advances to Processing. The notify URL might be blocked by a firewall or WAF, redirected by an HTTPS / trailing-slash rule, or rejected by Magento’s CSRF / form-key check. We confirm the charge in the gateway dashboard, fix the listener, then replay the missed events so the stuck orders settle to their real status. Seen most with Stripe, PayPal IPN, and Razorpay.

Why is 3-D Secure / SCA failing on my Magento checkout?

3DS breaks when the redirect handshake doesn’t complete. Common causes: the return URL doesn’t match what’s registered with the gateway, the bank’s 3DS page is blocked from loading in an iframe by an X-Frame-Options / CSP header, or the Stripe / Adyen payment intent has gone stale before the customer finishes the OTP. Customers see Authentication failed or land back on an empty cart. We fix the redirect / iframe flow and re-test SCA end to end with a live 3DS test card.

Could my payments be failing because of sandbox vs live API keys?

Yes — this is one of the most common payment bugs after a go-live or a server migration. If the live store still points at test keys you’ll see errors like No such payment_intent or This API key is a test key; if test environments hold live keys you can take real money in QA. We audit the per-website / per-store-view config, move secrets out of the database into env.php so each environment is correct, and verify a real transaction against the live endpoint.

A customer was charged twice / got two orders. Can you fix it?

Yes. Double charges come from a retried submit, a slow 3DS return, or a webhook firing twice — creating two orders or two captures for one checkout. We reconcile the gateway ledger against Magento’s sales_payment_transaction records, refund the duplicate, then add idempotency on the place-order and capture calls so it can’t recur. The reconciliation is included in the Bug-Fix Sprint tier.

My payment method disappeared from checkout — why?

A method (PayPal, Stripe, Authorize.Net) vanishes when it’s filtered out: disabled for that website scope, restricted by country or currency, blocked by a minimum-order rule, or hidden because a JavaScript error broke the Hyvä or Luma payment renderer. We trace which rule or error is removing it — checking config scope, the browser console, and the payment method’s isAvailable() logic — and bring it back at checkout.

What does “cURL error” when talking to the gateway mean?

It means Magento can’t reach the gateway’s API. cURL error 28: Operation timed out usually means a blocked outbound port or a slow firewall; cURL error 60: SSL certificate problem means an expired or missing CA bundle on the server; cURL error 6: Could not resolve host is a DNS issue. We confirm connectivity from the server, refresh the CA bundle, and re-open the outbound path so auth, capture, and refund calls succeed again.

Capture or refund is failing in the Magento admin. Can you fix that?

Yes. Admin-side capture and refund failures usually trace to an expired API credential, a currency mismatch between the order and the gateway account, a transaction that was already settled / voided gateway-side, or a cURL connectivity error. We check the gateway transaction state, fix the credential or config, and confirm a clean capture and a partial refund both go through from the admin.

Which Magento payment gateways do you fix?

All the major ones: Stripe, PayPal / PayPal Express, Braintree, Adyen, Razorpay, Authorize.Net, Klarna, and Mollie, plus the official Magento payment integrations and most third-party gateway extensions. If you’re on a regional or custom gateway, send the module name in the booking form and we’ll confirm before any work starts.

Do you fix payment bugs on staging or directly on the live store?

We reproduce and develop the fix on staging wherever possible — payment code is too risky to edit blind on production. If there’s no staging, we’ll spin one up or work in a safe, isolated way using the gateway’s test mode. The final fix is deployed to live and verified with a small real transaction. We never edit core files — everything is done via plugins, observers, or config, so it survives upgrades.

Can you fix it without breaking my live store or risking card data?

Yes — this is the whole point of working through a payment specialist. We work via the gateway’s tokens and webhooks, never raw card numbers, so your PCI / SAQ-A scope stays intact. Changes go through staging, get regression-tested across auth / capture / refund / 3DS, and ship with a rollback plan. Your existing successful orders and customer data are never touched.

How fast can you fix it, and is there a guarantee?

Emergency cases (a live store losing orders) get a first response within 4 hours and a same-day diagnosis on the Emergency tier. A typical single bug is reproduced, root-caused, and fixed within 24–48 hours. Every fix carries a 14-day warranty on the same bug — if the issue we fixed comes back in that window, we fix it again at no charge. Report it on this page, or if it’s a wider checkout problem see our Magento checkout bug fixing page or the emergency e-commerce bug fixing hub.

Losing orders to a payment bug right now?

Send the symptom and the error string — we’ll triage it fast and tell you exactly what’s broken before any charge.

Report my payment bug