BillKit/Docs Console
Specification

OpenAPI spec

2026-09-13 167 operations · 528 KB

openapi.json

Bundled, all $refs resolved against components. Recommended for codegen.

Download JSON

Browse operations

The explorer lists the 90 operations an API key can reach. The rest of the 167 in the document authenticate with a console session or a billing-portal token: they are published so the spec describes the whole service, but they are not part of the developer surface and nothing you build should call them.

90 / 90 operations

Customers

People and organisations you bill. 7
GET /v1/customers List Customers

List your customers, newest first. Requires a secret or restricted key with customers:read.

GET /v1/customers
curl -X GET https://api.billkit.eu/v1/customers \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/customers Create Customer

Create a customer, the record everything else in an account hangs off. Requires a secret or restricted key with customers:write.

POST /v1/customers
curl -X POST https://api.billkit.eu/v1/customers \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
DELETE /v1/customers/{customer_id} Delete Customer

Delete a customer. Requires a secret or restricted key with customers:write.

DELETE /v1/customers/{customer_id}
curl -X DELETE https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/customers/{customer_id} Get Customer

Retrieve one customer. Requires a secret or restricted key with customers:read.

GET /v1/customers/{customer_id}
curl -X GET https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/customers/{customer_id} Update Customer

Update a customer's details. Requires a secret or restricted key with customers:write.

POST /v1/customers/{customer_id}
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
POST /v1/customers/{customer_id}/purge Purge Customer

Erase a customer's personal data while keeping their financial history. Requires a secret or restricted key with customers:write.

POST /v1/customers/{customer_id}/purge
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1/purge \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
POST /v1/customers/{customer_id}/vat_number Set Customer Vat Number

Record a business customer's VAT registration number and check it. Requires a secret or restricted key with customers:write.

POST /v1/customers/{customer_id}/vat_number
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1/vat_number \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →

Products

The things you sell, independent of what they cost. 4
GET /v1/products List Products

List your products, newest first. Requires a secret or restricted key with products:read.

GET /v1/products
curl -X GET https://api.billkit.eu/v1/products \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/products Create Product

Create a product, the thing you sell. Requires a secret or restricted key with products:write.

POST /v1/products
curl -X POST https://api.billkit.eu/v1/products \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada Lovelace"}'
Full reference for this operation →
GET /v1/products/{product_id} Get Product

Retrieve one product. Requires a secret or restricted key with products:read.

GET /v1/products/{product_id}
curl -X GET https://api.billkit.eu/v1/products/prod_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/products/{product_id} Update Product

Update a product's details, or archive it. Requires a secret or restricted key with products:write.

POST /v1/products/{product_id}
curl -X POST https://api.billkit.eu/v1/products/prod_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →

Prices

Amount, currency, interval and tax behaviour for a product. 4
GET /v1/prices List Prices

List your prices, newest first. Requires a secret or restricted key with prices:read.

GET /v1/prices
curl -X GET https://api.billkit.eu/v1/prices \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/prices Create Price

Create a price, which is what a customer actually buys. Requires a secret or restricted key with prices:write.

POST /v1/prices
curl -X POST https://api.billkit.eu/v1/prices \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"interval":"month","product_id":"prod_9XKp2vQ1"}'
Full reference for this operation →
GET /v1/prices/{price_id} Get Price

Retrieve one price, including its trial, tax and refund-window settings. Requires a secret or restricted key with prices:read.

GET /v1/prices/{price_id}
curl -X GET https://api.billkit.eu/v1/prices/price_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/prices/{price_id} Update Price

Archive a price so it stops selling, or put it back on sale. Requires a secret or restricted key with prices:write.

POST /v1/prices/{price_id}
curl -X POST https://api.billkit.eu/v1/prices/price_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →

Subscriptions

Recurring agreements between a customer and a price. 9
GET /v1/subscriptions List Subscriptions

List subscriptions, newest first. Requires a secret or restricted key with subscriptions:read.

GET /v1/subscriptions
curl -X GET https://api.billkit.eu/v1/subscriptions \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/subscriptions/{subscription_id} Get Subscription

Retrieve one subscription. Requires a secret or restricted key with subscriptions:read.

