0.02
The project is in a healthy, maintained state
Ruby library for interacting with the Lemon Squeezy API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 2.0
 Project Readme

LemonSqueezy Ruby Library

A Ruby library for the Lemon Squeezy API.

Installation

Add this line to your application's Gemfile:

gem "lemonsqueezy", "~> 1.0"

Usage

Set API Key

Firstly you'll need to create an API Key on your settings page.

LemonSqueezy.configure do |config|
  config.api_key = ENV["LEMON_SQUEEZY_API_KEY"]
end

User

# Retrieve the authenticated user
LemonSqueezy::User.me

Stores

# Retrieves a list of Stores
LemonSqueezy::Store.list

# Retrieves a Store
LemonSqueezy::Store.retrieve id: 123

Customers

# Retrieves a list of Customers
LemonSqueezy::Customer.list

# Retrieves a list of Customers for a store
LemonSqueezy::Customer.list store_id: 123

# Retrieves a list of Customers that contain the supplied email
LemonSqueezy::Customer.list email: "test@hello.com"

# Retrieves a Customer
LemonSqueezy::Customer.retrieve id: 123

# Create a customer
# https://docs.lemonsqueezy.com/api/customers#create-a-customer
LemonSqueezy::Customer.create store_id: 123, name: "Customer name", email: "test@hello.com"

# Update a customer
# https://docs.lemonsqueezy.com/api/customers#update-a-customer
LemonSqueezy::Customer.update id: 123, name: "Customer name", status: "archived"

Products

# Retrieves a list of Products
LemonSqueezy::Product.list

# Retrieves a list of Products for a specified Store
LemonSqueezy::Product.list store_id: 123

# Retrieves a Product
LemonSqueezy::Product.retrieve id: 123

Product Variants

# Retrieves a list of Variants
LemonSqueezy::Variant.list

# Retrieves a list of Variants for a Product
LemonSqueezy::Variant.list product_id: 123

# Retrieves a Variant
LemonSqueezy::Variant.retrieve id: 123

Prices

# Retrieves a list of Prices
LemonSqueezy::Price.list

# Retrieves a list of Prices for a Variant
LemonSqueezy::Price.list variant_id: 123

# Retrieves a Price
LemonSqueezy::Price.retrieve id: 123

Orders

# Retrieves a list of Orders
LemonSqueezy::Order.list

# Retrieves a list of Orders for a specified store
LemonSqueezy::Order.list product_id: 123

# Retrieves a list of Orders for an email address
LemonSqueezy::Order.list email: "hello@test.com"

# Retrieves an Order
LemonSqueezy::Order.retrieve id: 123

# Retrieves the items on an Order
LemonSqueezy::Order.retrieve order_items: 123

Subscriptions

# Retrieves a list of Subscriptions
LemonSqueezy::Subscription.list

# Retrieves a list of Subscriptions for a store
LemonSqueezy::Subscription.list store_id: 123

# Retrieves a list of Subscriptions for an Order
LemonSqueezy::Subscription.list order_id: 123

# Retrieves a list of Subscriptions for a product
LemonSqueezy::Subscription.list product_id: 123

# Retrieves a Subscription
LemonSqueezy::Subscription.retrieve id: 123

# Updates a Subscription
# https://docs.lemonsqueezy.com/api/subscriptions#update-a-subscription
LemonSqueezy::Subscription.update id: 123, variant_id: 123

# Pauses a Subscription
# Kind should be void or free
# resumes_at can be nil or an ISO-8601 formatted date-time string indicating
# when the subscription will continue collecting payments.
LemonSqueezy::Subscription.pause id: 123, kind: "void", resumes_at: nil

# Un-Pause a Subscription
LemonSqueezy::Subscription.unpause id: 123

# Cancel a Subscription
LemonSqueezy::Subscription.cancel id: 123

# Un-Cancel a Subscription
LemonSqueezy::Subscription.uncancel id: 123

# Change the Plan for a Subscription
# invoice_immediately and disable_prorations are optional and false by default.
LemonSqueezy::Subscription.change_plan id: 123, plan_id: 111, variant_id: 111, invoice_immediately: false, disable_prorations: false

Subscription Invoices

# Retrieves a list of Subscription Invoices
LemonSqueezy::SubscriptionInvoice.list

# Retrieves a list of Subscription Invoices for a specified Store
LemonSqueezy::SubscriptionInvoice.list store_id: 123

# Retrieves a list of Subscription Invoices for a specified Subscription
LemonSqueezy::SubscriptionInvoice.list subscription_id: 123

# Retrieves a Subscription Invoice
LemonSqueezy::SubscriptionInvoice.retrieve id: 123

Subscription Items

# Retrieves a list of Subscription Items
LemonSqueezy::SubscriptionItem.list

