Octany. for/devs
§ 00 — Overview

Build
with Octany.

Engineering documentation for integrating Octany — the Swedish billing engine for subscriptions, one-off orders, and hosted checkout. Dense, example-driven, written for engineers and the agents that work alongside them.

# List a customer's active subscriptions
curl "https://api.octany.com/api/$ACCOUNT/\
subscriptions?filter[reference_id]=user_42" \
  -H "X-API-KEY: $OCTANY_KEY"

# 200 OK — paginated envelope
# {
#   "data": [{
#     "id": 76963688,
#     "status": "active",
#     "reference_id": "user_42",
#     "renews_at": "2026-05-25T09:29:51+00:00"
#   }],
#   "pagination": { "total": 1, ... }
# }
Excerpt — API read full →

Three public surfaces

§ 01 — Surfaces
A · FUNDRAISING

Fundraising

Donation, 1-click Swish, and Greeting embeds for campaign pages, editorial pages, and seasonal giving.

For: donation pages and campaigns
read the integration
B · CHECKOUT

Checkout

Hosted checkout at checkout.octany.com. Construct a URL or use the window.Octany JS API for cart and checkout flows.

For: SaaS, ecommerce, carts
read the integration
C · LEGACY

Classic widget

Add the original checkout experience to an existing page with a small HTML snippet and a hosted script.

For: existing classic integrations
read the integration
§ 02 — Concepts

A billing model in five nouns

Octany is intentionally smaller than Stripe. There's no separate Price object. Everything orbits a single tenant — the Account — whose UUID is part of every URL path.

If you've used Stripe Cashier, the migration guide maps every concept across.

Octany Stripe equivalent Notes
Account Account Top-level tenant. UUID in every path.
Product Product + Price Single object. Price/interval/VAT live on it.
Subscription Subscription One product per subscription. Status drives billing.
Order Invoice + PaymentIntent Each scheduled charge produces one order.
§ 03 — Built for agents too

A docs site that an LLM can read.

Every page on this site has a markdown counterpart in /docs. Every page exposes that markdown via a <link rel="alternate">. The OpenAPI spec is checked in. There's an llms.txt at the root that fits in one context window. Paste it into your agent and skip the crawl.

§ 04 — Surface area

REST endpoints, browsable

API reference →
GET /api/{account}/subscriptions
GET /api/{account}/products
GET /api/{account}/subscription/{id}
GET /api/{account}/product/{id}
POST /api/{account}/subscription/{id}/cancel
POST /api/{account}/product/{id}
POST /api/{account}/subscription/{id}/order
GET /api/{account}/order/{id}
GET /api/{account}/subscription/{id}/orders
POST /api/{account}/webhooks/endpoints