GET /v1/subscriptions/{subscription_id}
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/cancel Cancel Subscription

Stop a subscription renewing at the end of the current period. Requires a secret or restricted key with subscriptions:cancel.

POST /v1/subscriptions/{subscription_id}/cancel
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/cancel \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/pause Pause Subscription

Stop a subscription renewing, without ending it. Requires a secret or restricted key with subscriptions:write.

POST /v1/subscriptions/{subscription_id}/pause
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/pause \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/preview_update Preview Update Subscription

Quote what moving this subscription to another price would cost. Requires a secret or restricted key with subscriptions:read.

POST /v1/subscriptions/{subscription_id}/preview_update
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/preview_update \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target_price_id":"price_9XKp2vQ1"}'
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/reactivate Reactivate Subscription

Undo a pending cancellation and keep the subscription renewing. Requires a secret or restricted key with subscriptions:write.

POST /v1/subscriptions/{subscription_id}/reactivate
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/reactivate \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/reauthorize_payment_method Reauthorize Payment Method

Start the flow for a customer to replace their payment method. Requires a secret or restricted key with subscriptions:write.

POST /v1/subscriptions/{subscription_id}/reauthorize_payment_method
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/reauthorize_payment_method \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"return_url":"https://acme.example/welcome"}'
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/resume Resume Subscription

Restart renewals on a paused subscription. Requires a secret or restricted key with subscriptions:write.

POST /v1/subscriptions/{subscription_id}/resume
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/resume \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/update Update Subscription

Move a subscription to a different price, charging the difference now. Requires a secret or restricted key with subscriptions:write.

POST /v1/subscriptions/{subscription_id}/update
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/update \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target_price_id":"price_9XKp2vQ1"}'
Full reference for this operation →

Checkout

Hosted and embedded payment sessions, and saved payment methods. 4
POST /v1/checkout/one_shot Create One Shot

Charge a customer once, with no subscription and no stored mandate. Requires a secret or restricted key with checkout_sessions:write.

POST /v1/checkout/one_shot
curl -X POST https://api.billkit.eu/v1/checkout/one_shot \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount_cents":1900,"currency":"EUR","customer_id":"cus_9XKp2vQ1","method":"creditcard","success_url":"https://acme.example/welcome"}'
Full reference for this operation →
GET /v1/checkout/one_shot/{one_shot_id} Get One Shot

Retrieve one one-off payment, including how much of it has been refunded. Requires a secret or restricted key with checkout_sessions:read.

GET /v1/checkout/one_shot/{one_shot_id}
curl -X GET https://api.billkit.eu/v1/checkout/one_shot/osp_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/checkout/sessions Create Checkout Session

Start a subscription sign-up. Requires a secret or restricted key with checkout_sessions:write.

POST /v1/checkout/sessions
curl -X POST https://api.billkit.eu/v1/checkout/sessions \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cancel_url":"https://acme.example/welcome","price_id":"price_9XKp2vQ1","success_url":"https://acme.example/welcome"}'
Full reference for this operation →
GET /v1/checkout/sessions/{checkout_id} Get Checkout Session

Retrieve one checkout session, to see whether the customer completed it. Requires a secret or restricted key with checkout_sessions:read.

GET /v1/checkout/sessions/{checkout_id}
curl -X GET https://api.billkit.eu/v1/checkout/sessions/cs_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Usage records

Metered events reported against a subscription. 3
GET /v1/subscriptions/{subscription_id}/usage_records List Usage Records

List the usage reported against one metered subscription. Requires a secret or restricted key with usage_records:read.

GET /v1/subscriptions/{subscription_id}/usage_records
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_records \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/subscriptions/{subscription_id}/usage_records Create Usage Record

Report usage against a metered subscription. Requires a secret or restricted key with usage_records:write.

POST /v1/subscriptions/{subscription_id}/usage_records
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_records \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"quantity":0}'
Full reference for this operation →
GET /v1/subscriptions/{subscription_id}/usage_summary Get Usage Summary

See what the next period close will bill, before it bills it. Requires a secret or restricted key with usage_records:read.

