« tlly.dev

Playbooks · Integrations

Lemon Squeezy

GET orders with a Bearer key. Totals in the sample are cents. One page unless page[number] walks.

What you can track

Orders: count or sum of attributes.total by attributes.created_at. The list sample shows total: 1199 next to a formatted $11.99, so totals are minor units (cents). Scale by 0.01 for dollars. Subscriptions are a different route and were not fetched for this playbook.

Credential

An API key from Settings → API. Bearer. The key is shown once. Suggested name: LEMON_KEY. Host: api.lemonsqueezy.com.

Required headers on every request: Accept: application/vnd.api+json, Content-Type: application/vnd.api+json, and Authorization: Bearer.

Where to get it

Getting started.

tlly job

{"series":"lemon_revenue","cron":"0 7 * * *","request":{"url":"https://api.lemonsqueezy.com/v1/orders?page[size]=100","headers":{"Authorization":"Bearer {{secret:LEMON_KEY}}","Accept":"application/vnd.api+json","Content-Type":"application/vnd.api+json"}},"extract":{"format":"json","items":"data","date":"attributes.created_at","value":"attributes.total","aggregate":"sum"},"transform":[{"op":"scale","factor":0.01}]}

The list response includes meta.page (currentPage, lastPage, perPage, total). tlly can increment a numeric query parameter. page[number] may work as request.pages.param because it is a query key, but that was not tested here. Without paging, you only have one page (the sample default is 10; the URL above asks for 100). Say so if lastPage is greater than 1.

Filter paid orders only if the preview shows a status you can where (equals on attributes.status). where applies with aggregate.

Gotchas

Alert ideas

Red when yesterday’s paid total is zero. Yellow when refunds (a separate check of refunded) spike. The refunded path was on the sample object but a filtered job was not verified.

Verification

Checked 2026-10-26: key creation under Settings → API, Bearer, the three headers, base https://api.lemonsqueezy.com/v1/, and GET /v1/orders with data[].attributes.total and created_at. Page size and page[number] behaviour beyond the documented meta.page object is unverified.