Troubleshooting

Gateway & Webhook Troubleshooting

Step-by-step diagnosis for the most common payment gateway problems: wallets not updating, webhook failures, and mode mismatches.

What Is a Webhook and Why Does It Matter?

When a brand pays via Stripe or PayPal, two things happen in sequence: first the payment is taken from their card, and second the gateway needs to tell your platform that the payment succeeded. It does this by sending an automatic notification to your site called a webhook. If the webhook is not delivered or your site rejects it, the payment appears on the brand’s bank statement but their platform wallet shows no change. This is the most common operator support complaint, and it is always a webhook configuration problem.

Think of a webhook like a delivery confirmation text. The courier (gateway) delivers the package (takes the payment), then sends you a text to confirm it arrived (webhook). If you never get the text, you don’t know the package was delivered — even though it was.

Symptom: Brand Paid but Wallet Did Not Update

This is a webhook delivery failure. The payment went through on the gateway’s side but your site never received the confirmation.

  1. Check the gateway dashboard for failed deliveries.
    • Stripe: Log into Stripe → Developers → Webhooks → click your endpoint → Recent Deliveries. Look for any red “Failed” entries.
    • PayPal: Log into PayPal Developer → My Apps → click your app → Webhooks → Webhook Event Logs. Look for failed or undelivered events.
  2. Check the webhook URL is correct. The URL in your gateway dashboard must exactly match:
    • Stripe: https://yourdomain.com/wp-json/influenzic/v1/webhook/stripe
    • PayPal: https://yourdomain.com/wp-json/influenzic/v1/webhook/paypal

    It must use https://, not http://. It must be your live domain, not localhost.

  3. Check that your site returned a 200 response. In the gateway’s failed delivery log, look at the HTTP status code your site returned. Common non-200 codes and their meanings:
    • 401 or 403 — a security plugin is blocking the request. Whitelist the webhook URL in your security plugin (Wordfence, iThemes, etc.).
    • 503 or 504 — your server timed out. Contact your host about server performance or PHP timeout limits.
    • 400 — signature verification failed (see below).
  4. Manually retry the failed webhook. In the Stripe dashboard, click a failed delivery and hit “Resend”. Watch whether the brand’s wallet updates within 30 seconds. If it does, the webhook URL was fine and the earlier failure was a temporary server issue.

Symptom: HTTP 400 — Signature Verification Failed

Your site received the webhook but rejected it because the security signature did not match. This means the signing secret in Influenzic does not match the one in your gateway dashboard.

For Stripe:

  1. Go to Stripe → Developers → Webhooks → click your endpoint.
  2. Click Reveal next to “Signing secret”. Copy the full whsec_… value.
  3. In Influenzic, go to Settings → Stripe and paste it into the Webhook Secret field for the matching mode (test or live).
  4. Save settings and retry the webhook from the Stripe dashboard.

For PayPal: The Webhook ID (not the Client ID or Secret) must exactly match the Webhook ID shown in your PayPal app → Webhooks section. Verify you have not accidentally used the App’s Client ID here.

Symptom: Stripe Test Payments Work, Live Payments Do Not

You are using test mode credentials for live payments, or your live webhook has not been set up.

  • In Influenzic → Settings → Stripe, confirm Stripe Mode is set to Live.
  • Confirm the Live Publishable Key, Live Secret Key, and Live Webhook Secret fields are all populated. These are different from the test keys — they start with pk_live_, sk_live_, and whsec_ from the live webhook endpoint respectively.
  • In the Stripe dashboard, confirm you are looking at the Live mode webhook endpoint (toggle at the top of the Stripe dashboard). The live and test endpoints are separate and have different signing secrets.

Symptom: Manual Bank Transfer Paid but Not Confirmed

Manual gateway orders do not auto-confirm — they require the admin to mark them as paid after checking the bank account.

  1. Go to Influenzic → Transactions and filter by type pending_manual.
  2. Find the brand’s pending transaction row.
  3. Verify the transfer has arrived in your actual bank account.
  4. Click Mark as Paid. The brand’s wallet is credited immediately.
Never click “Mark as Paid” before verifying the bank transfer has arrived. There is no undo. If you mark it paid before the funds arrive and the transfer is later reversed, you will have credited the brand’s wallet with money you have not received.

Symptom: PayPal Webhooks Not Arriving At All

  • Confirm the webhook URL in your PayPal app is set to the correct live URL, not a sandbox URL.
  • Confirm you subscribed to the correct event types: CHECKOUT.ORDER.APPROVED, PAYMENT.CAPTURE.COMPLETED, and PAYMENT.CAPTURE.DENIED. PayPal does not send events for event types you have not subscribed to.
  • In Sandbox mode, use the PayPal Developer Dashboard → Webhooks → Simulate event to send a test payload to your URL and verify your site responds 200.

Symptom: Currency Mismatch Error at Stripe Checkout

Stripe accounts have a primary settlement currency set when the account is created. If your platform currency does not match:

  • Either change your platform currency in Influenzic → Settings → General → Currency to match your Stripe account’s settlement currency, or
  • Enable multi-currency in your Stripe account settings (requires completing additional identity verification steps in Stripe).

Was this article helpful?