GET /v1/subscriptions/{subscription_id}/usage_summary
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_summary \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Invoices

Statements generated at the end of a billing period. 5
GET /v1/invoices List Invoices

List invoices, newest first. Requires a secret or restricted key with invoices:read.

GET /v1/invoices
curl -X GET https://api.billkit.eu/v1/invoices \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/invoices/{invoice_id} Get Invoice

Retrieve one invoice, with its line items. Requires a secret or restricted key with invoices:read.

GET /v1/invoices/{invoice_id}
curl -X GET https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/invoices/{invoice_id}/email Email Invoice

Send the customer their invoice again. Requires a secret or restricted key with invoices:write.

POST /v1/invoices/{invoice_id}/email
curl -X POST https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/email \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/invoices/{invoice_id}/pdf Get Invoice Pdf

Download the invoice as a PDF. Requires a secret or restricted key with invoices:read.

GET /v1/invoices/{invoice_id}/pdf
curl -X GET https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/pdf \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/invoices/{invoice_id}/void Void Invoice Route

Void an invoice, stating that the sale was never owed. Requires a secret or restricted key with invoices:write.

POST /v1/invoices/{invoice_id}/void
curl -X POST https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/void \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →

Credit notes

Reversals issued against an invoice. 3
GET /v1/credit_notes List Credit Notes

List credit notes, newest first. Requires a secret or restricted key with credit_notes:read.

GET /v1/credit_notes
curl -X GET https://api.billkit.eu/v1/credit_notes \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/credit_notes/{credit_note_id} Get Credit Note

Retrieve one credit note. Requires a secret or restricted key with credit_notes:read.

GET /v1/credit_notes/{credit_note_id}
curl -X GET https://api.billkit.eu/v1/credit_notes/cn_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/credit_notes/{credit_note_id}/pdf Get Credit Note Pdf

Download the credit note as a PDF. Requires a secret or restricted key with credit_notes:read.

GET /v1/credit_notes/{credit_note_id}/pdf
curl -X GET https://api.billkit.eu/v1/credit_notes/cn_9XKp2vQ1/pdf \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Payments

Individual charge attempts and their outcome. 3
GET /v1/payments List Payments

List subscription payments, newest first. Requires a secret or restricted key with payments:read.

GET /v1/payments
curl -X GET https://api.billkit.eu/v1/payments \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/payments/{payment_id} Get Payment

Retrieve one subscription payment, including how much has been refunded. Requires a secret or restricted key with payments:read.

GET /v1/payments/{payment_id}
curl -X GET https://api.billkit.eu/v1/payments/pay_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/payments/{payment_id}/provider Get Payment Provider Payload

Fetch the provider's own record of this charge, live. Requires a secret or restricted key with payments:read.

GET /v1/payments/{payment_id}/provider
curl -X GET https://api.billkit.eu/v1/payments/pay_9XKp2vQ1/provider \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Refunds

Full and partial returns against a settled payment. 3
GET /v1/refunds List Refunds

List refunds, newest first. Requires a secret or restricted key with refunds:read.

GET /v1/refunds
curl -X GET https://api.billkit.eu/v1/refunds \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/refunds Create Refund

Refund a payment, in full or in part. Requires a secret or restricted key with refunds:write.

POST /v1/refunds
curl -X POST https://api.billkit.eu/v1/refunds \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
GET /v1/refunds/{refund_id} Get Refund

Retrieve one refund and check whether it has settled. Requires a secret or restricted key with refunds:read.

GET /v1/refunds/{refund_id}
curl -X GET https://api.billkit.eu/v1/refunds/re_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Disputes

Chargebacks raised by the cardholder or their bank. 2
GET /v1/disputes List Disputes

List chargebacks raised against your payments, newest first. Requires a secret or restricted key with disputes:read.

GET /v1/disputes
curl -X GET https://api.billkit.eu/v1/disputes \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/disputes/{dispute_id} Get Dispute

Retrieve one chargeback. Requires a secret or restricted key with disputes:read.

GET /v1/disputes/{dispute_id}
curl -X GET https://api.billkit.eu/v1/disputes/dp_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Coupons