# Retrieves a list of Subscription Items for a specified Subscription
LemonSqueezy::SubscriptionItem.list subscription_id: 123

# Retrieves a Subscription Item
LemonSqueezy::SubscriptionItem.retrieve id: 123

# Updates a Subscription Item
# https://docs.lemonsqueezy.com/api/subscription-items#update-a-subscription-item
LemonSqueezy::SubscriptionItem.update id: 123, quantity: 2

# Retrieve subscription item's current usage
# Returns 404 if the product/variant does not have usage based billing enabled
# https://docs.lemonsqueezy.com/api/subscription-items#retrieve-a-subscription-item-s-current-usage
LemonSqueezy::SubscriptionItem.current_usage id: 123

Discounts

# Retrieves a list of Discounts
LemonSqueezy::Discount.list

# Retrieves a list of Discounts for a store
LemonSqueezy::Discount.list store_id: 123

# Retrieves a Discount
LemonSqueezy::Discount.retrieve id: 123

# Create a Discount
# https://docs.lemonsqueezy.com/api/discounts#create-a-discount
LemonSqueezy::Discount.create store_id: 123, name: "20 Off", code: "20OFF", amount: 20, amount_type: "percent"

# Delete a Discount
LemonSqueezy::Discount.delete id: 123

Discount Redemptions

# Retrieves a list of Discount Redemptions
LemonSqueezy::DiscountRedemption.list

# Retrieves a list of Discount Redemptions for a Discount
LemonSqueezy::DiscountRedemption.list discount_id: 123

# Retrieves a list of Discount Redemptions for a Order
LemonSqueezy::DiscountRedemption.list order_id: 123

# Retrieves a Discount Redemption
LemonSqueezy::DiscountRedemption.retrieve id: 123

Licenses

This API is used to manage licenses generated by Lemon Squeezy. Docs

# Validate a license key
LemonSqueezy::License.validate key: "abc123-abc123-abc123"

# Activate a license key
# Instance is a label to identify this activation
LemonSqueezy::License.activate key: "abc123-abc123-abc123", instance: "Activation 1"

# Deactivate a license key
# Instance is the License Key Instance ID
LemonSqueezy::License.deactivate key: "abc123-abc123-abc123", instance: "abc123"

License Keys

# Retrieves a list of License Keys
LemonSqueezy::LicenseKey.list

# Retrieves a list of License Keys for a store
LemonSqueezy::LicenseKey.list store_id: 123

# Retrieves a list of License Keys for an order
LemonSqueezy::LicenseKey.list order_id: 123

# Retrieves a License Key
LemonSqueezy::LicenseKey.retrieve id: 123

# Updates a License Key
# https://docs.lemonsqueezy.com/api/license-keys#update-a-license-key
LemonSqueezy::LicenseKey.update id: 123, activation_limit: 10, disabled: false

License Key Instances

# Retrieves a list of License Key Instances
LemonSqueezy::LicenseKeyInstances.list

# Retrieves a list of License Key Instances for a license key
LemonSqueezy::LicenseKeyInstances.list license_key_id: 123

# Retrieves a License Key Instance
LemonSqueezy::LicenseKeyInstances.retrieve id: 123

Files

# Retrieves a list of Files
LemonSqueezy::File.list

# Retrieves a File
LemonSqueezy::File.retrieve id: 123

Checkouts

# Retrieves a list of Checkouts
LemonSqueezy::Checkout.list

# Retrieves a list of Checkouts for a store
LemonSqueezy::Checkout.list store_id: 123

# Retrieves a list of Checkouts for a variant
LemonSqueezy::Checkout.list variant_id: 123

# Retrieves a Checkout
LemonSqueezy::Checkout.retrieve id: 123

# Creates a Checkout
# View docs for more info: https://docs.lemonsqueezy.com/api/checkouts#create-a-checkout
# store_id and variant_id are required
# Any other parameters are send as "attributes" to the API
LemonSqueezy::Checkout.create store_id: 123, variant_id: 321, custom_price: 500, product_options: {name: "a test name"}

Webhooks

# List all Webhooks
LemonSqueezy::Webhook.list

# List all Webhooks for a Store
LemonSqueezy::Webhook.list store_id: 123

# Retrieve a Webhook
LemonSqueezy::Webhook.retrieve id: 123

# Create a Webhook
# https://docs.lemonsqueezy.com/api/webhooks#create-a-webhook
LemonSqueezy::Webhook.create store_id: 123, url: "", secret: "abc", events: ["order_created"]

# Update a Webhook
# https://docs.lemonsqueezy.com/api/webhooks#update-a-webhook
LemonSqueezy::Webhook.update id: 123, events: ["order_created", "subscription_created"]

# Delete a Webhook
LemonSqueezy::Webhook.delete id: 123

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/deanpcmad/lemonsqueezy.

License

The gem is available as open source under the terms of the MIT License.