Lemon Squeezy
Connect Lemon Squeezy to Payments — keys, webhook URL and signing secret.
Lemon Squeezy is a merchant of record for digital products and subscriptions. Norbix gets its webhook events (orders, refunds, subscriptions and subscription payments).
Get your credentials
Sign in to the Lemon Squeezy dashboard.
Open Settings → Stores and note the store id (a number such as
12345).Open Settings → API, create an API key and copy it (see API requests).
Save the integration in Cloud once (below) to get its Webhook URL.
Open Settings → Webhooks → +, paste the webhook URL as Callback URL, choose a Signing secret (any long random text) and the events (see Webhooks and signing requests). Type the same secret into Webhook Signing Secret in Cloud, type the API key again, and Save.
Connect it in Cloud
Where: Payments → Integrations → Add New Integration → Lemon Squeezy → Connect · /projects/<project>/payments/integrations/new/lemon-squeezy
Store ID
yes
Your Lemon Squeezy store.
12345
API Key
yes
Lets Norbix call Lemon Squeezy. Secret; encrypted on save and never shown again — type it again whenever you press Save.
eyJ0eXAiOiJKV1QiLCJhbGciOi…
Webhook Signing Secret
yes
Checks the X-Signature header of each call. Secret; encrypted on save and never shown again — type it again whenever you press Save.
your-signing-secret
Test Mode
no
Enable test mode to use the test-mode data of the store.
on
Integration Name
yes
The name in your integrations list.
Lemon Squeezy test store

Press Save. The page turns into Editing Lemon Squeezy integration with the badges ENABLED, NOT TESTED, NOT CONFIRMED, the integration id (int_3arT14C7MZ4pGvsSK1uTJj) and the Webhook URL — <Hub address>/v3/payments/webhooks/<account id>/<project id>/lemonsqueezy/<integration id>; outside PROD it ends with ?env=<ENV>. Copy it with its copy button and paste it at Lemon Squeezy (see Get your credentials). Received webhooks at the bottom lists every call Lemon Squeezy makes to it.

Events Norbix accepts from Lemon Squeezy (pick them at Lemon Squeezy and in your trigger): order_created, order_refunded, subscription_created, subscription_updated, subscription_cancelled, subscription_expired, subscription_payment_success, subscription_payment_failed.
Test and set as default
Test integration signs in to Lemon Squeezy with the API key. With the made-up key of this example it failed: Lemon Squeezy authentication failed for integration int_3arT14C7MZ4pGvsSK1uTJj: HTTP 401 Unauthorized. See Test an integration. Payments has no default integration — every enabled integration gets its own calls (Default integration).
Common errors
Lemon Squeezy authentication failed … HTTP 401 Unauthorized
Wrong or deleted API key.
Create a new key, type it, Save, test again.
Received webhooks shows 400
The signing secret in Cloud is not the one set on the Lemon Squeezy webhook.
Type the same secret on both sides and Save.
Required
A required field is empty — secrets count too on every save.
Fill the field; type every secret again before Save.
Do it from code
The client setup is on the Payments page. API: Save Payments Integration
Last updated
Was this helpful?