Percentage and fixed-amount discounts applied at checkout. 5
GET /v1/coupons List Coupons

List coupons, newest first. Requires a secret or restricted key with coupons:read.

GET /v1/coupons
curl -X GET https://api.billkit.eu/v1/coupons \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/coupons Create Coupon

Create a discount code customers can enter at checkout. Requires a secret or restricted key with coupons:write.

POST /v1/coupons
curl -X POST https://api.billkit.eu/v1/coupons \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code":"string","discount_type":"percent","discount_value":0}'
Full reference for this operation →
GET /v1/coupons/{coupon_id} Get Coupon

Retrieve one coupon, including how many times it has been redeemed. Requires a secret or restricted key with coupons:read.

GET /v1/coupons/{coupon_id}
curl -X GET https://api.billkit.eu/v1/coupons/coup_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/coupons/{coupon_id} Update Coupon

Update a coupon's limits, or withdraw it. Requires a secret or restricted key with coupons:write.

POST /v1/coupons/{coupon_id}
curl -X POST https://api.billkit.eu/v1/coupons/coup_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
POST /v1/coupons/validate Validate Coupon

Check whether a code is usable, and what it would take off. Requires a secret or restricted key with coupons:read.

POST /v1/coupons/validate
curl -X POST https://api.billkit.eu/v1/coupons/validate \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code":"string"}'
Full reference for this operation →

Tax rates

VAT and sales-tax rates applied to a line item. 4
GET /v1/tax_rates List Tax Rates

List tax rates, newest first. Requires a secret or restricted key with tax_rates:read.

GET /v1/tax_rates
curl -X GET https://api.billkit.eu/v1/tax_rates \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/tax_rates Create Tax Rate

Set the VAT rate to charge customers in one country. Requires a secret or restricted key with tax_rates:write.

POST /v1/tax_rates
curl -X POST https://api.billkit.eu/v1/tax_rates \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country_code":"NL","rate_basis_points":0}'
Full reference for this operation →
GET /v1/tax_rates/{tax_rate_id} Get Tax Rate

Retrieve one tax rate. Requires a secret or restricted key with tax_rates:read.

GET /v1/tax_rates/{tax_rate_id}
curl -X GET https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/tax_rates/{tax_rate_id} Update Tax Rate

Correct a tax rate, retire it, or bring a retired one back into use. Requires a secret or restricted key with tax_rates:write.

POST /v1/tax_rates/{tax_rate_id}
curl -X POST https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →

Webhook endpoints

Endpoint registration, signing secrets and delivery attempts. 10
GET /v1/webhook_endpoints List Webhook Endpoints

List your webhook endpoints, newest first. Requires a secret or restricted key with webhook_endpoints:read.

GET /v1/webhook_endpoints
curl -X GET https://api.billkit.eu/v1/webhook_endpoints \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/webhook_endpoints Create Webhook Endpoint

Register a URL to receive events. Requires a secret or restricted key with webhook_endpoints:write.

POST /v1/webhook_endpoints
curl -X POST https://api.billkit.eu/v1/webhook_endpoints \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://acme.example/welcome"}'
Full reference for this operation →
DELETE /v1/webhook_endpoints/{endpoint_id} Delete Webhook Endpoint

Delete a webhook endpoint. Requires a secret or restricted key with webhook_endpoints:write.

DELETE /v1/webhook_endpoints/{endpoint_id}
curl -X DELETE https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/webhook_endpoints/{endpoint_id} Get Webhook Endpoint

Retrieve one webhook endpoint's configuration. Requires a secret or restricted key with webhook_endpoints:read.

GET /v1/webhook_endpoints/{endpoint_id}
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/webhook_endpoints/{endpoint_id} Update Webhook Endpoint

Update a webhook endpoint's URL, event list, description or status. Requires a secret or restricted key with webhook_endpoints:write.

POST /v1/webhook_endpoints/{endpoint_id}
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
GET /v1/webhook_endpoints/{endpoint_id}/deliveries List Webhook Endpoint Deliveries

List the delivery attempts made to one webhook endpoint, newest first. Requires a secret or restricted key with webhook_endpoints:read.

