Sign Up

Billing

GET
/orgs/{id}/billing/balance-notification

Read the balance-notification rule for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Balance-notification rule

application/json
  1. response
enabled*boolean
threshold_amount*number
Formatdouble
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/balance-notification'
{  "enabled": true,  "threshold_amount": 0.1}
PUT
/orgs/{id}/billing/balance-notification

Set the balance-notification rule for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Request Body

application/json
  1. body

Request shape for PUT /orgs/{id}/billing/balance-notification. enabled=false may omit threshold_amount; billing requires the threshold only when enabling the rule and enforces its own $5-$50,000 bounds.

enabled*boolean
threshold_amount?number
Formatdouble

Response Body

Updated balance-notification rule

application/json
  1. response
enabled*boolean
threshold_amount*number
Formatdouble
curl -X PUT 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/balance-notification' \  -H 'Content-Type: application/json' \  -d '{  "enabled": true}'
{  "enabled": true,  "threshold_amount": 0.1}
GET
/orgs/{id}/billing/balances

List itemized balances for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Query Parameters

limit?integer
Formatint64
next_page?string

Response Body

Balance list

application/json
  1. response
data*array<>
has_more*boolean
next_page?string|null
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/balances'
{  "data": [    {      "applicable_to": null,      "balance_cents": 0.1,      "created_at": "string",      "expires_at": "string",      "granted_amount_cents": 0.1,      "id": "string",      "name": "string",      "type": "string"    }  ],  "has_more": true,  "next_page": "string"}
GET
/orgs/{id}/billing/charges

List charge history for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Query Parameters

limit?integer
Formatint64
starting_after?string

Response Body

Charge history

application/json
  1. response
data*array<>
has_more*boolean
next_cursor?string|null
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/charges'
{  "data": [    {      "amount_cents": 0,      "created_at": "string",      "currency": "string",      "description": "string",      "failure_message": "string",      "has_pdf": true,      "has_stripe_invoice": true,      "id": "string",      "receipt_url": "string",      "status": "string",      "stripe_invoice_url": "string"    }  ],  "has_more": true,  "next_cursor": "string"}
GET
/orgs/{id}/billing/charges/{charge_id}/pdf

Download the PDF receipt for one charge. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid
charge_id*string

Charge id

Response Body

Charge receipt PDF (binary)

response?InvoicePdfBodyapplication/pdf

PDF document bytes

Formatbinary
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/charges/string/pdf'
"string"
GET
/orgs/{id}/billing/email

Read the billing-contact email for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Billing-contact email

application/json
  1. response
billing_email?string|null
effective_email?string|null
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/email'
{  "billing_email": "string",  "effective_email": "string"}
PUT
/orgs/{id}/billing/email

Set or clear the billing-contact email for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Request Body

application/json
  1. body
billing_email?string|null

Response Body

Updated billing-contact email

application/json
  1. response
billing_email?string|null
effective_email?string|null
curl -X PUT 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/email' \  -H 'Content-Type: application/json' \  -d '{}'
{  "billing_email": "string",  "effective_email": "string"}
GET
/orgs/{id}/billing/info

Read the billing identity for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Billing identity

application/json
  1. response
address*
email*string
name*string
phone*string
tax_ids*array<>
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/info'
{  "address": {    "city": "string",    "country": "string",    "line1": "string",    "line2": "string",    "postal_code": "string",    "state": "string"  },  "email": "string",  "name": "string",  "phone": "string",  "tax_ids": [    {      "type": "string",      "value": "string"    }  ]}
GET
/orgs/{id}/billing/invoices

List invoices for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Query Parameters

page?integer
Formatint64
per_page?integer
Formatint64

Response Body

Invoices

application/json
  1. response
items*array<>
total_items*integer
Formatint64
total_pages*integer
Formatint64
truncated*boolean
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/invoices'
{  "items": [    {      "currency": "string",      "file_url": "string",      "has_pdf": true,      "id": "string",      "issuing_date": "string",      "number": "string",      "payment_due_date": "string",      "payment_overdue": true,      "payment_status": "string",      "status": "string",      "subtotal_amount_cents": 0,      "taxes_amount_cents": 0,      "total_amount_cents": 0,      "total_due_amount_cents": 0,      "type": "string"    }  ],  "total_items": 0,  "total_pages": 0,  "truncated": true}
POST
/orgs/{id}/billing/invoices/{invoice_id}/payment-url

Mint a fresh hosted payment URL for one invoice. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid
invoice_id*string

Invoice id

Response Body

Invoice payment URL

application/json
  1. response
url*string
curl -X POST 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/invoices/string/payment-url'
{  "url": "string"}
GET
/orgs/{id}/billing/invoices/{invoice_id}/pdf

Download the PDF for one invoice. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid
invoice_id*string

Invoice id

Response Body

Invoice PDF (binary)

response?InvoicePdfBodyapplication/pdf

PDF document bytes

Formatbinary
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/invoices/string/pdf'
"string"
GET
/orgs/{id}/billing/payment-methods

List saved payment methods for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Saved payment methods

application/json
  1. response
[index: integer]?
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/payment-methods'
[  {    "brand": "string",    "exp_month": 0,    "exp_year": 0,    "id": "string",    "is_default": true,    "last4": "string"  }]
GET
/orgs/{id}/billing/plan

The organization's pricing plan: the current and any pending plan, the effective numbers and the plan catalog, proxied verbatim from rlp-billing (PLAN-PRICING-PLANS.md). The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Plan DTO as served by rlp-billing (passthrough body)

