Documentation / Billing

Billing

Read-only access to the user's subscription, subscription history, available plans, payment status and balance transactions.

A Configo account pays for a subscription to a plan (tariff). The plan sets how many projects the user can own, how many members each project can have, and which features are on. All projects owned by the user work only while the subscription is active.

Through the public API billing is read-only: buying, renewing and paying for a subscription happens in the Configo app.

The API itself is available on every plan.

Field types follow the field notation.

Access

Every endpoint on this page requires the billing OAuth scope and acts on the authenticated user's own account.

Tariff Object

Tariff Structure

Field Type Description
uuid uuid Plan ID
name string Name
price decimal Price per member per month, USD
projects integer How many projects the user may own
members integer Members per project included in the plan
features integer Feature bitmask
is_public boolean false for a plan made individually for this user
is_corporate boolean Corporate plan
is_default boolean The plan offered by default

Feature bits

Feature Value Meaning
members_no_limit 1 No member limit
documents 2 Document templates
widget 4 The embeddable widget
sheet 8 Production sheet
ai 1048576 AI assistance
support 4194304 Dedicated support

The API itself is available on every plan.

List Tariffs

GET /api/v1/billing/tariffs

Returns the plans available to the user: public plans and any made for them individually.

Get Tariff

GET /api/v1/billing/tariffs/{tariff.uuid}

Returns a single tariff, or 404 RES_NOT_FOUND if it does not exist or is not available to the user.

Subscription Object

Subscription Structure

Field Type Description
id integer Subscription ID
parent_id ?integer The subscription this one renewed or upgraded
status string created (awaiting payment), completed (paid), failed, cancelled, refunded, expired, upgraded
tariff_uuid uuid The plan
tariff_name string Its name
features integer The plan's feature bitmask
members integer Members per project bought
date_start date First day, YYYY-MM-DD
date_end date Last day
is_trial boolean Trial subscription
is_renewable boolean Renews automatically
total_amount ?decimal Price, USD; null if a partner manages the subscription
paid_amount ?decimal Amount paid; null if a partner manages the subscription
note string Comment; empty if a partner manages the subscription
is_partner_managed boolean Whether a partner bought it for the user

Get Current Subscription

GET /api/v1/billing/subscription

{
  "subscription": {
    "id": 1042,
    "user_uuid": "0198e7aa-91f0-7c22-a4d1-0f9e8d7c6b5a",
    "timezone": "America/Chicago",
    "tariff_uuid": "0198d000-0000-7000-8000-000000000002",
    "name": "Business",
    "price": 15,
    "projects": 3,
    "features": 7,
    "is_public": true,
    "is_corporate": false,
    "members": 5,
    "date_start": "2026-09-01",
    "date_end": "2026-09-30",
    "is_trial": false,
    "is_renewable": true,
    "total_amount": 75
  },
  "discount": 2.5,
  "had_trial": true,
  "has_future_subscription": false
}
Field Type Description
subscription ?object The active subscription, joined with its plan; null if there is none
discount decimal Credit for the unused part of the active subscription, applied when upgrading
had_trial boolean Whether the user has ever had a trial
has_future_subscription boolean Whether a renewal that starts later is already bought

date_start and date_end are in the user's time zone.

List Subscriptions

GET /api/v1/billing/subscriptions

Returns the user's last 30 subscriptions, newest first.

Get Payment

GET /api/v1/billing/payments/{payment.uuid}

Status of a TON crypto payment started in the app.

{
  "uuid": "0199b4dd-0000-7000-8000-000000000001",
  "status": "pending",
  "amount_usd": 75,
  "ton_amount": 23.4375,
  "ton_address": "UQ...",
  "comment": "0199b4dd-0000-7000-8000-000000000001",
  "expires_at": "2026-10-01T12:30:00.000Z"
}

status is pending, completed, expired or failed. The transfer must carry comment as its message.

List Balance Transactions

GET /api/v1/billing/transactions

Movements on the user's balance, newest first.

Query param Type Description
limit? integer Up to 200. Default 50
Field Type Description
id integer Transaction ID
amount decimal Positive for credit, negative for debit
type string topup, subscription_charge, subscription_refund or adjustment
note string Comment
user_subscription_id ?integer Related subscription
created_at ISO8601 datetime When it happened

Errors

Status Code When
403 AUTH_INSUFFICIENT_SCOPE The token lacks billing
404 RES_NOT_FOUND Get Tariff, Get Payment: it does not exist or is not available