GET /v1/webhook_endpoints/{endpoint_id}/deliveries
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id} Get Webhook Delivery

Retrieve one delivery attempt. Requires a secret or restricted key with webhook_endpoints:read.

GET /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver Redeliver Webhook Delivery

Send one delivery again, straight away. Requires a secret or restricted key with webhook_endpoints:write.

POST /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_9XKp2vQ1/redeliver \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/webhook_endpoints/{endpoint_id}/rotate_secret Rotate Webhook Endpoint Secret

Replace the endpoint's signing secret. Requires a secret or restricted key with webhook_endpoints:write.

POST /v1/webhook_endpoints/{endpoint_id}/rotate_secret
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/rotate_secret \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/webhook_endpoints/event_types List Event Types

Every event type this deployment can deliver. Requires a secret or restricted key with webhook_endpoints:read.

GET /v1/webhook_endpoints/event_types
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/event_types \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Events

The immutable log every webhook is delivered from. 3
GET /v1/events List Events

List the events recorded for your account, newest first. Requires a secret or restricted key with events:read.

GET /v1/events
curl -X GET https://api.billkit.eu/v1/events \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/events/{event_id} Get Event

Retrieve one event, including the full data payload it carried. Requires a secret or restricted key with events:read.

GET /v1/events/{event_id}
curl -X GET https://api.billkit.eu/v1/events/evt_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/events/stream Stream Events

Hold a connection open and receive this account's events as they happen. Requires a secret or restricted key with events:read.

GET /v1/events/stream
curl -X GET https://api.billkit.eu/v1/events/stream \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Metrics

Aggregate revenue and subscription counts for a dashboard. 1
GET /v1/metrics/home Get Home Metrics

Four headline numbers for your account, in one call. Requires a secret or restricted key with metrics:read.

GET /v1/metrics/home
curl -X GET https://api.billkit.eu/v1/metrics/home \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

API keys

Mint, scope and revoke the keys that reach this API. 4
GET /v1/api_keys List Api Keys

List your API keys, newest first. Requires a secret or restricted key with api_keys:read.

GET /v1/api_keys
curl -X GET https://api.billkit.eu/v1/api_keys \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/api_keys Create Api Key

Issue a new API key. Requires a secret or restricted key with api_keys:write.

POST /v1/api_keys
curl -X POST https://api.billkit.eu/v1/api_keys \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
GET /v1/api_keys/{api_key_id} Get Api Key

Retrieve one API key's metadata. Requires a secret or restricted key with api_keys:read.

GET /v1/api_keys/{api_key_id}
curl -X GET https://api.billkit.eu/v1/api_keys/ak_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/api_keys/{api_key_id}/revoke Revoke Api Key

Revoke an API key so it stops working. Requires a secret or restricted key with api_keys:write.

POST /v1/api_keys/{api_key_id}/revoke
curl -X POST https://api.billkit.eu/v1/api_keys/ak_9XKp2vQ1/revoke \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Audit logs

Who changed what, from the console or the API. 2
GET /v1/audit_logs List Audit Logs

List the record of who changed what in your account, newest first. Requires a secret or restricted key with audit_logs:read.

GET /v1/audit_logs
curl -X GET https://api.billkit.eu/v1/audit_logs \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/audit_logs/{audit_log_id} Get Audit Log

Retrieve one audit entry, including the details recorded with it. Requires a secret or restricted key with audit_logs:read.

GET /v1/audit_logs/{audit_log_id}
curl -X GET https://api.billkit.eu/v1/audit_logs/4b2a1e90-7c3d-4f18-9a55-1c0b6de3a742 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Tenant

Your account settings, branding and data export. 7
GET /v1/tenant/billing_profile Get Billing Profile

Read your own registered country and VAT number. Requires a secret or restricted key with tenant:read.

GET /v1/tenant/billing_profile
curl -X GET https://api.billkit.eu/v1/tenant/billing_profile \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/tenant/billing_profile Update Billing Profile

Set your registered country, and optionally your own VAT number. Requires a secret or restricted key with tenant:write.

POST /v1/tenant/billing_profile
curl -X POST https://api.billkit.eu/v1/tenant/billing_profile \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country_code":"NL"}'
Full reference for this operation →
GET /v1/tenant/capabilities Get Tenant Capabilities

