OpenAPI spec
openapi.json
One self-contained file with shared schemas under components. Use it for code generation.
Browse operations
The document covers the 91 operations you can call with an API key, and every schema they use.
Meta
Check a key and the mode it resolves to. No scope required.1GET/v1/pingPing
Check that a key works, and see which account and mode it resolves to. Any valid API key can call it; it requires no scope.
curl -X GET https://api.billkit.eu/v1/ping \
-H "Authorization: Bearer $BILLKIT_API_KEY"Customers
People and organisations you bill.7GET/v1/customersList Customers
List your customers, newest first.
Requires a key with the customers:read scope.
curl -X GET https://api.billkit.eu/v1/customers \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/customersCreate Customer
Create a customer.
Requires a key with the customers:write scope.
curl -X POST https://api.billkit.eu/v1/customers \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'DELETE/v1/customers/{customer_id}Delete Customer
Delete a customer.
Requires a key with the customers:write scope.
curl -X DELETE https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/customers/{customer_id}Get Customer
Retrieve one customer.
Requires a key with the customers:read scope.
curl -X GET https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/customers/{customer_id}Update Customer
Update a customer's email, name, metadata or country.
Requires a key with the customers:write scope.
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'POST/v1/customers/{customer_id}/purgePurge Customer
Erase a customer's personal data and keep their financial history.
Requires a key with the customers:write scope.
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1/purge \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"confirmed":true}'POST/v1/customers/{customer_id}/vat_numberSet Customer Vat Number
Set or clear a business customer's VAT registration number.
Requires a key with the customers:write scope.
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1/vat_number \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Products
The things you sell, independent of what they cost.4GET/v1/productsList Products
List your products, newest first.
Requires a key with the products:read scope.
curl -X GET https://api.billkit.eu/v1/products \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/productsCreate Product
Create a product: the name and description of something you sell.
Requires a key with the products:write scope.
curl -X POST https://api.billkit.eu/v1/products \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Ada Lovelace"}'GET/v1/products/{product_id}Get Product
Retrieve one product.
Requires a key with the products:read scope.
curl -X GET https://api.billkit.eu/v1/products/prod_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/products/{product_id}Update Product
Update a product's details, or archive it.
Requires a key with the products:write scope.
curl -X POST https://api.billkit.eu/v1/products/prod_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Prices
Amount, currency, interval and tax behaviour for a product.4GET/v1/pricesList Prices
List your prices, newest first.
Requires a key with the prices:read scope.
curl -X GET https://api.billkit.eu/v1/prices \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/pricesCreate Price
Create a price for a product: the amount, currency and interval a customer buys.
Requires a key with the prices:write scope.
curl -X POST https://api.billkit.eu/v1/prices \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"interval":"month","product_id":"prod_9XKp2vQ1","amount_cents":999}'GET/v1/prices/{price_id}Get Price
Retrieve one price, including its trial, tax and refund-window settings.
Requires a key with the prices:read scope.
curl -X GET https://api.billkit.eu/v1/prices/price_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/prices/{price_id}Update Price
Archive a price, restore it, or change its forward-looking settings.
Requires a key with the prices:write scope.
curl -X POST https://api.billkit.eu/v1/prices/price_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Subscriptions
Recurring agreements between a customer and a price.9GET/v1/subscriptionsList Subscriptions
List subscriptions, newest first.
Requires a key with the subscriptions:read scope.
curl -X GET https://api.billkit.eu/v1/subscriptions \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/subscriptions/{subscription_id}Get Subscription
Retrieve one subscription.
Requires a key with the subscriptions:read scope.
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/cancelCancel Subscription
Stop a subscription renewing at the end of the current period.
Requires a key with the subscriptions:cancel scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/cancel \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/pausePause Subscription
Stop a subscription renewing without cancelling it.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/pause \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/preview_updatePreview Update Subscription
Quote what moving a subscription to another price would cost now.
Requires a key with the subscriptions:read scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/preview_update \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"target_price_id":"price_9XKp2vQ1"}'POST/v1/subscriptions/{subscription_id}/reactivateReactivate Subscription
Undo a pending cancellation so the subscription keeps renewing.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/reactivate \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/reauthorize_payment_methodReauthorize Payment Method
Start the flow for a customer to replace their payment method.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/reauthorize_payment_method \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"return_url":"https://acme.example/welcome"}'POST/v1/subscriptions/{subscription_id}/resumeResume Subscription
Restart renewals on a paused subscription.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/resume \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/updateUpdate Subscription
Move a subscription to a different price, charging the prorated difference.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/update \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"target_price_id":"price_9XKp2vQ1"}'Checkout
Hosted and embedded Checkout sessions, and one-off payments.5GET/v1/checkout/one_shotList One Shots
List one-off payments, newest first.
Requires a key with the checkout_sessions:read scope.
curl -X GET https://api.billkit.eu/v1/checkout/one_shot \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/checkout/one_shotCreate One Shot
Charge an existing customer once, with no subscription and no stored mandate.
Requires a key with the checkout_sessions:write scope.
curl -X POST https://api.billkit.eu/v1/checkout/one_shot \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_cents":1900,"currency":"EUR","customer_id":"cus_9XKp2vQ1","success_url":"https://acme.example/welcome"}'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 key with the checkout_sessions:read scope.
curl -X GET https://api.billkit.eu/v1/checkout/one_shot/osp_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/checkout/sessionsCreate Checkout Session
Start a subscription sign-up for one price.
Requires a key with the checkout_sessions:write scope.
curl -X POST https://api.billkit.eu/v1/checkout/sessions \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cancel_url":"https://acme.example/pricing","price_id":"price_9XKp2vQ1","success_url":"https://acme.example/welcome","customer_id":"cus_9XKp2vQ1"}'GET/v1/checkout/sessions/{checkout_id}Get Checkout Session
Retrieve one checkout session, to see whether the customer completed it.
Requires a key with the checkout_sessions:read scope.
curl -X GET https://api.billkit.eu/v1/checkout/sessions/cs_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"Usage records
Metered events reported against a subscription.3GET/v1/subscriptions/{subscription_id}/usage_recordsList Usage Records
List the usage reported against one metered subscription.
Requires a key with the usage_records:read scope.
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_records \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/subscriptions/{subscription_id}/usage_recordsCreate Usage Record
Report usage against a metered subscription.
Requires a key with the usage_records:write scope.
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_records \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"quantity":0}'GET/v1/subscriptions/{subscription_id}/usage_summaryGet Usage Summary
See what the next period close will bill for a metered subscription.
Requires a key with the usage_records:read scope.
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/usage_summary \
-H "Authorization: Bearer $BILLKIT_API_KEY"Invoices
Documents issued when a charge settles.5GET/v1/invoicesList Invoices
List invoices, newest first, without their line items.
Requires a key with the invoices:read scope.
curl -X GET https://api.billkit.eu/v1/invoices \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/invoices/{invoice_id}Get Invoice
Retrieve one invoice, with its line items.
Requires a key with the invoices:read scope.
curl -X GET https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/invoices/{invoice_id}/emailEmail Invoice
Email the invoice to the customer again.
Requires a key with the invoices:write scope.
curl -X POST https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/email \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/invoices/{invoice_id}/pdfGet Invoice Pdf
Download the invoice as a PDF.
Requires a key with the invoices:read scope.
curl -X GET https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/pdf \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/invoices/{invoice_id}/voidVoid Invoice
Void an invoice that should not have been issued.
Requires a key with the invoices:write scope.
curl -X POST https://api.billkit.eu/v1/invoices/inv_9XKp2vQ1/void \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Credit notes
Reversals issued against an invoice.3GET/v1/credit_notesList Credit Notes
List credit notes, newest first.
Requires a key with the credit_notes:read scope.
curl -X GET https://api.billkit.eu/v1/credit_notes \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/credit_notes/{credit_note_id}Get Credit Note
Retrieve one credit note.
Requires a key with the credit_notes:read scope.
curl -X GET https://api.billkit.eu/v1/credit_notes/cn_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/credit_notes/{credit_note_id}/pdfGet Credit Note Pdf
Download the credit note as a PDF.
Requires a key with the credit_notes:read scope.
curl -X GET https://api.billkit.eu/v1/credit_notes/cn_9XKp2vQ1/pdf \
-H "Authorization: Bearer $BILLKIT_API_KEY"Payments
Individual charge attempts and their outcome.3GET/v1/paymentsList Payments
List subscription payments, newest first.
Requires a key with the payments:read scope.
curl -X GET https://api.billkit.eu/v1/payments \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/payments/{payment_id}Get Payment
Retrieve one subscription payment, including how much has been refunded.
Requires a key with the payments:read scope.
curl -X GET https://api.billkit.eu/v1/payments/pay_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/payments/{payment_id}/providerGet Payment Provider Payload
Fetch the payment provider's own record of this payment, live.
Requires a key with the payments:read scope.
curl -X GET https://api.billkit.eu/v1/payments/pay_9XKp2vQ1/provider \
-H "Authorization: Bearer $BILLKIT_API_KEY"Refunds
Full and partial returns against a settled payment.3GET/v1/refundsList Refunds
List refunds, newest first.
Requires a key with the refunds:read scope.
curl -X GET https://api.billkit.eu/v1/refunds \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/refundsCreate Refund
Refund a payment, in full or in part.
Requires a key with the refunds:write scope.
curl -X POST https://api.billkit.eu/v1/refunds \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"payment_id":"pay_9XKp2vQ1"}'GET/v1/refunds/{refund_id}Get Refund
Retrieve one refund and check whether it has settled.
Requires a key with the refunds:read scope.
curl -X GET https://api.billkit.eu/v1/refunds/re_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"Disputes
Chargebacks raised by the cardholder or their bank.2GET/v1/disputesList Disputes
List chargebacks raised against your payments, newest first.
Requires a key with the disputes:read scope.
curl -X GET https://api.billkit.eu/v1/disputes \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/disputes/{dispute_id}Get Dispute
Retrieve one chargeback.
Requires a key with the disputes:read scope.
curl -X GET https://api.billkit.eu/v1/disputes/dp_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"Coupons
Percentage and fixed-amount discounts applied at checkout.5GET/v1/couponsList Coupons
List coupons, newest first.
Requires a key with the coupons:read scope.
curl -X GET https://api.billkit.eu/v1/coupons \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/couponsCreate Coupon
Create a discount code customers can enter at checkout.
Requires a key with the coupons:write scope.
curl -X POST https://api.billkit.eu/v1/coupons \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"LAUNCH","percent_off":20}'GET/v1/coupons/{coupon_id}Get Coupon
Retrieve one coupon, including how many times it has been redeemed.
Requires a key with the coupons:read scope.
curl -X GET https://api.billkit.eu/v1/coupons/coup_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/coupons/{coupon_id}Update Coupon
Update a coupon's limits, or withdraw it.
Requires a key with the coupons:write scope.
curl -X POST https://api.billkit.eu/v1/coupons/coup_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'POST/v1/coupons/validateValidate Coupon
Check whether a code is usable, and what it would take off.
Requires a key with the coupons:read scope.
curl -X POST https://api.billkit.eu/v1/coupons/validate \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"LAUNCH"}'Tax rates
VAT rates by country, chosen by where the buyer is.4GET/v1/tax_ratesList Tax Rates
List tax rates, newest first.
Requires a key with the tax_rates:read scope.
curl -X GET https://api.billkit.eu/v1/tax_rates \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/tax_ratesCreate Tax Rate
Set the VAT rate to charge customers in one country.
Requires a key with the tax_rates:write scope.
curl -X POST https://api.billkit.eu/v1/tax_rates \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country_code":"NL","rate_basis_points":0}'GET/v1/tax_rates/{tax_rate_id}Get Tax Rate
Retrieve one tax rate.
Requires a key with the tax_rates:read scope.
curl -X GET https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"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 key with the tax_rates:write scope.
curl -X POST https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Webhook endpoints
Endpoint registration, signing secrets and delivery attempts.10GET/v1/webhook_endpointsList Webhook Endpoints
List your webhook endpoints, newest first.
Requires a key with the webhook_endpoints:read scope.
curl -X GET https://api.billkit.eu/v1/webhook_endpoints \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/webhook_endpointsCreate Webhook Endpoint
Register a URL to receive events.
Requires a key with the webhook_endpoints:write scope.
curl -X POST https://api.billkit.eu/v1/webhook_endpoints \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://acme.example/welcome"}'DELETE/v1/webhook_endpoints/{endpoint_id}Delete Webhook Endpoint
Delete a webhook endpoint.
Requires a key with the webhook_endpoints:write scope.
curl -X DELETE https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/webhook_endpoints/{endpoint_id}Get Webhook Endpoint
Retrieve one webhook endpoint's configuration.
Requires a key with the webhook_endpoints:read scope.
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/webhook_endpoints/{endpoint_id}Update Webhook Endpoint
Update a webhook endpoint's URL, event list, description or status.
Requires a key with the webhook_endpoints:write scope.
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'GET/v1/webhook_endpoints/{endpoint_id}/deliveriesList Webhook Endpoint Deliveries
List the delivery attempts made to one webhook endpoint, newest first.
Requires a key with the webhook_endpoints:read scope.
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}Get Webhook Delivery
Retrieve one delivery attempt.
Requires a key with the webhook_endpoints:read scope.
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_4b2a1e907c3d4f189a551c0b6de3a742 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliverRedeliver Webhook Delivery
Send one delivery again.
Requires a key with the webhook_endpoints:write scope.
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_4b2a1e907c3d4f189a551c0b6de3a742/redeliver \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/webhook_endpoints/{endpoint_id}/rotate_secretRotate Webhook Endpoint Secret
Replace the endpoint's signing secret.
Requires a key with the webhook_endpoints:write scope.
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/rotate_secret \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/webhook_endpoints/event_typesList Event Types
List every event type you can subscribe a webhook endpoint to.
Requires a key with the webhook_endpoints:read scope.
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/event_types \
-H "Authorization: Bearer $BILLKIT_API_KEY"Events
The immutable log every webhook is delivered from.3GET/v1/eventsList Events
List the events recorded for your account, newest first.
Requires a key with the events:read scope.
curl -X GET https://api.billkit.eu/v1/events \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/events/{event_id}Get Event
Retrieve one event, including its full data payload.
Requires a key with the events:read scope.
curl -X GET https://api.billkit.eu/v1/events/evt_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/events/streamStream Events
Receive this account's events as they happen, over Server-Sent Events.
Requires a key with the events:read scope.
curl -X GET https://api.billkit.eu/v1/events/stream \
-H "Authorization: Bearer $BILLKIT_API_KEY"API keys
Mint, scope and revoke the keys that reach this API.4GET/v1/api_keysList Api Keys
List your API keys, newest first.
Requires a key with the api_keys:read scope.
curl -X GET https://api.billkit.eu/v1/api_keys \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/api_keysCreate Api Key
Issue a new API key.
Requires a key with the api_keys:write scope.
curl -X POST https://api.billkit.eu/v1/api_keys \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'GET/v1/api_keys/{api_key_id}Get Api Key
Retrieve one API key's metadata.
Requires a key with the api_keys:read scope.
curl -X GET https://api.billkit.eu/v1/api_keys/ak_4b2a1e907c3d4f189a551c0b6de3a742 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/api_keys/{api_key_id}/revokeRevoke Api Key
Revoke an API key so it stops working.
Requires a key with the api_keys:write scope.
curl -X POST https://api.billkit.eu/v1/api_keys/ak_4b2a1e907c3d4f189a551c0b6de3a742/revoke \
-H "Authorization: Bearer $BILLKIT_API_KEY"Audit logs
Who changed what, from the console or the API.2GET/v1/audit_logsList Audit Logs
List the record of who changed what in your account, newest first.
Requires a key with the audit_logs:read scope.
curl -X GET https://api.billkit.eu/v1/audit_logs \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/audit_logs/{audit_log_id}Get Audit Log
Retrieve one audit entry, including the details recorded with it.
Requires a key with the audit_logs:read scope.
curl -X GET https://api.billkit.eu/v1/audit_logs/al_4b2a1e907c3d4f189a551c0b6de3a742 \
-H "Authorization: Bearer $BILLKIT_API_KEY"Tenant
Your account settings, branding and data export.7GET/v1/tenant/billing_profileGet Billing Profile
Read your own business country, VAT number and invoice address.
Requires a key with the tenant:read scope.
curl -X GET https://api.billkit.eu/v1/tenant/billing_profile \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/tenant/billing_profileUpdate Billing Profile
Set your business country, and optionally your VAT number and invoice address.
Requires a key with the tenant:write scope.
curl -X POST https://api.billkit.eu/v1/tenant/billing_profile \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country_code":"NL"}'GET/v1/tenant/capabilitiesGet Tenant Capabilities
Read which payment methods and currencies your account can use in the current mode.
Requires a key with the tenant:read scope.
curl -X GET https://api.billkit.eu/v1/tenant/capabilities \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/tenant/exportExport Tenant Data
Download all of your account's data in the current mode as one JSON file.
Requires a key with the data:export scope.
curl -X GET https://api.billkit.eu/v1/tenant/export \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/tenant/portal_brandingGet Portal Branding
Read your billing portal branding.
Requires a key with the tenant:read scope.
curl -X GET https://api.billkit.eu/v1/tenant/portal_branding \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/tenant/portal_brandingUpdate Portal Branding
Set the business name, logo, support email, theme and features of your billing portal.
Requires a key with the tenant:write scope.
curl -X POST https://api.billkit.eu/v1/tenant/portal_branding \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'POST/v1/tenant/provider_credentialRotate Tenant Provider Credential
Replace the payment provider API key BillKit uses to charge on your behalf.
Requires a key with the provider_credential:write scope.
curl -X POST https://api.billkit.eu/v1/tenant/provider_credential \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api_key":"string"}'Test clocks
Advance time in test mode to exercise a year of billing in a minute.5GET/v1/test_clocksList Test Clocks
List your test clocks, newest first. Test mode only; a live-mode key gets 403.
Requires a key with the test_clocks:read scope.
curl -X GET https://api.billkit.eu/v1/test_clocks \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/test_clocksCreate Test Clock
Create a test clock, frozen at frozen_time, to test billing over time.
Requires a key with the test_clocks:write scope.
curl -X POST https://api.billkit.eu/v1/test_clocks \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"frozen_time":1789392000}'DELETE/v1/test_clocks/{test_clock_id}Delete Test Clock
Delete a test clock.
Requires a key with the test_clocks:write scope.
curl -X DELETE https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"GET/v1/test_clocks/{test_clock_id}Get Test Clock
Retrieve one test clock and the time it is currently frozen at.
Requires a key with the test_clocks:read scope.
curl -X GET https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
-H "Authorization: Bearer $BILLKIT_API_KEY"POST/v1/test_clocks/{test_clock_id}/advanceAdvance Test Clock
Move a test clock forward and run everything that falls due in between.
Requires a key with the test_clocks:write scope.
curl -X POST https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1/advance \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"frozen_time":1789392000}'Billing portal
Server-side entry points for the customer-facing portal.2POST/v1/billing_portal/sessionsCreate Portal Session
Create a billing portal link for one subscription's customer.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/billing_portal/sessions \
-H "Authorization: Bearer $BILLKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"return_url":"https://acme.example/welcome","subscription_id":"sub_9XKp2vQ1"}'POST/v1/billing_portal/sessions/{session_id}/revokeRevoke Portal Session
Invalidate a portal session you minted that is already out in the world.
Requires a key with the subscriptions:write scope.
curl -X POST https://api.billkit.eu/v1/billing_portal/sessions/bps_9XKp2vQ1/revoke \
-H "Authorization: Bearer $BILLKIT_API_KEY"Generate a client
Point any OpenAPI generator at the published document.
npx @openapitools/openapi-generator-cli generate \
-i https://docs.billkit.eu/openapi/latest.json \
-g java -o ./billkit-javaPin a versioned snapshot, or commit the document next to the client you generate from it.latest.json is rewritten as the API grows. Each released version is also published under its own name and never changes afterwards.Released: 1.1.0.json, 1.0.0.json.
2026-09-13.json is kept for reference only: 0.x, before the compatibility contract, not compatible with 1.0. Do not generate a client from it.
Versioning
BillKit has no request-level API version. There is no version header to send and nothing is pinned per account, so every key sees the same API. The version above labels this document; it is not something a caller selects.
The document is regenerated from the running API whenever its surface changes and republished as latest.json. Its version, v1.1.0, is the version of the /v1 contract it describes, and from 1.0 a release only ever adds to it: CI fails any change to the document that is not additive against the frozen 1.0 baseline. Versioning lists what that check covers and what is kept by review instead.
BillKit