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
-
< 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.
- Stripe webhooks live
- PayPal IPN dropped
- Razorpay callbacks ok
- Adyen 3DS retry
- Authorize.Net capture ok
- Braintree settled
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 intoenv.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 admincURL error 28: timed outorerror 60: SSL certificate problemtalking 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.
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.
-
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 -
02
Trace the transaction
We follow the full auth → redirect → capture → callback chain through
Same daypayment.log, the gateway dashboard, and Magento’ssales_payment_transactiontable to find exactly where it breaks. -
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 -
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 -
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
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
-
Most popular
Bug-Fix Sprint
$ 499 USD~20h @ $25/hr · most popular
Best for: A batch of payment bugs, or one gnarly root cause (intermittent webhook loss, double charges) that needs proper reconciliation + regression tests
- Everything in Quick Fix, plus:
- Batch of related payment bugs (one gateway)
- Gateway-vs-Magento transaction reconciliation
- Idempotency hardening on place-order / capture
- Regression test suite across auth / capture / refund / 3DS
- Sandbox & live key audit + secrets moved to env.php
-
Emergency / Retainer
Custom24/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
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.
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.
Merchants we’ve unstuck
Real stores, real payment fixes — five-star average across Upwork, Clutch, and direct referrals.
Fixing payments for stores in
- United States
- United Kingdom
- Canada
- Australia
- Germany
- France
- Netherlands
- India
Magento payment bug questions, answered
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.