The usage endpoints let an installed app charge per-event — one
credit per SMS sent, per AI generation, per shipping label printed —
on top of a flat monthly subscription. Each call records meter ticks for
the current billing period under the app’s metered Stripe subscription
item.The metered component is declared on the app’s pricing plan
(pricing.usage in app.json, see
Usage Billing). Every usage event you POST is
reported to Stripe behind a unique subscription_item.id, the cost
(quantity × usageUnitAmount) is checked against the merchant-approved
cap, and a USAGE billing transaction is recorded so it
surfaces in the merchant’s billing detail page.Auth: app access token (OAuth). The endpoint resolves the
installation from the token’s aud claim — apps never pass
installationId in the body.
Endpoint
Scope
Purpose
POST /api/v1/billing/usage
write_billing
Record N units of usage
GET /api/v1/billing/usage
read_billing
Read current cap, accrued spend, period end
POST /api/v1/billing/usage/cap
write_billing
Lower (immediate) or raise (approval) the cap
Usage is checked against the cap before the Stripe call. If the
projected accrual would exceed the cap, the endpoint returns 402
with code: USAGE_CAP_EXCEEDED and no usage record is created. Apps
should treat that response as a hard signal to either stop the
underlying action or call POST /usage/cap to request a raise.
Integer number of units consumed by this event. Must be >= 1. Reject
fractional values — scale your metered unit instead (tokens rather
than kilo_tokens).
Optional client-supplied key. Forwarded to Stripe as the
subscriptionItems.createUsageRecord idempotency key (namespaced to
the installation so collisions across apps are impossible). Retries
with the same key are always safe; without one, double-billing is
possible on network retries.
The message field is a JSON-encoded payload — parse it client-side to
decide how to respond. code: USAGE_CAP_EXCEEDED is stable; the cents
fields let you compute how much headroom is left and prompt the
merchant to raise the cap via POST /usage/cap.
GET /api/v1/billing/usageReturns the metered configuration plus the current period’s accrual.
Apps typically call this from their admin home iframe to render a
“used X of Y this month” progress bar.
POST /api/v1/billing/usage/capThe cap is the merchant’s per-period spending ceiling on the metered
component. It defaults to the value declared in pricing.usage.cappedAmount
when the merchant first subscribes, and can be changed afterwards:
Lowering the cap takes effect immediately, but cannot go below
what the merchant has already accrued this period (would create an
instant USAGE_CAP_EXCEEDED loop).
Raising the cap requires merchant approval. The endpoint returns
a Stripe Billing Portal confirmationUrl the merchant must visit to
authorise the new cap; the row isn’t updated until they confirm.
Requested cap in dollars (integer cents on the wire is fine —
values are rounded). 0 is allowed and effectively disables further
usage charges until the cap is raised.
Open confirmationUrl in a top-level browser tab (don’t iframe — Stripe
blocks framing the billing portal). After the merchant confirms, the
backend updates the row; the next POST /usage call sees the new cap.
Mint a stable idempotencyKey per real-world event. A message-id, a
generation-id, or a UUIDv4 you record alongside the event all work.
Keys are namespaced server-side as usage:{installationId}:{key} and
passed to Stripe as the canonical idempotency key. Stripe retains
idempotency keys for 24 h, so retries within that window are safe.
Without a key, network retries can produce duplicate UsageRecord
records on Stripe and duplicate billing transactions
(the unique index on stripeUsageRecordId catches the second insert,
but you’ve still double-billed the merchant on Stripe’s side).
Transactions — every
billing transaction (flat + usage + invoice).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LaunchMyStore Developers","colors":{"primary":"#3B82F6","light":"#60A5FA","dark":"#1E40AF"},"logo":{"light":"https://mintcdn.com/tradefusiontechnologiespvtltd/h0D_voj1Mzg300-x/logo/light.svg?fit=max\u0026auto=format\u0026n=h0D_voj1Mzg300-x\u0026q=85\u0026s=22ebdb2605f91ccf72f71097a82d6928","dark":"https://mintcdn.com/tradefusiontechnologiespvtltd/h0D_voj1Mzg300-x/logo/dark.svg?fit=max\u0026auto=format\u0026n=h0D_voj1Mzg300-x\u0026q=85\u0026s=d0bd7a151fcc8504ff88d67bdf086207"},"favicon":"https://mintcdn.com/tradefusiontechnologiespvtltd/GZ5CeZvKFUHoQpDN/favicon.svg?fit=max\u0026auto=format\u0026n=GZ5CeZvKFUHoQpDN\u0026q=85\u0026s=e74621046b0cb57582fc4ce3b5615df7","api":{"playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.launchmystore.io"}},"navbar":{"links":[{"href":"mailto:support@launchmystore.io","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.launchmystore.io"}},"footer":{"socials":{"twitter":"https://twitter.com/launchmystore","github":"https://github.com/launchmystore","linkedin":"https://linkedin.com/company/launchmystore"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/launchmystore"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/launchmystore"},{"anchor":"App Store","icon":"grid-2","href":"https://app.launchmystore.io/marketplace"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tradefusiontechnologiespvtltd","hasAudioNarration":false,"actualSubdomain":"tradefusiontechnologiespvtltd","customDomains":["docs.launchmystore.io"],"gitSource":{"type":"github","owner":"launchmystore","repo":"lms-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad5e02b03b76e0d8ece410d","collectionId":"112f590e-f500-486d-a909-11c0921ce922","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad5e02b03b76e0d8ece410d"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ad5e02b03b76e0d8ece410d","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":146},{"language":"default","tag":"Documentation","count":64},{"language":"default","tag":"Extensions","count":18},{"language":"default","tag":"Metafields","count":13},{"language":"default","tag":"Theme Development","count":13},{"language":"default","tag":"Functions","count":13},{"language":"default","tag":"Aqua Basics","count":11},{"language":"default","tag":"Get Started","count":11},{"language":"default","tag":"Blogs","count":10},{"language":"default","tag":"App Bridge","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/app-billing/usage-records","slug":"/api-reference/app-billing/usage-records","pageMetadata":{"title":"Usage Records","api":"POST https://api.launchmystore.io/api/v1/billing/usage","description":"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.","href":"/api-reference/app-billing/usage-records"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,ParamField,ResponseField,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The usage endpoints let an installed app charge `,_jsx(_components.strong,{children:`per-event`}),` — one\ncredit per SMS sent, per AI generation, per shipping label printed —\non top of a flat monthly subscription. Each call records meter ticks for\nthe current billing period under the app’s metered Stripe subscription\nitem.`]}),`\n`,_jsxs(_components.p,{children:[`The metered component is declared on the app’s pricing plan\n(`,_jsx(_components.code,{children:`pricing.usage`}),` in `,_jsx(_components.code,{children:`app.json`}),`, see\n`,_jsx(_components.a,{href:`/billing/usage-billing`,children:`Usage Billing`}),`). Every usage event you POST is\nreported to Stripe behind a unique `,_jsx(_components.code,{children:`subscription_item.id`}),`, the cost\n(`,_jsx(_components.code,{children:`quantity × usageUnitAmount`}),`) is checked against the merchant-approved\ncap, and a `,_jsx(_components.code,{children:`USAGE`}),` billing transaction is recorded so it\nsurfaces in the merchant’s billing detail page.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Auth:`}),` app access token (OAuth). The endpoint resolves the\ninstallation from the token’s `,_jsx(_components.code,{children:`aud`}),` claim — apps never pass\n`,_jsx(_components.code,{children:`installationId`}),` in the body.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Endpoint`}),_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /api/v1/billing/usage`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`write_billing`})}),_jsx(_components.td,{children:`Record N units of usage`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /api/v1/billing/usage`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`read_billing`})}),_jsx(_components.td,{children:`Read current cap, accrued spend, period end`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /api/v1/billing/usage/cap`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`write_billing`})}),_jsx(_components.td,{children:`Lower (immediate) or raise (approval) the cap`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Usage is checked against the cap `,_jsx(_components.strong,{children:`before`}),` the Stripe call. If the\nprojected accrual would exceed the cap, the endpoint returns `,_jsx(_components.code,{children:`402`}),`\nwith `,_jsx(_components.code,{children:`code: USAGE_CAP_EXCEEDED`}),` and no usage record is created. Apps\nshould treat that response as a hard signal to either stop the\nunderlying action or call `,_jsx(_components.code,{children:`POST /usage/cap`}),` to request a raise.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`record-a-usage-event`,children:`Record a usage event`}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`POST /api/v1/billing/usage`})}),`\n`,_jsx(ParamField,{body:`quantity`,type:`integer`,required:true,id:`param-quantity`,children:_jsxs(_components.p,{children:[`Integer number of units consumed by this event. Must be `,_jsx(_components.code,{children:`>= 1`}),`. Reject\nfractional values — scale your metered unit instead (`,_jsx(_components.code,{children:`tokens`}),` rather\nthan `,_jsx(_components.code,{children:`kilo_tokens`}),`).`]})}),`\n`,_jsx(ParamField,{body:`idempotencyKey`,type:`string`,id:`param-idempotency-key`,children:_jsxs(_components.p,{children:[`Optional client-supplied key. Forwarded to Stripe as the\n`,_jsx(_components.code,{children:`subscriptionItems.createUsageRecord`}),` idempotency key (namespaced to\nthe installation so collisions across apps are impossible). Retries\nwith the same key are always safe; without one, double-billing is\npossible on network retries.`]})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.launchmystore.io/api/v1/billing/usage\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer \u003cAPP_ACCESS_TOKEN>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"quantity\": 1,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"idempotencyKey\": \"sms-msg-7c2f1c\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`data.recordedAt`,type:`string`,id:`param-data-recorded-at`,children:`ISO timestamp Stripe used for the usage record.`}),`\n`,_jsx(ResponseField,{name:`data.quantity`,type:`integer`,id:`param-data-quantity`,children:`Echo of the recorded quantity.`}),`\n`,_jsx(ResponseField,{name:`data.unitAmount`,type:`number`,id:`param-data-unit-amount`,children:`Per-unit price from the app’s pricing plan (dollars).`}),`\n`,_jsxs(ResponseField,{name:`data.amountCents`,type:`integer`,id:`param-data-amount-cents`,children:[`Cost of this event (`,_jsx(_components.code,{children:`quantity × unitAmount × 100`}),`).`]}),`\n`,_jsxs(ResponseField,{name:`data.accruedAmountCents`,type:`integer`,id:`param-data-accrued-amount-cents`,children:[`Running total accrued in the current billing period `,_jsx(_components.strong,{children:`after`}),` this event.`]}),`\n`,_jsxs(ResponseField,{name:`data.capAmountCents`,type:`integer | null`,id:`param-data-cap-amount-cents`,children:[`Merchant-approved cap in cents (`,_jsx(_components.code,{children:`null`}),` if uncapped).`]}),`\n`,_jsxs(ResponseField,{name:`data.remainingCents`,type:`integer | null`,id:`param-data-remaining-cents`,children:[`Cap headroom after this event (`,_jsx(_components.code,{children:`null`}),` if uncapped).`]}),`\n`,_jsxs(ResponseField,{name:`data.stripeUsageRecordId`,type:`string`,id:`param-data-stripe-usage-record-id`,children:[`Stripe `,_jsx(_components.code,{children:`mbur_…`}),` usage-record id (also stored on the billing transaction).`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"recordedAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-17T18:42:11.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"quantity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unitAmount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.05`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amountCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accruedAmountCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`605`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"capAmountCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remainingCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4395`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"stripeUsageRecordId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"mbur_1OqW2NABCxyz\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`cap-exceeded`,children:`Cap exceeded`}),`\n`,_jsxs(_components.p,{children:[`When the projected accrual would exceed the cap, the endpoint returns\n`,_jsx(_components.code,{children:`402`}),` and `,_jsx(_components.strong,{children:`no`}),` usage is recorded:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`402`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`code`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`USAGE_CAP_EXCEEDED`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`capCents`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:1000,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`accruedCents`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:600,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`remainingCents`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:400}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`message`}),` field is a JSON-encoded payload — parse it client-side to\ndecide how to respond. `,_jsx(_components.code,{children:`code: USAGE_CAP_EXCEEDED`}),` is stable; the cents\nfields let you compute how much headroom is left and prompt the\nmerchant to raise the cap via `,_jsx(_components.code,{children:`POST /usage/cap`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`get-current-usage-state`,children:`Get current usage state`}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`GET /api/v1/billing/usage`})}),`\n`,_jsx(_components.p,{children:`Returns the metered configuration plus the current period’s accrual.\nApps typically call this from their admin home iframe to render a\n“used X of Y this month” progress bar.`}),`\n`,_jsx(Heading,{level:`3`,id:`response-2`,children:`Response`}),`\n`,_jsxs(ResponseField,{name:`data.unitName`,type:`string | null`,id:`param-data-unit-name`,children:[`Human label from the pricing plan, e.g. `,_jsx(_components.code,{children:`SMS`}),`, `,_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`AI generation`}),`.`]}),`\n`,_jsx(ResponseField,{name:`data.unitAmount`,type:`number | null`,id:`param-data-unit-amount-1`,children:`Per-unit price in dollars.`}),`\n`,_jsxs(ResponseField,{name:`data.capAmountCents`,type:`integer | null`,id:`param-data-cap-amount-cents-1`,children:[`Merchant-approved cap in cents (`,_jsx(_components.code,{children:`null`}),` if uncapped).`]}),`\n`,_jsx(ResponseField,{name:`data.accruedAmountCents`,type:`integer`,id:`param-data-accrued-amount-cents-1`,children:`Cents accrued so far this billing period.`}),`\n`,_jsxs(ResponseField,{name:`data.remainingCents`,type:`integer | null`,id:`param-data-remaining-cents-1`,children:[`Cap headroom (`,_jsx(_components.code,{children:`null`}),` if uncapped).`]}),`\n`,_jsxs(ResponseField,{name:`data.currentPeriodEnd`,type:`string | null`,id:`param-data-current-period-end`,children:[`ISO timestamp when the current Stripe period ends. `,_jsx(_components.code,{children:`accruedAmountCents`}),` resets to 0 here.`]}),`\n`,_jsxs(ResponseField,{name:`data.meteredItemId`,type:`string | null`,id:`param-data-metered-item-id`,children:[`Stripe `,_jsx(_components.code,{children:`si_…`}),` subscription-item id this usage attaches to.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.launchmystore.io/api/v1/billing/usage\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer \u003cAPP_ACCESS_TOKEN>\"`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unitName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SMS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unitAmount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.05`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"capAmountCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accruedAmountCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`605`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remainingCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4395`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currentPeriodEnd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-06-01T00:00:00.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"meteredItemId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"si_OqW2NABCxyz\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`update-the-usage-cap`,children:`Update the usage cap`}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`POST /api/v1/billing/usage/cap`})}),`\n`,_jsxs(_components.p,{children:[`The cap is the merchant’s per-period spending ceiling on the metered\ncomponent. It defaults to the value declared in `,_jsx(_components.code,{children:`pricing.usage.cappedAmount`}),`\nwhen the merchant first subscribes, and can be changed afterwards:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Lowering`}),` the cap takes effect immediately, but cannot go below\nwhat the merchant has already accrued this period (would create an\ninstant `,_jsx(_components.code,{children:`USAGE_CAP_EXCEEDED`}),` loop).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Raising`}),` the cap requires merchant approval. The endpoint returns\na Stripe Billing Portal `,_jsx(_components.code,{children:`confirmationUrl`}),` the merchant must visit to\nauthorise the new cap; the row isn’t updated until they confirm.`]}),`\n`]}),`\n`,_jsx(ParamField,{body:`cappedAmount`,type:`number`,required:true,id:`param-capped-amount`,children:_jsxs(_components.p,{children:[`Requested cap in `,_jsx(_components.strong,{children:`dollars`}),` (integer cents on the wire is fine —\nvalues are rounded). `,_jsx(_components.code,{children:`0`}),` is allowed and effectively disables further\nusage charges until the cap is raised.`]})}),`\n`,_jsx(ParamField,{body:`returnUrl`,type:`string`,id:`param-return-url`,children:_jsx(_components.p,{children:`URL the merchant returns to after confirming a raise in the Stripe\nBilling Portal. Defaults to the app developer’s the admin origin.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.launchmystore.io/api/v1/billing/usage/cap\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer \u003cAPP_ACCESS_TOKEN>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"cappedAmount\": 100,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"returnUrl\": \"https://my-app.example.com/billing/return\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`response-—-immediate-lowering`,children:`Response — immediate (lowering)`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requiresApproval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"newCap\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`response-—-approval-required-raising`,children:`Response — approval required (raising)`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requiresApproval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"confirmationUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://billing.stripe.com/p/session/test_…\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currentCap\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestedCap\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.code,{children:`confirmationUrl`}),` in a top-level browser tab (don’t iframe — Stripe\nblocks framing the billing portal). After the merchant confirms, the\nbackend updates the row; the next `,_jsx(_components.code,{children:`POST /usage`}),` call sees the new cap.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`idempotency-guidelines`,children:`Idempotency guidelines`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Mint a stable `,_jsx(_components.code,{children:`idempotencyKey`}),` per real-world event. A message-id, a\ngeneration-id, or a UUIDv4 you record alongside the event all work.`]}),`\n`,_jsxs(_components.li,{children:[`Keys are namespaced server-side as `,_jsx(_components.code,{children:`usage:{installationId}:{key}`}),` and\npassed to Stripe as the canonical idempotency key. Stripe retains\nidempotency keys for 24 h, so retries within that window are safe.`]}),`\n`,_jsxs(_components.li,{children:[`Without a key, network retries can produce duplicate `,_jsx(_components.code,{children:`UsageRecord`}),`\nrecords on Stripe and duplicate billing transactions\n(the unique index on `,_jsx(_components.code,{children:`stripeUsageRecordId`}),` catches the second insert,\nbut you’ve still double-billed the merchant on Stripe’s side).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`error-codes`,children:`Error codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`quantity \u003c 1`}),`, fractional, or non-integer.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[`Installation has no `,_jsx(_components.code,{children:`stripeMeteredItemId`}),` (app pricing has no `,_jsx(_components.code,{children:`usage`}),` component).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[`App has no `,_jsx(_components.code,{children:`usageUnitAmount`}),` configured.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`cappedAmount`}),` below already-accrued spend (on `,_jsx(_components.code,{children:`/usage/cap`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:`Missing or invalid app access token.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`402`})}),_jsxs(_components.td,{children:[`Subscription not `,_jsx(_components.code,{children:`active`}),` or `,_jsx(_components.code,{children:`trialing`}),` — see `,_jsx(_components.code,{children:`billingStatus`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`402`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`USAGE_CAP_EXCEEDED`}),` — see body for `,_jsx(_components.code,{children:`capCents`}),` / `,_jsx(_components.code,{children:`accruedCents`}),` / `,_jsx(_components.code,{children:`remainingCents`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsxs(_components.td,{children:[`Token lacks `,_jsx(_components.code,{children:`write_billing`}),` (POST) or `,_jsx(_components.code,{children:`read_billing`}),` (GET) scope.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`Installation or app not found.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/billing/usage-billing`,children:`Usage Billing`}),` — conceptual guide to declaring\nmetered pricing in `,_jsx(_components.code,{children:`app.json`}),` and the full event → invoice flow.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/app-billing/subscriptions`,children:`Subscriptions`}),` — flat\nmonthly subscription state.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/app-billing/transactions`,children:`Transactions`}),` — every\nbilling transaction (flat + usage + invoice).`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Usage Records","api":"POST https://api.launchmystore.io/api/v1/billing/usage","description":"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.","href":"/api-reference/app-billing/usage-records"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Record a usage event","slug":"record-a-usage-event","depth":2,"children":[{"title":"Response","slug":"response","depth":3,"children":[]},{"title":"Cap exceeded","slug":"cap-exceeded","depth":3,"children":[]}]},{"title":"Get current usage state","slug":"get-current-usage-state","depth":2,"children":[{"title":"Response","slug":"response-2","depth":3,"children":[]}]},{"title":"Update the usage cap","slug":"update-the-usage-cap","depth":2,"children":[{"title":"Response — immediate (lowering)","slug":"response-—-immediate-lowering","depth":3,"children":[]},{"title":"Response — approval required (raising)","slug":"response-—-approval-required-raising","depth":3,"children":[]}]},{"title":"Idempotency guidelines","slug":"idempotency-guidelines","depth":2,"children":[]},{"title":"Error codes","slug":"error-codes","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{},"endpoint":{"title":"Usage Records","path":"/api/v1/billing/usage","servers":[{"url":"https://api.launchmystore.io"}],"method":"post","request":{"security":[{"title":"Bearer Auth","parameters":{"header":{"Authorization":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."}},"query":{},"cookie":{}}}],"parameters":{"query":{},"header":{},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"quantity":[{"type":"integer","description":"Integer number of units consumed by this event. Must be `>= 1` . Reject fractional values — scale your metered unit instead ( `tokens` rather than `kilo_tokens` ).","required":true}],"idempotencyKey":[{"type":"string","description":"Optional client-supplied key. Forwarded to Stripe as the `subscriptionItems.createUsageRecord` idempotency key (namespaced to the installation so collisions across apps are impossible). Retries with the same key are always safe; without one, double-billing is possible on network retries."}],"cappedAmount":[{"type":"number","description":"Requested cap in dollars (integer cents on the wire is fine — values are rounded). `0` is allowed and effectively disables further usage charges until the cap is raised.","required":true}],"returnUrl":[{"type":"string","description":"URL the merchant returns to after confirming a raise in the Stripe Billing Portal. Defaults to the app developer’s the admin origin."}]}}],"examples":{"example":{"value":{"quantity":123,"idempotencyKey":"\u003cstring>","cappedAmount":123,"returnUrl":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"data.recordedAt":[{"type":"string","description":"ISO timestamp Stripe used for the usage record."}],"data.quantity":[{"type":"integer","description":"Echo of the recorded quantity."}],"data.unitAmount":[{"type":"object","properties":{},"description":"Per-unit price in dollars."}],"data.amountCents":[{"type":"integer","description":"Cost of this event ( `quantity × unitAmount × 100` )."}],"data.accruedAmountCents":[{"type":"integer","description":"Cents accrued so far this billing period."}],"data.capAmountCents":[{"type":"object","properties":{},"description":"Merchant-approved cap in cents ( `null` if uncapped)."}],"data.remainingCents":[{"type":"object","properties":{},"description":"Cap headroom ( `null` if uncapped)."}],"data.stripeUsageRecordId":[{"type":"string","description":"Stripe `mbur_…` usage-record id (also stored on the billing transaction)."}],"data.unitName":[{"type":"object","properties":{},"description":"Human label from the pricing plan, e.g. `SMS` , `email` , `AI generation` ."}],"data.currentPeriodEnd":[{"type":"object","properties":{},"description":"ISO timestamp when the current Stripe period ends. `accruedAmountCents` resets to 0 here."}],"data.meteredItemId":[{"type":"object","properties":{},"description":"Stripe `si_…` subscription-item id this usage attaches to."}]}}],"examples":{"example":{"value":{"data.recordedAt":"\u003cstring>","data.quantity":123,"data.unitAmount":{},"data.amountCents":123,"data.accruedAmountCents":123,"data.capAmountCents":{},"data.remainingCents":{},"data.stripeUsageRecordId":"\u003cstring>","data.unitName":{},"data.currentPeriodEnd":{},"data.meteredItemId":{}}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"tradefusiontechnologiespvtltd","siteName":"LaunchMyStore Developers","title":"Usage Records - LaunchMyStore Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-28T11:25:45.446Z","originalFileLocation":"api-reference/app-billing/usage-records.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"LaunchMyStore Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Usage Records - LaunchMyStore Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LaunchMyStore Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.launchmystore.io/api-reference/app-billing/usage-records\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tradefusiontechnologiespvtltd.mintlify.app/_mintlify/api/og/v2?division=App+Billing\u0026amp;title=Usage+Records\u0026amp;description=Record+metered+%28usage-based%29+charges+and+inspect+the+current+cap%2C+accrued+spend%2C+and+remaining+headroom+for+an+installation.\u0026amp;theme=7262308de22b2a4febf4ce58\u0026amp;signature=f4eeb7e14f9fa85da0b329afa31ce0f8236965db45bf7fbb682595c837cfbd5c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Usage Records - LaunchMyStore Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tradefusiontechnologiespvtltd.mintlify.app/_mintlify/api/og/v2?division=App+Billing\u0026amp;title=Usage+Records\u0026amp;description=Record+metered+%28usage-based%29+charges+and+inspect+the+current+cap%2C+accrued+spend%2C+and+remaining+headroom+for+an+installation.\u0026amp;theme=7262308de22b2a4febf4ce58\u0026amp;signature=f4eeb7e14f9fa85da0b329afa31ce0f8236965db45bf7fbb682595c837cfbd5c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tradefusiontechnologiespvtltd/AxaKSy1cjHGQnY9E/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LaunchMyStore Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.launchmystore.io/api-reference/app-billing/usage-records\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/app-billing/usage-records.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.launchmystore.io/#organization\",\"name\":\"LaunchMyStore Developers\",\"url\":\"https://docs.launchmystore.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tradefusiontechnologiespvtltd/h0D_voj1Mzg300-x/logo/light.svg?fit=max\u0026auto=format\u0026n=h0D_voj1Mzg300-x\u0026q=85\u0026s=22ebdb2605f91ccf72f71097a82d6928\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.launchmystore.io#website\",\"name\":\"LaunchMyStore Developers\",\"url\":\"https://docs.launchmystore.io\",\"publisher\":{\"@id\":\"https://docs.launchmystore.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records#webpage\",\"url\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records\",\"name\":\"Usage Records\",\"description\":\"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\",\"dateModified\":\"2026-06-28T11:25:45.446Z\",\"isPartOf\":{\"@id\":\"https://docs.launchmystore.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"App Billing\",\"item\":\"https://docs.launchmystore.io/api-reference/app-billing/subscriptions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Usage Records\",\"item\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records#apireference\",\"headline\":\"Usage Records\",\"name\":\"Usage Records\",\"description\":\"Record metered (usage-based) charges and inspect the current cap, accrued spend, and remaining headroom for an installation.\",\"url\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records\",\"mainEntityOfPage\":{\"@id\":\"https://docs.launchmystore.io/api-reference/app-billing/usage-records#webpage\"},\"dateModified\":\"2026-06-28T11:25:45.446Z\",\"publisher\":{\"@id\":\"https://docs.launchmystore.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.launchmystore.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LaunchMyStore Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LaunchMyStore Developers","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/launchmystore"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/launchmystore"},{"anchor":"App Store","icon":"grid-2","href":"https://app.launchmystore.io/marketplace"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Theme Development","pages":[{"title":"Theme Development","href":"/aqua/overview"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"API Overview","href":"/api-reference/overview"},{"title":"API Authentication","href":"/api-reference/authentication"},{"title":"API Rate Limits","href":"/api-reference/rate-limits"}]},{"group":"OAuth","pages":[{"title":"Authorize","api":"GET https://api.launchmystore.io/apps/oauth/authorize","href":"/api-reference/oauth/authorize"},{"title":"Token Exchange","api":"POST https://api.launchmystore.io/apps/oauth/token","href":"/api-reference/oauth/token"},{"title":"Revoke Token","api":"POST https://api.launchmystore.io/apps/oauth/revoke","href":"/api-reference/oauth/revoke"},{"title":"Scopes","href":"/api-reference/oauth/scopes"}]},{"group":"Apps","pages":[{"title":"App Versions","api":"GET https://api.launchmystore.io/apps/developer/{appId}/versions","href":"/api-reference/apps/versions"},{"title":"Installation Rollback","api":"POST https://api.launchmystore.io/apps/store/installations/{installationId}/rollback","href":"/api-reference/apps/rollback"},{"title":"App Installations","api":"GET https://api.launchmystore.io/apps/store/installed","href":"/api-reference/apps/installations"},{"title":"Test a Function","api":"POST https://api.launchmystore.io/apps/functions/test","href":"/api-reference/apps/function-test"},{"title":"Function runs","href":"/api-reference/apps/function-runs"}]},{"group":"App Billing","pages":[{"title":"App Subscriptions","api":"POST https://api.launchmystore.io/apps/billing/subscribe","href":"/api-reference/app-billing/subscriptions"},{"title":"App Billing Transactions","api":"GET https://api.launchmystore.io/apps/billing/transactions","description":"List and inspect per-charge billing transactions for an installed app.","href":"/api-reference/app-billing/transactions"},{"title":"Usage Records","api":"POST https://api.launchmystore.io/api/v1/billing/usage","href":"/api-reference/app-billing/usage-records"}]},{"group":"App Analytics","pages":[{"title":"App Analytics","api":"GET https://api.launchmystore.io/apps/developer/analytics","description":"Developer analytics: aggregate installs and revenue, per-app installations, webhook delivery health, and function execution logs.","href":"/api-reference/app-analytics/overview"}]},{"group":"App Settings","pages":[{"title":"Get App Settings","api":"GET https://api.launchmystore.io/apps/installations/{installationId}/settings","href":"/api-reference/app-settings/get"},{"title":"Update App Settings","api":"PUT https://api.launchmystore.io/apps/installations/{installationId}/settings","href":"/api-reference/app-settings/update"}]},{"group":"Developer","pages":[{"title":"Developer Payouts","api":"GET https://api.launchmystore.io/apps/developer/payouts","href":"/api-reference/developer/payouts"},{"title":"Payout Methods","api":"GET https://api.launchmystore.io/apps/developer/payout-method","href":"/api-reference/developer/payout-methods"}]},{"group":"Products","pages":[{"title":"List Products","api":"GET https://api.launchmystore.io/api/v1/products.json","href":"/api-reference/products/list"},{"title":"Get Product","api":"GET https://api.launchmystore.io/api/v1/products/:id.json","href":"/api-reference/products/get"},{"title":"Create Product","api":"POST https://api.launchmystore.io/api/v1/products.json","href":"/api-reference/products/create"},{"title":"Update Product","api":"PUT https://api.launchmystore.io/api/v1/products/:id.json","href":"/api-reference/products/update"},{"title":"Delete Product","api":"DELETE https://api.launchmystore.io/api/v1/products/:id.json","href":"/api-reference/products/delete"}]},{"group":"Orders","pages":[{"title":"List Orders","api":"GET https://api.launchmystore.io/api/v1/orders.json","href":"/api-reference/orders/list"},{"title":"Get Order","api":"GET https://api.launchmystore.io/api/v1/orders/:id.json","href":"/api-reference/orders/get"},{"title":"Create Order","api":"POST https://api.launchmystore.io/api/v1/orders.json","href":"/api-reference/orders/create"},{"title":"Update Order","api":"PUT https://api.launchmystore.io/orders/update/:orderId","href":"/api-reference/orders/update"},{"title":"Fulfill Order","api":"POST https://api.launchmystore.io/api/v1/orders/:orderId/fulfillments.json","href":"/api-reference/orders/fulfill"}]},{"group":"Customers","pages":[{"title":"List Customers","api":"GET https://api.launchmystore.io/api/v1/customers.json","href":"/api-reference/customers/list"},{"title":"Get Customer","api":"GET https://api.launchmystore.io/api/v1/customers/{id}.json","href":"/api-reference/customers/get"},{"title":"Create Customer","api":"POST https://api.launchmystore.io/api/v1/customers.json","href":"/api-reference/customers/create"},{"title":"Update Customer","api":"PUT https://api.launchmystore.io/api/v1/customers/{id}.json","href":"/api-reference/customers/update"}]},{"group":"Inventory","pages":[{"title":"List Inventory Levels","api":"GET https://api.launchmystore.io/api/v1/inventory_levels.json","href":"/api-reference/inventory/list"},{"title":"Adjust Inventory","api":"POST https://api.launchmystore.io/api/v1/inventory_levels/adjust.json","href":"/api-reference/inventory/adjust"},{"title":"Set Inventory Level","api":"POST https://api.launchmystore.io/api/v1/inventory_levels/set.json","href":"/api-reference/inventory/set"}]},{"group":"Webhooks","pages":[{"title":"Webhooks Overview","href":"/api-reference/webhooks/overview"},{"title":"Webhook Topics","href":"/api-reference/webhooks/topics"},{"title":"Webhook Verification","href":"/api-reference/webhooks/verification"},{"title":"GDPR Webhooks","href":"/api-reference/webhooks/gdpr"},{"title":"Webhook Delivery Logs","api":"GET https://api.launchmystore.io/apps/store/webhook-logs","href":"/api-reference/webhooks/delivery-logs"}]},{"group":"Collections","pages":[{"title":"List Collections","api":"GET https://api.launchmystore.io/api/v1/collections.json","href":"/api-reference/collections/list"},{"title":"Get Collection","api":"GET https://api.launchmystore.io/api/v1/collections/{id}.json","href":"/api-reference/collections/get"},{"title":"Create Collection","api":"POST https://api.launchmystore.io/api/v1/collections.json","href":"/api-reference/collections/create"},{"title":"Update Collection","api":"PUT https://api.launchmystore.io/api/v1/collections/{id}.json","href":"/api-reference/collections/update"},{"title":"Delete Collection","api":"DELETE https://api.launchmystore.io/api/v1/collections/{id}.json","href":"/api-reference/collections/delete"}]},{"group":"Blogs","pages":[{"title":"List Blogs","api":"GET https://api.launchmystore.io/api/v1/blogs.json","href":"/api-reference/blogs/list"},{"title":"Get Blog","api":"GET https://api.launchmystore.io/api/v1/blogs/:id.json","href":"/api-reference/blogs/get"},{"title":"Create Blog","api":"POST https://api.launchmystore.io/api/v1/blogs.json","href":"/api-reference/blogs/create"},{"title":"Update Blog","api":"PUT https://api.launchmystore.io/api/v1/blogs/:id.json","href":"/api-reference/blogs/update"},{"title":"Delete Blog","api":"DELETE https://api.launchmystore.io/api/v1/blogs/:id.json","href":"/api-reference/blogs/delete"},{"title":"List Articles","api":"GET https://api.launchmystore.io/api/v1/blogs/:blog_id/articles.json","href":"/api-reference/blogs/articles/list"},{"title":"Get Article","api":"GET https://api.launchmystore.io/api/v1/articles/:id.json","href":"/api-reference/blogs/articles/get"},{"title":"Create Article","api":"POST https://api.launchmystore.io/api/v1/blogs/:blog_id/articles.json","href":"/api-reference/blogs/articles/create"},{"title":"Update Article","api":"PUT https://api.launchmystore.io/api/v1/articles/:id.json","href":"/api-reference/blogs/articles/update"},{"title":"Delete Article","api":"DELETE https://api.launchmystore.io/api/v1/articles/:id.json","href":"/api-reference/blogs/articles/delete"}]},{"group":"Pages","pages":[{"title":"List Pages","api":"GET https://api.launchmystore.io/api/v1/pages.json","href":"/api-reference/pages/list"},{"title":"Get Page","api":"GET https://api.launchmystore.io/api/v1/pages/:id.json","href":"/api-reference/pages/get"},{"title":"Create Page","api":"POST https://api.launchmystore.io/api/v1/pages.json","href":"/api-reference/pages/create"},{"title":"Update Page","api":"PUT https://api.launchmystore.io/api/v1/pages/:id.json","href":"/api-reference/pages/update"},{"title":"Delete Page","api":"DELETE https://api.launchmystore.io/api/v1/pages/:id.json","href":"/api-reference/pages/delete"}]},{"group":"Menus","pages":[{"title":"List Menus","api":"GET https://api.launchmystore.io/api/v1/menus.json","href":"/api-reference/menus/list"},{"title":"Get Menu","api":"GET https://api.launchmystore.io/api/v1/menus/:id.json","href":"/api-reference/menus/get"},{"title":"Create Menu","api":"POST https://api.launchmystore.io/api/v1/menus.json","href":"/api-reference/menus/create"},{"title":"Update Menu","api":"PUT https://api.launchmystore.io/api/v1/menus/:id.json","href":"/api-reference/menus/update"},{"title":"Delete Menu","api":"DELETE https://api.launchmystore.io/api/v1/menus/:id.json","href":"/api-reference/menus/delete"}]},{"group":"Themes","pages":[{"title":"List Themes","api":"GET https://api.launchmystore.io/api/v1/themes.json","href":"/api-reference/themes/list"},{"title":"Get Theme","api":"GET https://api.launchmystore.io/api/v1/themes/{id}.json","href":"/api-reference/themes/get"},{"title":"List Theme Assets","api":"GET https://api.launchmystore.io/api/v1/themes/{theme_id}/assets.json","href":"/api-reference/themes/assets"},{"title":"Create / Update Theme Asset","api":"PUT https://api.launchmystore.io/api/v1/themes/{theme_id}/assets.json","href":"/api-reference/themes/asset-update"},{"title":"Delete Theme Asset","api":"DELETE https://api.launchmystore.io/api/v1/themes/{theme_id}/assets.json","href":"/api-reference/themes/asset-delete"},{"title":"Theme Settings","api":"GET https://api.launchmystore.io/api/v1/themes/{theme_id}/settings.json","href":"/api-reference/themes/settings"},{"title":"Template Sections","api":"GET https://api.launchmystore.io/api/v1/themes/{theme_id}/templates/{template}/sections.json","href":"/api-reference/themes/sections"}]},{"group":"Shipping Zones","pages":[{"title":"List Shipping Zones","api":"GET https://api.launchmystore.io/api/v1/shipping_zones.json","href":"/api-reference/shipping-zones/list"},{"title":"Create Shipping Zone","api":"POST https://api.launchmystore.io/api/v1/shipping_zones.json","href":"/api-reference/shipping-zones/create"},{"title":"Update Shipping Zone","api":"PUT https://api.launchmystore.io/api/v1/shipping_zones/{zone_id}.json","href":"/api-reference/shipping-zones/update"},{"title":"Delete Shipping Zone","api":"DELETE https://api.launchmystore.io/api/v1/shipping_zones/{zone_id}.json","href":"/api-reference/shipping-zones/delete"}]},{"group":"Gift Cards","pages":[{"title":"List Gift Cards","api":"GET https://api.launchmystore.io/api/v1/gift_cards.json","href":"/api-reference/gift-cards/list"},{"title":"Get Gift Card","api":"GET https://api.launchmystore.io/api/v1/gift_cards/{gift_card_id}.json","href":"/api-reference/gift-cards/get"},{"title":"Create Gift Card","api":"POST https://api.launchmystore.io/api/v1/gift_cards.json","href":"/api-reference/gift-cards/create"},{"title":"Disable Gift Card","api":"POST https://api.launchmystore.io/api/v1/gift_cards/{gift_card_id}/disable.json","href":"/api-reference/gift-cards/disable"}]},{"group":"Email Templates","pages":[{"title":"List Email Templates","api":"GET https://api.launchmystore.io/api/v1/email-templates.json","href":"/api-reference/email-templates/list"},{"title":"Create / Update Email Template","api":"POST https://api.launchmystore.io/api/v1/email-templates.json","href":"/api-reference/email-templates/create"},{"title":"Delete Email Template","api":"DELETE https://api.launchmystore.io/api/v1/email-templates/{id}.json","href":"/api-reference/email-templates/delete"}]},{"group":"Sales Channels","pages":[{"title":"Create Sales Channel","api":"POST https://api.launchmystore.io/api/v1/sales_channels.json","href":"/api-reference/sales-channels/create"},{"title":"List Product Listings","api":"GET https://api.launchmystore.io/api/v1/product_listings.json","href":"/api-reference/product-listings/list"},{"title":"Create Product Listing","api":"POST https://api.launchmystore.io/api/v1/product_listings.json","href":"/api-reference/product-listings/create"}]},{"group":"Discounts","pages":[{"title":"List Discounts","api":"GET https://api.launchmystore.io/api/v1/discounts.json","href":"/api-reference/discounts/list"},{"title":"Get Discount","api":"GET https://api.launchmystore.io/api/v1/discounts/{id}.json","href":"/api-reference/discounts/get"},{"title":"Create Discount","api":"POST https://api.launchmystore.io/api/v1/discounts.json","href":"/api-reference/discounts/create"},{"title":"Update Discount","api":"PUT https://api.launchmystore.io/api/v1/discounts/{id}.json","href":"/api-reference/discounts/update"},{"title":"Delete Discount","api":"DELETE https://api.launchmystore.io/api/v1/discounts/{id}.json","href":"/api-reference/discounts/delete"}]},{"group":"Metafields","pages":[{"title":"Metafields Overview","href":"/api-reference/metafields/overview"},{"title":"List Metafields","api":"GET https://api.launchmystore.io/api/v1/metafields.json","href":"/api-reference/metafields/list"},{"title":"Get Metafield by ID (Admin API only)","href":"/api-reference/metafields/get"},{"title":"Create or Upsert Metafield","api":"POST https://api.launchmystore.io/api/v1/metafields.json","href":"/api-reference/metafields/create"},{"title":"Update Metafield","api":"PUT https://api.launchmystore.io/api/v1/metafields/:id.json","href":"/api-reference/metafields/update"},{"title":"Delete Metafield","api":"DELETE https://api.launchmystore.io/api/v1/metafields/:id.json","href":"/api-reference/metafields/delete"},{"title":"Bulk Upsert Metafields (Admin API only)","href":"/api-reference/metafields/bulk"},{"group":"Definitions","pages":[{"title":"Metafield Definitions Overview","href":"/api-reference/metafields/definitions/overview"},{"title":"List Metafield Definitions","api":"GET https://api.launchmystore.io/metafield-definitions","href":"/api-reference/metafields/definitions/list"},{"title":"Get Metafield Definition","api":"GET https://api.launchmystore.io/metafield-definitions/:id","href":"/api-reference/metafields/definitions/get"},{"title":"Create Metafield Definition","api":"POST https://api.launchmystore.io/metafield-definitions","href":"/api-reference/metafields/definitions/create"},{"title":"Update Metafield Definition","api":"PUT https://api.launchmystore.io/metafield-definitions/:id","href":"/api-reference/metafields/definitions/update"},{"title":"Delete Metafield Definition","api":"DELETE https://api.launchmystore.io/metafield-definitions/:id","href":"/api-reference/metafields/definitions/delete"}]}]},{"group":"Fulfillments","pages":[{"title":"List Fulfillments","api":"GET https://api.launchmystore.io/api/v1/fulfillments.json","href":"/api-reference/fulfillments/list"},{"title":"Create Fulfillment","api":"POST https://api.launchmystore.io/api/v1/orders/{order_id}/fulfillments.json","href":"/api-reference/fulfillments/create"},{"title":"Update Fulfillment","api":"PUT https://api.launchmystore.io/api/v1/fulfillments/{fulfillment_id}.json","href":"/api-reference/fulfillments/update"},{"title":"Delete Fulfillment","api":"DELETE https://api.launchmystore.io/api/v1/fulfillments/{fulfillment_id}.json","href":"/api-reference/fulfillments/delete"},{"title":"Fulfillment Services","href":"/api-reference/fulfillments/services"}]},{"group":"Analytics","pages":[{"title":"Dashboard Summary","api":"GET https://api.launchmystore.io/api/v1/analytics/summary","href":"/api-reference/analytics/overview"},{"title":"Sales Analytics","api":"GET https://api.launchmystore.io/api/v1/analytics/sales","href":"/api-reference/analytics/sales"},{"title":"Top Products","api":"GET https://api.launchmystore.io/api/v1/analytics/products/top","href":"/api-reference/analytics/products"}]},{"group":"Billing","pages":[{"title":"Get Billing Summary","api":"GET https://api.launchmystore.io/api/v1/billing","href":"/api-reference/billing/summary"},{"title":"List Subscriptions","api":"GET https://api.launchmystore.io/api/v1/billing/subscriptions","href":"/api-reference/billing/subscriptions"},{"title":"List Invoices","api":"GET https://api.launchmystore.io/api/v1/billing/invoices","href":"/api-reference/billing/invoices"}]},{"group":"Settings","pages":[{"title":"Get Store Settings","api":"GET https://api.launchmystore.io/api/v1/settings","href":"/api-reference/settings/get"},{"title":"Update Store Settings","api":"PUT https://api.launchmystore.io/api/v1/settings","href":"/api-reference/settings/update"},{"title":"List Shipping Zones","api":"GET https://api.launchmystore.io/api/v1/settings/shipping","href":"/api-reference/settings/shipping"},{"title":"List Payment Providers","api":"GET https://api.launchmystore.io/api/v1/settings/payments","href":"/api-reference/settings/payments"},{"title":"List Tax Rules","api":"GET https://api.launchmystore.io/api/v1/settings/taxes","href":"/api-reference/settings/taxes"}]},{"group":"Cart","pages":[{"title":"Get Cart","api":"GET https://your-store.launchmystore.io/cart.js","href":"/api-reference/cart/get"},{"title":"Add to Cart","api":"POST https://your-store.launchmystore.io/cart/add.js","href":"/api-reference/cart/add"},{"title":"Update Cart","api":"POST https://your-store.launchmystore.io/cart/update.js","href":"/api-reference/cart/update"},{"title":"Remove from Cart","api":"POST https://your-store.launchmystore.io/cart/change.js","href":"/api-reference/cart/remove"},{"title":"Clear Cart","api":"POST https://{shop-domain}/cart/clear.js","href":"/api-reference/cart/clear"}]},{"group":"Variants","pages":[{"title":"List Variants","api":"GET https://api.launchmystore.io/api/v1/products/{id}.json","href":"/api-reference/variants/list"},{"title":"Get Variant","api":"GET https://api.launchmystore.io/variants/get-single-variant/{id}","href":"/api-reference/variants/get"},{"title":"Create Variant","api":"POST https://api.launchmystore.io/variants/bulk-add-variant/{product_id}","href":"/api-reference/variants/create"},{"title":"Update Variant","api":"PATCH https://api.launchmystore.io/variants/update-single-variant/{id}","href":"/api-reference/variants/update"},{"title":"Delete Variant","api":"DELETE https://api.launchmystore.io/variants/delete-single-variant/{id}","href":"/api-reference/variants/delete"}]},{"group":"Locations","pages":[{"title":"List Locations","api":"GET https://api.launchmystore.io/warehouse/get-all-warehouses","href":"/api-reference/locations/list"},{"title":"Create Location","api":"POST https://api.launchmystore.io/warehouse/add-warehouse","href":"/api-reference/locations/create"}]},{"group":"Shop","pages":[{"title":"Get Shop","api":"GET https://api.launchmystore.io/api/v1/shop.json","href":"/api-reference/shop/get"},{"title":"Update Shop","api":"PUT https://api.launchmystore.io/account/add-business-detail","href":"/api-reference/shop/update"}]},{"group":"Policies","pages":[{"title":"List Policies","api":"GET https://api.launchmystore.io/policies/get-all-policies","href":"/api-reference/policies/list"},{"title":"Update Policy","api":"PATCH https://api.launchmystore.io/policies/update-policies/{policyId}","href":"/api-reference/policies/update"}]},{"group":"Search","pages":[{"title":"Search Products","api":"GET https://api.launchmystore.io/search/suggest.json","href":"/api-reference/search/products"},{"title":"Search Collections","api":"GET https://{store-domain}/search/suggest.json","href":"/api-reference/search/collections"},{"title":"Search Autocomplete","api":"GET https://{store-domain}/search/suggest.json","href":"/api-reference/search/autocomplete"}]},{"group":"Files","pages":[{"title":"List Files","api":"GET https://api.launchmystore.io/api/v1/files.json","href":"/api-reference/files/list"},{"title":"Upload File","api":"POST https://api.launchmystore.io/api/v1/files.json","href":"/api-reference/files/upload"},{"title":"Delete File","api":"DELETE https://api.launchmystore.io/api/v1/files/{file_id}.json","href":"/api-reference/files/delete"}]}]}]},"basePath":"","title":"Usage Records - LaunchMyStore Developers","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js"]}