subscriptions.save
Confirm or correct one subscription's cadence, status, renewal, amount or explicitly evidenced seat or usage quantity. Requires expectedRevision and idempotencyKey. Does not change accounting entries or cancel a provider subscription.
/api/v1/accounting/subscriptions.savePermissions
Who can call it
Retries
MCP
accounting_subscriptions_saveFields
vendorKeystringRequired1–120 characters · Matches ^[a-z0-9 ]+$
merchantstringRequired1–160 characters
currencystringRequiredThree-letter currency code, such as CAD or USD.
expectedRevisionintegerRequiredThe record's current revision, from the last time you read it. If someone changed the record since, the request is refused with a conflict so you can reload and check before trying again.
0 to 9007199254740991
cadenceenum or nullRequiredmonthlyquarterlyyearlyunknownstatusenum or nullRequiredOnly include records with this status.
activepausedendedrenewalOnstring (date) or nullRequiredamountMinorstring or nullRequiredAn amount in cents (the currency's smallest unit), written as a whole-number string such as "1250" for $12.50.
quantityCountinteger or nullRequiredquantityUnitenum or nullRequiredseatuserlicensetokencreditnotestringRequiredA short note, kept with the record.
at most 500 characters
idempotencyKeystringRequiredAny unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.
8–200 characters
Example
curl https://app.getoatmilk.com/api/v1/accounting/subscriptions.save \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"vendorKey": "example",
"merchant": "example",
"currency": "CAD",
"expectedRevision": 3,
"cadence": "monthly",
"status": "active",
"renewalOn": "2026-09-01",
"amountMinor": "1250",
"quantityCount": 1,
"quantityUnit": "seat",
"note": "Synthetic example from the docs"
}'{
"data": { … }
}Try it
Try it
Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.
curl https://app.getoatmilk.com/api/v1/accounting/subscriptions.save \
-H "Authorization: Bearer $OATMILK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"vendorKey": "example",
"merchant": "example",
"currency": "CAD",
"expectedRevision": 3,
"cadence": "monthly",
"status": "active",
"renewalOn": "2026-09-01",
"amountMinor": "1250",
"quantityCount": 1,
"quantityUnit": "seat",
"note": "Synthetic example from the docs"
}'More in Reports and tax.