BillKit/DocsConsole
Specification

OpenAPI spec

v1.1.091 operations · 1523 KB

openapi.json

One self-contained file with shared schemas under components. Use it for code generation.

Download JSON

Browse operations

The document covers the 91 operations you can call with an API key, and every schema they use.

91 / 91 operations

Meta

Check a key and the mode it resolves to. No scope required.1
GET/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.

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

Customers

People and organisations you bill.7
GET/v1/customersList Customers

List your customers, newest first. Requires a key with the customers:read scope.

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

Create a customer. Requires a key with the customers:write scope.

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

Delete a customer. Requires a key with the customers:write scope.

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

Retrieve one customer. Requires a key with the customers:read scope.

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

Update a customer's email, name, metadata or country. Requires a key with the customers:write scope.

POST /v1/customers/{customer_id}
curl -X POST https://api.billkit.eu/v1/customers/cus_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
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.

POST /v1/customers/{customer_id}/purge
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}'
Full reference for this operation →
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.

POST /v1/customers/{customer_id}/vat_number
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 '{}'
Full reference for this operation →

Products

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

List your products, newest first. Requires a key with the products:read scope.

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

Create a product: the name and description of something you sell. Requires a key with the products:write scope.

POST /v1/products
curl -X POST https://api.billkit.eu/v1/products \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the products:read scope.

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

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

POST /v1/products/{product_id}
curl -X POST https://api.billkit.eu/v1/products/prod_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_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/pricesList Prices

List your prices, newest first. Requires a key with the prices:read scope.

GET /v1/prices
curl -X GET https://api.billkit.eu/v1/prices \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/prices
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}'
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 key with the prices:read scope.

GET /v1/prices/{price_id}
curl -X GET https://api.billkit.eu/v1/prices/price_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

Subscriptions

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

List subscriptions, newest first. Requires a key with the subscriptions:read scope.

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

Retrieve one subscription. Requires a key with the subscriptions:read scope.

GET /v1/subscriptions/{subscription_id}
curl -X GET https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

Stop a subscription renewing without cancelling it. Requires a key with the subscriptions:write scope.

POST /v1/subscriptions/{subscription_id}/pause
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/pause \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/subscriptions/{subscription_id}/preview_update
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"}'
Full reference for this operation →
POST/v1/subscriptions/{subscription_id}/reactivateReactivate Subscription

Undo a pending cancellation so the subscription keeps renewing. Requires a key with the subscriptions:write scope.

POST /v1/subscriptions/{subscription_id}/reactivate
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/reactivate \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"return_url":"https://acme.example/welcome"}'
Full reference for this operation →
POST/v1/subscriptions/{subscription_id}/resumeResume Subscription

Restart renewals on a paused subscription. Requires a key with the subscriptions:write scope.

POST /v1/subscriptions/{subscription_id}/resume
curl -X POST https://api.billkit.eu/v1/subscriptions/sub_9XKp2vQ1/resume \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/subscriptions/{subscription_id}/update
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"}'
Full reference for this operation →

Checkout

Hosted and embedded Checkout sessions, and one-off payments.5
GET/v1/checkout/one_shotList One Shots

List one-off payments, newest first. Requires a key with the checkout_sessions:read scope.

GET /v1/checkout/one_shot
curl -X GET https://api.billkit.eu/v1/checkout/one_shot \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/checkout/one_shot
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"}'
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 key with the checkout_sessions:read scope.

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_API_KEY"
Full reference for this operation →
POST/v1/checkout/sessionsCreate Checkout Session

Start a subscription sign-up for one price. Requires a key with the checkout_sessions:write scope.

POST /v1/checkout/sessions
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"}'
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 key with the checkout_sessions:read scope.

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

Usage records

Metered events reported against a subscription.3
GET/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.

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

Report usage against a metered subscription. Requires a key with the usage_records:write scope.

POST /v1/subscriptions/{subscription_id}/usage_records
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}'
Full reference for this operation →
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.

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

Invoices

Documents issued when a charge settles.5
GET/v1/invoicesList Invoices

List invoices, newest first, without their line items. Requires a key with the invoices:read scope.

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

Retrieve one invoice, with its line items. Requires a key with the invoices:read scope.

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

Email the invoice to the customer again. Requires a key with the invoices:write scope.

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

Download the invoice as a PDF. Requires a key with the invoices:read scope.

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

Void an invoice that should not have been issued. Requires a key with the invoices:write scope.

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

Credit notes

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

List credit notes, newest first. Requires a key with the credit_notes:read scope.

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

Retrieve one credit note. Requires a key with the credit_notes:read scope.

GET /v1/credit_notes/{credit_note_id}
curl -X GET https://api.billkit.eu/v1/credit_notes/cn_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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_API_KEY"
Full reference for this operation →

Payments

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

List subscription payments, newest first. Requires a key with the payments:read scope.

GET /v1/payments
curl -X GET https://api.billkit.eu/v1/payments \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the payments:read scope.

GET /v1/payments/{payment_id}
curl -X GET https://api.billkit.eu/v1/payments/pay_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

Refunds

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

List refunds, newest first. Requires a key with the refunds:read scope.

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

Refund a payment, in full or in part. Requires a key with the refunds:write scope.

POST /v1/refunds
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"}'
Full reference for this operation →
GET/v1/refunds/{refund_id}Get Refund

