/api/v1/* API, so it works against both the hosted service and a self-hosted instance.
Not running WooCommerce? The WordPress guide covers no-code payment links and custom PHP integrations for any WordPress site.
How it works
- Customer selects Pay with crypto and places the order.
- The plugin calls
POST /api/v1/checkout_sessions, stores the returned session id on the order, sets the order to On hold, and redirects the customer to the hosted checkout. - The customer pays. MyCryptoServer detects the transfer and sends webhook events to your store.
- On
session.paidthe plugin calls WooCommerce’spayment_complete()and the order moves to Processing / Completed.
Requirements
- WordPress 6.0+ and WooCommerce 7.0+ (HPOS and the block-based Checkout are both supported).
- PHP 7.4+.
- A MyCryptoServer account (hosted or self-hosted).
Quick setup (recommended)
The dashboard can generate the plugin pre-configured for your store — it provisions the API key and webhook endpoint for you and bakes them into the download, so there is nothing to copy-paste.1
Generate the plugin
In the dashboard, go to Integrations → WordPress, enter your WordPress store URL (e.g.
https://store.example.com), pick the mode (Live or Test), and click Generate & download plugin.Behind the scenes this creates an API key (scoped to sessions + webhooks) and registers a webhook endpoint at https://your-store.com/wp-json/mycryptoserver/v1/webhook subscribed to all session.* events, then embeds those credentials — plus the API base URL — in the zip.2
Upload and activate
In WordPress, go to Plugins → Add New → Upload Plugin, choose
mycryptoserver-woocommerce.zip, Install Now, and Activate. The gateway settings (API base URL, key, webhook secret, endpoint ID, test mode) are seeded automatically on activation.Then enable the gateway under WooCommerce → Settings → Payments → MyCryptoServer and adjust the customer-facing Title/Description if you like.3
Test the round-trip
Open any order in the WooCommerce admin and click Test send webhook in the MyCryptoServer metabox — a
✓ sent result means signing and connectivity are correct end to end. Then place a test order and confirm it transitions On hold → Processing after payment.Manual setup
If you prefer to provision credentials yourself (or you’re installing the same zip on a second site), configure the plugin by hand:1
Install the plugin
Download the plugin zip, then in WordPress go to Plugins → Add New → Upload Plugin, choose the zip, Install Now, and Activate.Activation creates the webhook log table and registers the REST webhook route at:
WooCommerce must be installed and active first. Without it the plugin shows an admin notice and stays inactive.
2
Create an API key
In the MyCryptoServer dashboard, go to API Keys and create a key with these scopes:
Use a
ck_test_... key while testing and a ck_live_... key in production. Copy the key — it is shown only once.3
Create a webhook endpoint
In the dashboard, go to Webhooks → Add endpoint and set:
- URL:
https://your-store.com/wp-json/mycryptoserver/v1/webhook - Events: subscribe to all
session.*events (or at leastsession.detected,session.paid,session.paid_late,session.underpaid,session.overpaid,session.expired,session.failed).
whsec_...) — shown only once — and note the endpoint ID (a UUID).4
Configure the gateway
In WordPress, go to WooCommerce → Settings → Payments → MyCryptoServer → Manage and fill in:
Save changes.
5
Test the round-trip
With Webhook endpoint ID set and a key that has
webhooks:write, open any order in the WooCommerce admin and click Test send webhook in the MyCryptoServer metabox. A ✓ sent result means signing and connectivity are correct end to end.Then place a real order (with Test mode on, or a ck_test_ key) and confirm the order transitions On hold → Processing after payment.Order status mapping
Webhook processing is idempotent — duplicate deliveries won’t double-complete an order or duplicate notes.
Going live
If you used Quick setup with the mode set to Test, the simplest path is to regenerate: go back to Integrations → WordPress, switch the mode to Live, download again, and upload the new zip (the test credentials are rotated out automatically). If you configured manually:- Swap the API key to a
ck_live_...key (withsessions:write). - Turn Test mode off.
- Make sure the production webhook endpoint points at your live store URL and is active.
Troubleshooting
Every inbound webhook is recorded in the
wp_mcs_webhook_log table (signature result, response status, body), trimmed to the most recent 500 rows — useful for debugging delivery issues.