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.
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.
- 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.
- 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://, nothttp://. It must be your live domain, not localhost. - Stripe:
- 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:
401or403— a security plugin is blocking the request. Whitelist the webhook URL in your security plugin (Wordfence, iThemes, etc.).503or504— your server timed out. Contact your host about server performance or PHP timeout limits.400— signature verification failed (see below).
- 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:
- Go to Stripe → Developers → Webhooks → click your endpoint.
- Click Reveal next to “Signing secret”. Copy the full
whsec_…value. - In Influenzic, go to Settings → Stripe and paste it into the Webhook Secret field for the matching mode (test or live).
- 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 Modeis 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_, andwhsec_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.
- Go to Influenzic → Transactions and filter by type
pending_manual. - Find the brand’s pending transaction row.
- Verify the transfer has arrived in your actual bank account.
- Click Mark as Paid. The brand’s wallet is credited immediately.
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, andPAYMENT.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).