Retrieve one refund and check whether it has settled. Requires a key with the refunds:read scope.

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

Disputes

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

List chargebacks raised against your payments, newest first. Requires a key with the disputes:read scope.

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

Retrieve one chargeback. Requires a key with the disputes:read scope.

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

Coupons

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

List coupons, newest first. Requires a key with the coupons:read scope.

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

Create a discount code customers can enter at checkout. Requires a key with the coupons:write scope.

POST /v1/coupons
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}'
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 key with the coupons:read scope.

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

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

POST /v1/coupons/{coupon_id}
curl -X POST https://api.billkit.eu/v1/coupons/coup_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
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.

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

Tax rates

VAT rates by country, chosen by where the buyer is.4
GET/v1/tax_ratesList Tax Rates

List tax rates, newest first. Requires a key with the tax_rates:read scope.

GET /v1/tax_rates
curl -X GET https://api.billkit.eu/v1/tax_rates \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/tax_rates
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}'
Full reference for this operation →
GET/v1/tax_rates/{tax_rate_id}Get Tax Rate

Retrieve one tax rate. Requires a key with the tax_rates:read scope.

GET /v1/tax_rates/{tax_rate_id}
curl -X GET https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the tax_rates:write scope.

POST /v1/tax_rates/{tax_rate_id}
curl -X POST https://api.billkit.eu/v1/tax_rates/tr_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_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_endpointsList Webhook Endpoints

List your webhook endpoints, newest first. Requires a key with the webhook_endpoints:read scope.

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

Register a URL to receive events. Requires a key with the webhook_endpoints:write scope.

POST /v1/webhook_endpoints
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"}'
Full reference for this operation →
DELETE/v1/webhook_endpoints/{endpoint_id}Delete Webhook Endpoint

Delete a webhook endpoint. Requires a key with the webhook_endpoints:write scope.

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

Retrieve one webhook endpoint's configuration. Requires a key with the webhook_endpoints:read scope.

GET /v1/webhook_endpoints/{endpoint_id}
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the webhook_endpoints:write scope.

POST /v1/webhook_endpoints/{endpoint_id}
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
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.

GET /v1/webhook_endpoints/{endpoint_id}/deliveries
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

GET /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}
curl -X GET https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_4b2a1e907c3d4f189a551c0b6de3a742 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/webhook_endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver
curl -X POST https://api.billkit.eu/v1/webhook_endpoints/we_9XKp2vQ1/deliveries/whd_4b2a1e907c3d4f189a551c0b6de3a742/redeliver \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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_API_KEY"
Full reference for this operation →
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.

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

Events

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

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

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

Retrieve one event, including its full data payload. Requires a key with the events:read scope.

GET /v1/events/{event_id}
curl -X GET https://api.billkit.eu/v1/events/evt_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

API keys

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

List your API keys, newest first. Requires a key with the api_keys:read scope.

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

Issue a new API key. Requires a key with the api_keys:write scope.

POST /v1/api_keys
curl -X POST https://api.billkit.eu/v1/api_keys \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the api_keys:read scope.

GET /v1/api_keys/{api_key_id}
curl -X GET https://api.billkit.eu/v1/api_keys/ak_4b2a1e907c3d4f189a551c0b6de3a742 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

Audit logs

Who changed what, from the console or the API.2
GET/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.

GET /v1/audit_logs
curl -X GET https://api.billkit.eu/v1/audit_logs \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the audit_logs:read scope.

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

Tenant

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

Read your own business country, VAT number and invoice address. Requires a key with the tenant:read scope.

GET /v1/tenant/billing_profile
curl -X GET https://api.billkit.eu/v1/tenant/billing_profile \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/tenant/billing_profile
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"}'
Full reference for this operation →
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.

GET /v1/tenant/capabilities
curl -X GET https://api.billkit.eu/v1/tenant/capabilities \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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

Read your billing portal branding. Requires a key with the tenant:read scope.

GET /v1/tenant/portal_branding
curl -X GET https://api.billkit.eu/v1/tenant/portal_branding \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/tenant/portal_branding
curl -X POST https://api.billkit.eu/v1/tenant/portal_branding \
  -H "Authorization: Bearer $BILLKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Full reference for this operation →
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.

POST /v1/tenant/provider_credential
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"}'
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_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.

GET /v1/test_clocks
curl -X GET https://api.billkit.eu/v1/test_clocks \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

POST /v1/test_clocks
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}'
Full reference for this operation →
DELETE/v1/test_clocks/{test_clock_id}Delete Test Clock

Delete a test clock. Requires a key with the test_clocks:write scope.

DELETE /v1/test_clocks/{test_clock_id}
curl -X DELETE https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_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 key with the test_clocks:read scope.

GET /v1/test_clocks/{test_clock_id}
curl -X GET https://api.billkit.eu/v1/test_clocks/tc_9XKp2vQ1 \
  -H "Authorization: Bearer $BILLKIT_API_KEY"
Full reference for this operation →
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.

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_API_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/sessionsCreate Portal Session

Create a billing portal link for one subscription's customer. Requires a key with the subscriptions:write scope.

POST /v1/billing_portal/sessions
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"}'
Full reference for this operation →
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.

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_API_KEY"
Full reference for this operation →

Generate a client

Point any OpenAPI generator at the published document.

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

Pin 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.