API Reference
Complete REST API reference for the RevKeen billing and payments platform
The RevKeen API is organized around REST. It accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
Make your first request · Authentication
135 operations and 58 webhook events.
Core Payments
9 operations
Payment Intents, Refunds
Checkout
26 operations
Payment Links, Checkout Sessions, Cart Sessions, Storefront
Billing & Subscriptions
26 operations
Invoices, Credit Notes, Subscriptions, Billing
Usage Billing
9 operations
Meters, Usage Events, Usage
Products & Pricing
14 operations
Products, Prices
Customers & Vault
10 operations
Customers, Entitlements, Payment Methods
Money Movement
2 operations
Transactions
Webhooks & Events
10 operations
Events, Webhook Endpoints
Invoice Line Items
1 operations
Invoice Line Items
Accounting Integrations
2 operations
Accounting Integrations
Webhook Deliveries
3 operations
Webhook Deliveries
Customer Portal
12 operations
Customer Portal
Customer Meters
2 operations
Customer Meters
Direct Debit
3 operations
Direct Debit
Mandates
6 operations
Mandates
Webhooks
Make your first staging request
Set your staging API key in your server environment, then list customers. A matching key returns 200 OK with a list payload.
export REVKEEN_API_KEY=rk_sandbox_your_api_key
curl https://staging-api.revkeen.com/v2/customers \
-H "x-api-key: $REVKEEN_API_KEY" \
-H "Accept: application/json"Follow the complete quickstart · Authentication and key setup
Base URL
https://api.revkeen.com/v2Use https://staging-api.revkeen.com/v2 for pre-production testing. Staging data persists. Verify your payment provider's test configuration before testing payment workflows; staging does not guarantee that every connected provider is simulated. See Environments.
Authentication
All API requests require authentication. Send your merchant API key in the x-api-key header, or as Authorization: Bearer <key> — both are accepted:
curl https://api.revkeen.com/v2/invoices \
-H "x-api-key: rk_live_..."| Environment | Key prefix | Description |
|---|---|---|
| Staging | rk_sandbox_ | Pre-production testing against staging. |
| Live mode | rk_live_ | Real transactions. Use in production. |
Create and manage API keys in Dashboard → Settings → Developer. See Authentication for scopes, IP allowlists, rolling, and OAuth 2.1.
Rate limits
Each API key may make 600 requests per minute, in production and sandbox alike. The limit is per key, counted over a 60-second window, with no separate burst allowance. Some endpoints apply their own, lower limits. An over-limit key is still valid: wait for Retry-After and retry rather than re-authenticating.
Requests are rate limited. Rate-limited responses return 429 Too Many Requests with type: rate_limit_error, code: rate_limit_exceeded, and a Retry-After header in whole seconds. Where the limiter publishes them, X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (a UNIX timestamp in seconds) accompany the response. See Errors.
Idempotency
All POST endpoints accept an Idempotency-Key header (UUID v4 recommended). Keys are valid for 24 hours. Duplicate requests within the TTL return the original response. See Idempotency.
Versioning
The API is versioned by date. Pin a version via the RevKeen-Version header:
RevKeen-Version: 2026-05-01Browse by category
Core Payments
Payment Intents
Create a payment intentPOST
/payment-intentsList payment intentsGET
/payment-intentsRetrieve a payment intentGET
/payment-intents/{id}Confirm a payment intentPOST
/payment-intents/{id}/confirmCapture a payment intentPOST
/payment-intents/{id}/captureCancel a payment intentPOST
/payment-intents/{id}/cancelCheckout
Payment Links
Create a new payment linkPOST
/payment-linksList payment linksGET
/payment-linksGet payment link by IDGET
/payment-links/{id}Expire a payment linkPOST
/payment-links/{id}/expireUpdate payment link statusPATCH
/payment-links/{id}/statusDeactivate a payment linkPOST
/payment-links/{id}/deactivateActivate a payment linkPOST
/payment-links/{id}/activateArchive a payment linkPOST
/payment-links/{id}/archiveCheckout Sessions
Cart Sessions
Create a cart sessionPOST
/cart-sessionsRetrieve a cart sessionGET
/cart-sessions/{id}Add a line item to a cart sessionPOST
/cart-sessions/{id}/line-itemsUpdate a line item's quantityPATCH
/cart-sessions/{id}/line-items/{line_id}Remove a line item from a cart sessionDELETE
/cart-sessions/{id}/line-items/{line_id}Toggle an add-on on a cart sessionPOST
/cart-sessions/{id}/add-onsSet or clear a cart discount codePOST
/cart-sessions/{id}/discount-codeCapture customer email + consent on a cartPOST
/cart-sessions/{id}/contactConvert a cart session into a checkout sessionPOST
/cart-sessions/{id}/convertStorefront
List storefront productsGET
/storefront/productsGet a storefront productGET
/storefront/products/{product_id}List storefront originsGET
/storefront/originsRegister a storefront originPOST
/storefront/originsRemove a storefront originDELETE
/storefront/origins/{origin_id}Get storefront integration statusGET
/storefront/statusBilling & Subscriptions
Invoices
Explain invoice usage chargesGET
/invoices/{id}/usage-explainList invoicesGET
/invoicesCreate invoicePOST
/invoicesGet invoiceGET
/invoices/{id}Update invoicePATCH
/invoices/{id}Get invoice PDF linkGET
/invoices/{id}/pdfFinalize an invoicePOST
/invoices/{id}/finalizeVoid an invoicePOST
/invoices/{id}/voidSend an invoicePOST
/invoices/{id}/sendRecord or collect a paymentPOST
/invoices/{id}/payCredit Notes
Subscriptions
Create a new subscriptionPOST
/subscriptionsList subscriptionsGET
/subscriptionsGet subscription by IDGET
/subscriptions/{id}Update subscription detailsPATCH
/subscriptions/{id}Change subscription planPOST
/subscriptions/{id}/change-planPreview a plan changePOST
/subscriptions/{id}/preview-change-planPause subscriptionPOST
/subscriptions/{id}/pauseResume subscriptionPOST
/subscriptions/{id}/resumeCancel subscriptionPOST
/subscriptions/{id}/cancelUsage Billing
Meters
Usage Events
Products & Pricing
Products
List productsGET
/productsCreate productPOST
/productsGet product by IDGET
/products/{id}Update productPATCH
/products/{id}List product collectionsGET
/product-collectionsCreate a product collectionPOST
/product-collectionsGet a product collectionGET
/product-collections/{id}Update a product collectionPATCH
/product-collections/{id}Delete a product collectionDELETE
/product-collections/{id}Customers & Vault
Customers
Money Movement
Webhooks & Events
Events
Webhook Endpoints
List webhook endpointsGET
/webhook-endpointsCreate webhook endpointPOST
/webhook-endpointsGet webhook endpointGET
/webhook-endpoints/{id}Update webhook endpointPATCH
/webhook-endpoints/{id}Delete webhook endpointDELETE
/webhook-endpoints/{id}Rotate signing secretPOST
/webhook-endpoints/{id}/rotate-secretRedeliver an event to this endpointPOST
/webhook-endpoints/{id}/redeliverInvoice Line Items
Accounting Integrations
Webhook Deliveries
Customer Portal
Customer Portal
Create a customer-portal sessionPOST
/customer-portal/sessionsRetrieve the authenticated customerGET
/customer-portal/customerList the authenticated customer's subscriptionsGET
/customer-portal/subscriptionsRetrieve a subscriptionGET
/customer-portal/subscriptions/{id}Cancel a subscriptionPOST
/customer-portal/subscriptions/{id}/cancelList the authenticated customer's invoicesGET
/customer-portal/invoicesRetrieve an invoiceGET
/customer-portal/invoices/{id}List the authenticated customer's Direct Debit mandatesGET
/customer-portal/mandatesRe-authorise a Direct Debit mandate with new bank detailsPOST
/customer-portal/mandates/{id}/re-authorizeCancel a Direct Debit mandatePOST
/customer-portal/mandates/{id}/cancelSend a step-up OTP for a Direct Debit bank-detail changePOST
/customer-portal/mandates/{id}/re-authorize/send-otpVerify a step-up OTP and receive a change-of-bank tokenPOST
/customer-portal/mandates/{id}/re-authorize/verify-otpCustomer Meters
Direct Debit
Mandates
Mandates
List Direct Debit mandatesGET
/mandatesRetrieve a Direct Debit mandateGET
/mandates/{id}Cancel a Direct Debit mandatePOST
/mandates/{id}/cancelSuspend a Direct Debit mandatePOST
/mandates/{id}/suspendReinstate a suspended Direct Debit mandatePOST
/mandates/{id}/reinstateSchedule a one-off Direct Debit collectionPOST
/mandates/{id}/collectionsWebhook events
Requests sent by RevKeen to your endpoint. Set up signature verification and delivery handling.
Payment succeededWebhook
payment.succeededPayment failedWebhook
payment.failedInvoice createdWebhook
invoice.createdInvoice paidWebhook
invoice.paidInvoice overdueWebhook
invoice.overdueSubscription createdWebhook
subscription.createdSubscription activatedWebhook
subscription.activatedSubscription canceledWebhook
subscription.canceledSubscription renewedWebhook
subscription.renewedSubscription pausedWebhook
subscription.pausedSubscription resumedWebhook
subscription.resumedSubscription plan changedWebhook
subscription.plan_changedCustomer createdWebhook
customer.createdCustomer updatedWebhook
customer.updatedRefund createdWebhook
refund.createdRefund succeededWebhook
refund.succeededVoid createdWebhook
void.createdVoid succeededWebhook
void.succeededVoid failedWebhook
void.failedCredit note createdWebhook
credit_note.createdCredit note issuedWebhook
credit_note.issuedCredit note voidedWebhook
credit_note.voidedCheckout session completedWebhook
checkout.session.completedCheckout session expiredWebhook
checkout.session.expiredOrder createdWebhook
order.createdOrder paidWebhook
order.paidTerminal payment requestedWebhook
terminal_payment.requestedTerminal payment succeededWebhook
terminal_payment.succeededTerminal payment declinedWebhook
terminal_payment.declinedTerminal payment cancelledWebhook
terminal_payment.cancelledTerminal payment errorWebhook
terminal_payment.errorTerminal refund succeededWebhook
terminal_refund.succeededTerminal void succeededWebhook
terminal_void.succeededOrder fulfilledWebhook
order.fulfilledUsage threshold reachedWebhook
usage.threshold.reachedUsage period finalizedWebhook
usage.period_finalizedUsage invoice createdWebhook
usage.invoice.createdUsage event ingestedWebhook
usage.event.ingestedUsage event rejectedWebhook
usage.event.rejectedUsage event excludedWebhook
usage.event.excludedUsage event quarantinedWebhook
usage.event.quarantinedUsage cap exceededWebhook
usage.cap.exceededMeter createdWebhook
meter.createdMeter updatedWebhook
meter.updatedMeter archivedWebhook
meter.archivedMeter price createdWebhook
meter_price.createdMeter price updatedWebhook
meter_price.updatedMeter price deactivatedWebhook
meter_price.deactivatedMandate signedWebhook
mandate.signedMandate activatedWebhook
mandate.activatedMandate suspendedWebhook
mandate.suspendedMandate cancelledWebhook
mandate.cancelledCollection scheduledWebhook
collection.scheduledAdvance notice sentWebhook
collection.notice_sentCollection succeededWebhook
collection.succeededCollection failedWebhook
collection.failedIndemnity claimedWebhook
collection.indemnity_claimedSettlement createdWebhook
settlement.createdOwner: david · Reviewed 30 Sep 2026 · Next review 30 Oct 2026