All integrations

Lemon Squeezy

BUSINESS · COMMERCE & FINANCE

Stores, products, orders, and subscriptions in the account they connected.

Connecting Lemon Squeezy in practice

Lemon Squeezy allows 300 API calls a minute and splits test from live at the key rather than at the endpoint, so a working integration promoted to production needs credentials created separately in live mode and can see none of the test store’s data. Its compatibility promise also runs the other way from most: new resources, optional parameters, response properties and webhook event types can all appear without a version bump.

Scopes that draw scrutiny

  • API key (test mode) Interacts exclusively with test store data. Nothing about a passing test integration proves the live credential works, because it is a different key issued in a different mode.
  • API key (live mode) The production credential, created separately when you deploy. Lemon Squeezy documents no scope mechanism, so this is the whole grant over the store.

Rate limits

  • 300 API calls per minute.
  • Responses carry X-Ratelimit-Limit and X-Ratelimit-Remaining; over the limit returns 429 Too Many Requests.

Worth knowing

  • Adding resources, optional request parameters, response properties and webhook event types are all explicitly backwards-compatible changes, so a strict schema validator or an exhaustive switch on event type will break on a routine release.
  • The major version is a URL prefix (/v1), so there is no version header to pin and nothing to negotiate per request.
  • Only the JavaScript and Laravel SDKs are official; Go, Ruby, Rust, Swift, Python, PHP, Elixir and Java are community-maintained and lag the API.
  • Test and live keys look alike, so the classic failure is a production deploy still holding the test key and reporting an empty store rather than an auth error.

