Online payment & Stripe
The Pro version of Simple Bike Rental allows you to accept online payments through Stripe. The system is designed to be simple, reliable, and compliant with Stripe’s security standards.
After activating the Pro version, you can configure the online payment system by going to the Bicycles → Settings section. Here you will find the following fields:
Let's examine them individually.
Enable online payments
Enable this option to activate online payments. When this option is enabled:
- The user must complete the Stripe payment to confirm the reservation.
- The reservation remains "Pending" until Stripe confirms payment.
- The frontend module displays the "Pay Now" button.
If you disable this option:
- Reservations are confirmed via email using a token system.
- Stripe is not involved in the process.
Enable accessory rental (optional)
If enabled, the booking form will display any configured accessories (e.g., helmets, child seats, locks) and include them in the total.
Payment currency
Choose the currency you'd like to receive payments in.
Examples:
- Euro (EUR)
- US Dollar (USD)
- Other currencies supported by Stripe
The currency must match the one set up in your Stripe account.
Additional payment methods
In addition to traditional credit cards, Simple Bike Rental Pro supports two additional payment methods (if available in your Stripe account):
✔ Stripe BLIK
It allows Polish users to pay with BLIK. It uses the same Webhook as regular payments, so no additional configuration is required.
✔ Stripe Przelewy24 (P24)
It allows payments via P24, a popular method in Poland. In this case, the Webhook is also the same.
Note: You must also enable these methods in the Stripe dashboard.
Checkout Page
The page where the booking summary will be displayed, along with the payment button.
On this page, you need to enter the shortcode:
Create a new "Payment" page and insert the shortcode within it.
Post-payment thank you page
The page the user sees after a successful payment. On this page, you need to enter the shortcode:
Create a new page, for example "Payment confirmed", and insert the shortcode within it.
Stripe Public/Secret Key
The public key for your Stripe account is used to initiate the payment process. The secret key is used to communicate securely with Stripe.
You can find it in the Stripe dashboard, under Developers → API Keys.
Stripe Webhook Secret Key
The secret key for the webhook, required to receive payment confirmations from Stripe. You can get it by creating a webhook in the Stripe dashboard, under Developers → Webhook.
The Stripe webhook notifies your website when a payment is successfully completed.
Although Simple Bike Rental Pro works without enabling the webhook, we strongly recommend activating it. Why?
Because in rare cases, such as when an error occurs while redirecting from Stripe to your site, the reservation may not update correctly, even if the payment was successful. This could leave the reservation with a "pending payment" status.
By enabling the webhook, you ensure that:
- The reservation is automatically confirmed once Stripe processes the payment.
- Email notifications will still be sent even if the site redirect fails.
- Improved reliability and accuracy in booking management.
Create a new webhook in the Stripe Dashboard → Developers → Webhooks → + Add endpoint:
1 – Copy the webhook URL
Replace yourdomain.com with your actual domain.
2 – Log in to your Stripe dashboard
- Go to dashboard.stripe.com.
- Select the project you used for your plugin.
- From the left sidebar, go to Developers → Webhook.
3 – Create a new endpoint
- Click "Add endpoint."
- Paste the webhook URL you copied in step 1.
- In Events to send, select only: checkout.session.completed
- Click "Add endpoint" to save.
4 – Copy the webhook secret
Once the endpoint is created, Stripe will display the secret key.
- Copy it.
- Return to the WordPress dashboard and navigate to the plugin settings.
- Paste the secret key into the Stripe Webhook Secret field.
- Save your settings.
5 – Test the integration
Make a test reservation and complete the payment. Verify that:
- The reservation is marked as complete in the admin panel.
- The user is redirected to the thank you page.
- Stripe no longer removes the webhook, provided the server returns an HTTP 200 response.
Stripe automatically disables a webhook if your server doesn't respond to notifications with an HTTP 200 code. Therefore, it's important to verify that the plugin responds correctly when Stripe sends events.
How to verify your server is responding with HTTP 200
- Go to Stripe → Developers → Webhooks.
- Click on the endpoint you've configured.
- You will find the "Recent events" section:
- If everything is working correctly, each event will display a green check mark with the message "200 OK".
- If there's a problem, you'll see messages like "500 error", "404 not found", "Endpoint unavailable", and so on.
- You can click on each event to view:
- the request sent by Stripe,
- your server's response (including the HTTP code).
- If Stripe receives repeated errors (e.g., 400, 404, 500), it will automatically disable the endpoint after a few attempts to prevent continuous submissions.
As long as your integration responds correctly with HTTP 200, Stripe will continue to consider the webhook active and valid.
Test Mode Tips
You can use Stripe's test mode with the test card:
- Card number: 4242 4242 4242 4242
- Expiration date: any future date (e.g., 12/30)
- CVC: Any 3 digits (e.g., 123)
Here's everything you need to set up online payments.
Common webhook errors
When Stripe sends a notification to your site, it expects an HTTP 200 response. If your server returns an error, Stripe logs it and may disable the endpoint after several attempts.
Here are the most common mistakes and how to fix them..
404 – Endpoint not found
What does this mean?
The webhook URL either doesn't exist or is unreachable.
Possible causes:
- URL copied incorrectly in Stripe
- plugin disabled
- WordPress permalinks are not working, or a security plugin is blocking the endpoint.
Solution:
- Copy the correct endpoint from the plugin settings.
- Save the WordPress permalinks again (Settings → Permalinks → Save)
401 / 403 – Unauthorized / Forbidden
What this means:
Stripe is unable to access the URL or is being blocked.
Possible causes:
- hosting firewall (Aruba, SiteGround, etc.)
- security plugins that block external POST requests
Solution:
- Add Stripe's IP addresses to your hosting and firewall's whitelist.
- Temporarily disable plugins like Wordfence or iThemes Security to verify.
400 – Bad Request
What does this mean?
Stripe can reach your server, but the request is invalid.
Possible causes:
- Incorrect webhook key in the plugin
- missing or incompatible payload
Solution:
- Copy the Webhook secret key from Stripe → Developers → Webhooks → Endpoint → “Signing Secret”
Webhook deactivated (automatically deactivated by Stripe)
What this means:
Stripe has received too many errors in a row.
Solution:
- Fix the error in the endpoint.
How to verify that everything is working correctly
Go to Stripe → Developers → Webhooks → Endpoint → Recent events.
- if you see "200 OK" → everything is working
- If you see errors, click on the event to view the server request and response.
Once your server consistently responds with a 200 status code, Stripe will no longer disable the webhook.