Read which payment methods and currencies your account can actually use. Requires a secret or restricted key with tenant:read.

GET /v1/tenant/capabilities
curl -X GET https://api.billkit.eu/v1/tenant/capabilities \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/tenant/export Export Tenant Data

Download everything in your account as one JSON file. Requires a secret or restricted key with data:export.

GET /v1/tenant/export
curl -X GET https://api.billkit.eu/v1/tenant/export \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/tenant/portal_branding Get Portal Branding

Read how your billing portal is branded. Requires a secret or restricted key with tenant:read.

GET /v1/tenant/portal_branding
curl -X GET https://api.billkit.eu/v1/tenant/portal_branding \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/tenant/portal_branding Update Portal Branding

Set the business name, logo, support email and colours your customers see in the billing portal. Requires a secret or restricted key with tenant:write.

POST /v1/tenant/portal_branding
curl -X POST https://api.billkit.eu/v1/tenant/portal_branding \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
POST /v1/tenant/provider_credential Rotate Tenant Provider Credential

Replace the payment provider API key BillKit uses to charge on your behalf. Requires a secret or restricted key with tenant:write.

POST /v1/tenant/provider_credential
curl -X POST https://api.billkit.eu/v1/tenant/provider_credential \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api_key":"string"}'
Full reference for this operation →

Test clocks

Advance time in test mode to exercise a year of billing in a minute. 5
GET /v1/test_clocks List Test Clocks

List your test clocks, newest first. Test mode only. Requires a secret or restricted key with test_clocks:read.

GET /v1/test_clocks
curl -X GET https://api.billkit.eu/v1/test_clocks \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/test_clocks Create Test Clock

Create a frozen clock so you can test billing over time. Requires a secret or restricted key with test_clocks:write.

POST /v1/test_clocks
curl -X POST https://api.billkit.eu/v1/test_clocks \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"frozen_time":1789392000}'
Full reference for this operation →
DELETE /v1/test_clocks/{test_clock_id} Delete Test Clock

Delete a test clock. Requires a secret or restricted key with test_clocks:write.

DELETE /v1/test_clocks/{test_clock_id}
curl -X DELETE https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
GET /v1/test_clocks/{test_clock_id} Get Test Clock

Retrieve one test clock and the time it is currently frozen at. Requires a secret or restricted key with test_clocks:read.

GET /v1/test_clocks/{test_clock_id}
curl -X GET https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →
POST /v1/test_clocks/{test_clock_id}/advance Advance Test Clock

Move a test clock forward and let everything due in between happen. Requires a secret or restricted key with test_clocks:write.

POST /v1/test_clocks/{test_clock_id}/advance
curl -X POST https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1/advance \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"frozen_time":1789392000}'
Full reference for this operation →

Billing portal

Server-side entry points for the customer-facing portal. 2
POST /v1/billing_portal/sessions Create Portal Session

Mint a link that lets a customer manage their own subscription. Requires a secret or restricted key with subscriptions:write.

POST /v1/billing_portal/sessions
curl -X POST https://api.billkit.eu/v1/billing_portal/sessions \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"return_url":"https://acme.example/welcome","subscription_id":"sub_9XKp2vQ1"}'
Full reference for this operation →
POST /v1/billing_portal/sessions/{session_id}/revoke Revoke Portal Session

Invalidate a portal link that is already out in the world. Requires a secret or restricted key with subscriptions:write.

POST /v1/billing_portal/sessions/{session_id}/revoke
curl -X POST https://api.billkit.eu/v1/billing_portal/sessions/bps_9XKp2vQ1/revoke \
  -H "Authorization: Bearer $BILLKIT_SECRET_KEY"
Full reference for this operation →

Generate a client

Point any OpenAPI generator at the spec URL above. Regenerate when you want newly added fields; releases add optional fields rather than changing existing ones.

shell
npx @openapitools/openapi-generator-cli generate \
  -i https://api.billkit.eu/openapi.json \
  -g java -o ./billkit-java

Spec changelog

Version Change
2026-09-13 First published.