application/json
  1. response
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/plan'
{}
POST
/orgs/{id}/billing/plan

Self-serve plan change for one organization: {"plan": "starter"|"team"} forwarded verbatim to rlp-billing, which owns every check (unknown_plan, contact_sales, plan_change_pending, payment_method_required, …) and answers the same DTO as the read. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Request Body

{"plan": "starter" | "team"} — forwarded verbatim; rlp-billing validates it

application/json
  1. body

Response Body

Plan DTO after the change (passthrough body)

application/json
  1. response
curl -X POST 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/plan' \  -H 'Content-Type: application/json' \  -d '{}'
{}
GET
/orgs/{id}/billing/portal-url

Mint a fresh billing-portal URL for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Billing portal URL

application/json
  1. response
url*string
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/portal-url'
{  "url": "string"}
POST
/orgs/{id}/billing/redeem-coupon/{code}

Redeem one coupon for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid
code*string

Coupon code

Response Body

Coupon redeemed

application/json
  1. response
ok*boolean
curl -X POST 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/redeem-coupon/string'
{  "ok": true}
GET
/orgs/{id}/billing/setup-checkout-url

Mint a fresh setup-checkout URL for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Setup-checkout URL

application/json
  1. response
url*string
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/setup-checkout-url'
{  "url": "string"}
GET
/orgs/{id}/billing/unpaid-invoices

List unpaid invoices and suspension deadlines for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Unpaid invoices

application/json
  1. response
[index: integer]?
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/unpaid-invoices'
[  {    "amount_due_cents": 0,    "currency": "string",    "due_date": "string",    "finalized_at": "string",    "hosted_invoice_url": "string",    "id": "string",    "number": "string",    "suspends_at": "string"  }]
GET
/orgs/{id}/billing/usage

Read current-period priced usage for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Current billing usage

application/json
  1. response
amount_cents*integer
Formatint64
charges*array<>
from*string
issuing_date*string
taxes_amount_cents*integer
Formatint64
to*string
total_amount_cents*integer
Formatint64
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/usage'
{  "amount_cents": 0,  "charges": [    {      "billable_metric": "string",      "events_count": 0,      "name": "string",      "quantity": 0.1,      "total_cents": 0,      "units": "string"    }  ],  "from": "string",  "issuing_date": "string",  "taxes_amount_cents": 0,  "to": "string",  "total_amount_cents": 0}
GET
/orgs/{id}/billing/usage/past

List past closed billing periods for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Query Parameters

periods?integer
Formatint64

Response Body

Past billing periods

application/json
  1. response
[index: integer]?
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/usage/past'
[  {    "amount_cents": 0,    "charges": [      {        "billable_metric": "string",        "events_count": 0,        "name": "string",        "quantity": 0.1,        "total_cents": 0,        "units": "string"      }    ],    "from": "string",    "issuing_date": "string",    "taxes_amount_cents": 0,    "to": "string",    "total_amount_cents": 0  }]
GET
/orgs/{id}/billing/wallet

Read the billing wallet for one organization. The caller must be a seated member holding read:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Response Body

Organization wallet

application/json
  1. response
automatic_top_up?null|
balance_cents*integer
Formatint64
billing_type*string
credit_card_connected_credits_granted*boolean
free_credits_balance_cents*integer
Formatint64
has_failed_or_pending_invoice*boolean
name*string
paid_credits_balance_cents*integer
Formatint64
total_amount_due_this_month_cents*integer
Formatint64
total_spent_this_month_cents*integer
Formatint64
verified_credits_granted*boolean
curl -X GET 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/wallet'
{  "automatic_top_up": null,  "balance_cents": 0,  "billing_type": "string",  "credit_card_connected_credits_granted": true,  "free_credits_balance_cents": 0,  "has_failed_or_pending_invoice": true,  "name": "string",  "paid_credits_balance_cents": 0,  "total_amount_due_this_month_cents": 0,  "total_spent_this_month_cents": 0,  "verified_credits_granted": true}
PUT
/orgs/{id}/billing/wallet/automatic-top-up

Set or clear the automatic top-up rule for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Request Body

application/json
  1. body

Request shape for PUT /orgs/{id}/billing/wallet/automatic-top-up. {"disabled": true} alone clears the rule; otherwise billing accepts the dollar amounts and applies its own validation ladder.

disabled?boolean|null
target_amount?|
Formatdouble
threshold_amount?|
Formatdouble

Response Body

Automatic top-up updated

curl -X PUT 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/wallet/automatic-top-up' \  -H 'Content-Type: application/json' \  -d '{}'
Empty
POST
/orgs/{id}/billing/wallet/top-up

Create a manual wallet top-up session for one organization. The caller must be a seated member holding write:wallet. Only an OIDC user JWT is admitted on this route; dtno_ organization API keys are not.

Authorization

user_jwt
headerAuthorizationBearer <token>

OIDC access token of a signed-in user (the dashboard/CLI login) used on the management plane: /me, /orgs*, /projects*, /invitations*, /roles, billing, audit, API-key, and service-account routes. Every management operation documents the org/project permission the authenticated member must hold.

Path Parameters

id*string

Organization id

Formatuuid

Request Body

application/json
  1. body
amount_cents*integer
Formatint64
Range1000 <= value <= 99999999

Response Body

Top-up checkout URL

application/json
  1. response
url*string
curl -X POST 'https://example.com/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/billing/wallet/top-up' \  -H 'Content-Type: application/json' \  -d '{  "amount_cents": 1000}'
{  "url": "string"}