Troubleshooting: REST errors and Stripe webhooks not received

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

  1. In a browser, open https://your-site/wp-json/. You should see a block of text, not a 404 or a login page.
  2. If you get a 404, open WordPress Settings → Permalinks and click Save once.
  3. 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.php so 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

  1. In Stripe, confirm an endpoint exists with that exact address.
  2. Check the events: checkout.session.completed for 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_failed and account.updated.
  3. Copy the endpoint’s signing secret into Settings → VisionScaper → Stripe webhook signing secret. The test-mode and live-mode endpoints have different secrets.
  4. Make sure the secret key and webhook are from the same mode (test with test, live with live).
  5. 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.

Related articles

Still need help?

Tell us what you were trying to do and a person will reply.

Contact support