New to VisionScaper?
Start here
Help Center › Apps, community & FAQ › Troubleshooting: REST errors and Stripe webhooks not received
Troubleshooting: REST errors and Stripe webhooks not received
Find why app calls fail with REST errors, and why Stripe payments or subscriptions are not registering.
The designer, the Contractor Hub and the phone app all talk to your website through its REST address, /wp-json/dreamscaper/v1/. If that address is blocked or cached, many things fail at once.
A. REST errors
Quick test
- In a browser, open
https://your-site/wp-json/. You should see a block of text, not a 404 or a login page. - If you get a 404, open WordPress Settings → Permalinks and click Save once.
- If a security or cache plugin blocks it, allow
/wp-json/dreamscaper/*and exclude it from page caching.
Messages and what they mean
| Message or code | Meaning |
|---|---|
| “Your sign-in on this device has ended. Please sign in again.” (401) | The phone’s key expired or was signed out |
| “Please sign in first.” (401) | The action needs an account |
| Error code FEATURE_NOT_INCLUDED | The contractor’s plan does not include it |
| SUBSCRIPTION_REQUIRED | No subscription record yet |
| USAGE_LIMIT_REACHED | An allowance is used up |
| SUBSCRIPTION_INACTIVE | Paused, cancelled, trial over, or payment too late |
| “Test view: billing actions are switched off…” (403) | An administrator is in View as customer |
| “Too many tries…”, “Slow down a little…”, “Please wait a bit…” (429) | A rate limit |
| “Phone sign-in needs a secure (https) website.” (403) | The site is on http |
The Entitlements admin page keeps the last 50 refusals with the account, route and code. See [entitlements-admin-page].
Other checks
- Mixed content: if the site address in WordPress is http but you browse over https, calls can fail. Make both https.
- A web firewall may block POST requests with JSON. Ask your host.
- Follow-ups and reminders run through WP-Cron. On a low-traffic site set a real cron job to call
wp-cron.phpso they go out on time.
B. Stripe webhooks not received
VisionScaper has two webhook jobs: shop purchases (credits, storage) and contractor subscriptions and payments. They share the address https://your-site/wp-json/dreamscaper/v1/stripe. Follow Stripe’s current instructions for adding an endpoint.
Steps
- In Stripe, confirm an endpoint exists with that exact address.
- Check the events:
checkout.session.completedfor the shop, plus the subscription events on the Plans page (customer.subscription.created,customer.subscription.updated,customer.subscription.deleted,invoice.paid,invoice.payment_failed) and, for contractor payments,checkout.session.async_payment_succeeded,checkout.session.async_payment_failedandaccount.updated. - Copy the endpoint’s signing secret into Settings → VisionScaper → Stripe webhook signing secret. The test-mode and live-mode endpoints have different secrets.
- Make sure the secret key and webhook are from the same mode (test with test, live with live).
- Look at Stripe’s delivery log for your endpoint and read the response.
What the response means
| Response | Meaning |
|---|---|
| “Not configured.” (400) | The signing secret or the signature header is missing |
| “Bad signature.” (400) | The secret is wrong, or the message is more than 10 minutes old. Check your server clock |
| received, ignored | A duplicate or older message was skipped on purpose |
Credits or storage did not arrive
Credits are also confirmed when the customer returns to your site after paying, so a missed webhook does not lose a purchase. Ask the customer to open the site once more in the same browser. A purchase is applied only once.
Tips
- Never paste secret keys in a message or screenshot.
- After changing a key, save the settings and retest with a small purchase in test mode.
If something goes wrong
- Still failing: save the exact message and the time, and check your host’s error log or firewall.