Checked against Lemon Squeezy API (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

lemonsqueezy_activate_license_keyWRITE

Activate a License Key via POST /v1/licenses/activate

api
lemonsqueezy_cancel_subscriptionWRITE

Cancel a Subscription via DELETE /v1/subscriptions/{subscription_id}

api
lemonsqueezy_create_checkoutWRITE

Create a Checkout via POST /v1/checkouts

api
lemonsqueezy_create_customerWRITE

Create a Customer via POST /v1/customers

api
lemonsqueezy_create_discountWRITE

Create a Discount via POST /v1/discounts

api
lemonsqueezy_create_usage_recordWRITE

Create a Usage Record via POST /v1/usage-records

api
lemonsqueezy_create_webhookWRITE

Create a Webhook via POST /v1/webhooks

api
lemonsqueezy_deactivate_license_keyWRITE

Deactivate a License Key via POST /v1/licenses/deactivate

api
lemonsqueezy_delete_discountWRITE

Delete a Discount via DELETE /v1/discounts/{discount_id}

api
lemonsqueezy_delete_webhookWRITE

Delete a Webhook via DELETE /v1/webhooks/{webhook_id}

api
lemonsqueezy_generate_order_invoiceWRITE

Generate Order Invoice via POST /v1/orders/{order_id}/generate-invoice

api
lemonsqueezy_generate_subscription_invoiceWRITE

Generate a Subscription Invoice via POST /v1/subscription-invoices/{subscription_invoice_id}/generate-invoice

api
lemonsqueezy_issue_order_refundWRITE

Issue order refund via POST /v1/orders/{order_id}/refund

api
lemonsqueezy_issue_subscription_invoice_refundWRITE

Issue subscription invoice refund via POST /v1/subscription-invoices/{subscription_invoice_id}/refund

api
lemonsqueezy_list_all_affiliatesREAD

List All Affiliates via GET /v1/affiliates

api
lemonsqueezy_list_all_checkoutsREAD

List All Checkouts via GET /v1/checkouts

api
lemonsqueezy_list_all_customersREAD

List All Customers via GET /v1/customers

api
lemonsqueezy_list_all_discount_redemptionsREAD

List All Discount Redemptions via GET /v1/discount-redemptions

api
lemonsqueezy_list_all_discountsREAD

List All Discounts via GET /v1/discounts

api
lemonsqueezy_list_all_filesREAD

List All Files via GET /v1/files

api
lemonsqueezy_list_all_license_key_instancesREAD

List All License Key Instances via GET /v1/license-key-instances

api
lemonsqueezy_list_all_license_keysREAD

List All License Keys via GET /v1/license-keys

api
lemonsqueezy_list_all_order_itemsREAD

List All Order Items via GET /v1/order-items

api
lemonsqueezy_list_all_ordersREAD

List All Orders via GET /v1/orders

api
lemonsqueezy_list_all_pricesREAD

List All Prices via GET /v1/prices

api
lemonsqueezy_list_all_productsREAD

List All Products via GET /v1/products

api
lemonsqueezy_list_all_storesREAD

List All Stores via GET /v1/stores

api
lemonsqueezy_list_all_subscription_invoicesREAD

List All Subscription Invoices via GET /v1/subscription-invoices

api
lemonsqueezy_list_all_subscription_itemsREAD

List All Subscription Items via GET /v1/subscription-items

api
lemonsqueezy_list_all_subscriptionsREAD

List All Subscriptions via GET /v1/subscriptions

api
lemonsqueezy_list_all_usage_recordsREAD

List All Usage Records via GET /v1/usage-records

api
lemonsqueezy_list_all_variantsREAD

List All Variants via GET /v1/variants

api
lemonsqueezy_list_all_webhooksREAD

List All Webhooks via GET /v1/webhooks

api
lemonsqueezy_retrieve_affiliateREAD

Retrieve an Affiliate via GET /v1/affiliates/{affiliate_id}

api
lemonsqueezy_retrieve_checkoutREAD

Retrieve a Checkout via GET /v1/checkouts/{checkout_id}

api
lemonsqueezy_retrieve_customerREAD

Retrieve a Customer via GET /v1/customers/{customer_id}

api
lemonsqueezy_retrieve_discountREAD

Retrieve a Discount via GET /v1/discounts/{discount_id}

api
lemonsqueezy_retrieve_discount_redemptionREAD

Retrieve a Discount Redemption via GET /v1/discount-redemptions/{discount_redemption_id}

api
lemonsqueezy_retrieve_fileREAD

Retrieve a File via GET /v1/files/{file_id}

api
lemonsqueezy_retrieve_license_keyREAD

Retrieve a License Key via GET /v1/license-keys/{license_key_id}

api
lemonsqueezy_retrieve_license_key_instanceREAD

Retrieve a License Key Instance via GET /v1/license-key-instances/{license_key_instance_id}

api
lemonsqueezy_retrieve_orderREAD

Retrieve an Order via GET /v1/orders/{order_id}

api
lemonsqueezy_retrieve_order_itemREAD

Retrieve an Order Item via GET /v1/order-items/{order_item_id}

api
lemonsqueezy_retrieve_priceREAD

Retrieve a Price via GET /v1/prices/{price_id}

api
lemonsqueezy_retrieve_productREAD

Retrieve a Product via GET /v1/products/{product_id}

api
lemonsqueezy_retrieve_storeREAD

Retrieve a Store via GET /v1/stores/{store_id}

api
lemonsqueezy_retrieve_subscriptionREAD

Retrieve a Subscription via GET /v1/subscriptions/{subscription_id}

api
lemonsqueezy_retrieve_subscription_invoiceREAD

Retrieve a Subscription Invoice via GET /v1/subscription-invoices/{subscription_invoice_id}

api
lemonsqueezy_retrieve_subscription_itemREAD

Retrieve a Subscription Item via GET /v1/subscription-items/{subscription_item_id}

api
lemonsqueezy_retrieve_subscription_item_current_usageREAD

Retrieve Subscription Item's Current Usage via GET /v1/subscription-items/{subscription_item_id}/current-usage

api
lemonsqueezy_retrieve_usage_recordREAD

Retrieve a Usage Record via GET /v1/usage-records/{usage_record_id}

api
lemonsqueezy_retrieve_userREAD

Retrieve User via GET /v1/users/me

api
lemonsqueezy_retrieve_variantREAD

Retrieve a Variant via GET /v1/variants/{variant_id}

api
lemonsqueezy_retrieve_webhookREAD

Retrieve a Webhook via GET /v1/webhooks/{webhook_id}

api
lemonsqueezy_update_customerWRITE

Update a Customer via PATCH /v1/customers/{customer_id}

api
lemonsqueezy_update_license_keyWRITE

Update a License Key via PATCH /v1/license-keys/{license_key_id}

api
lemonsqueezy_update_subscriptionWRITE

Update a Subscription via PATCH /v1/subscriptions/{subscription_id}

api
lemonsqueezy_update_subscription_itemWRITE

Update a Subscription Item via PATCH /v1/subscription-items/{subscription_item_id}

api
lemonsqueezy_update_webhookWRITE

Update a Webhook via PATCH /v1/webhooks/{webhook_id}

api
lemonsqueezy_validate_license_keyREAD

Validate a License Key via POST /v1/licenses/validate

api

Put Lemon Squeezy behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.