# Chaching API

Chaching is a modern subscription-billing platform designed to simplify product management, customer lifecycle workflows, and recurring payments. It combines a clean dashboard for business users with a powerful API built for developers who need full automation and control.

Version: 1.0

## Download OpenAPI description

 - [Chaching API](https://chaching.redocly.app/_bundle/Developer%20Guide/api.yaml)

## Customers

 - [POST /customers](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_create.md): Creates a new customer for the authenticated account with the provided details.
 - [GET /customers](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_getallbyaccount.md): Retrieves a paginated list of customers associated with the authenticated account.
 - [GET /customers/search](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_search.md): Searches for customers associated with the authenticated account based on a search string that matches their name or email.
 - [GET /customers/{externalKey}](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_getdetails.md): Retrieves detailed information about a specific customer using their External Key.
 - [PATCH /customers/{externalKey}](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_update.md): Updates the details of a specific customer using their External Key and the provided update data.
 - [DELETE /customers/{externalKey}](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_remove.md): Deletes a specific customer associated with the authenticated account using their External Key.
 - [GET /customers/{externalKey}/payment-methods](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_getpaymentmethods.md): Retrieves a paginated list of all payment methods associated with a specific customer.
 - [GET /customers/{externalKey}/payment-methods/{id}](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_getpaymentmethod.md): Retrieves detailed information about a specific payment method associated with a customer.
## Products

 - [GET /products/taxCodes](https://chaching.redocly.app/developer-guide/api/products/productscontroller_gettaxescodes.md): Retrieves a list of tax codes with their associated category names. Optionally filter by search term.
 - [GET /products](https://chaching.redocly.app/developer-guide/api/products/productscontroller_listallproducts.md): Retrieves a paginated list of all products for the authenticated account. Supports pagination and search functionality.
 - [POST /products](https://chaching.redocly.app/developer-guide/api/products/productscontroller_createproduct.md): Creates a new product with the specified details. The product name must be unique and follow specific naming conventions.
 - [GET /products/{id}](https://chaching.redocly.app/developer-guide/api/products/productscontroller_retrieveproduct.md): Retrieves details of a specific product by its unique identifier.
 - [PATCH /products/{id}](https://chaching.redocly.app/developer-guide/api/products/productscontroller_updateproduct.md): Updates an existing product with the specified details. Only provided fields will be updated.
 - [DELETE /products/{id}](https://chaching.redocly.app/developer-guide/api/products/productscontroller_deleteproduct.md): Permanently deletes a product. This action cannot be undone.
## Transactions

 - [GET /transactions](https://chaching.redocly.app/developer-guide/api/transactions/transactionscontroller_gettransactions.md): Retrieves a list of transactions for the current account, based on the authentication that was used to make the request.
 - [GET /transactions/{id}](https://chaching.redocly.app/developer-guide/api/transactions/transactionscontroller_gettransaction.md): Retrieves detailed information about a specific transaction for the current account, based on the authentication that was used to make the request.
## Invoices

 - [GET /invoices](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_listinvoices.md): Retrieves a paginated list of all invoices for the authenticated account. Supports pagination and filtering.
 - [POST /invoices](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_createinvoice.md): Creates a new invoice for a customer. The invoice will include line items, pricing, taxes, and other billing information. The invoice will be in draft status until paid or committed.
 - [GET /invoices/{id}](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_retrieveinvoice.md): Retrieves a specific invoice by its unique identifier, including all invoice details, line items, and payment information.
 - [PUT /invoices/{id}](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_payinvoice.md): Pays an invoice. This action will attempt to charge the customer using the payment method on file and finalize the invoice.
 - [DELETE /invoices/{id}](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_voidinvoice.md): Voids a draft or open invoice. A voided invoice cannot be paid and is marked as cancelled. This action is irreversible.
 - [GET /invoices/{id}/transactions](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_gettransactions.md): Retrieves a paginated list of all transactions associated with a specific invoice, including payment attempts, refunds, and adjustments.
 - [GET /invoices/{id}/transactions/{transactionId}](https://chaching.redocly.app/developer-guide/api/invoices/invoicescontroller_gettransaction.md): Retrieves detailed information about a specific transaction associated with an invoice.
## TaxRates

 - [GET /taxRates](https://chaching.redocly.app/developer-guide/api/taxrates/taxescontroller_findall.md): Retrieves a paginated list of all tax rates for the authenticated account. Supports pagination and filtering.
 - [POST /taxRates](https://chaching.redocly.app/developer-guide/api/taxrates/taxescontroller_createtaxrate.md): Creates a new tax rate for the authenticated account. Tax rates define the percentage of tax to be applied to transactions.
 - [GET /taxRates/{id}](https://chaching.redocly.app/developer-guide/api/taxrates/taxescontroller_retrievetaxrate.md): Retrieves a specific tax rate by its unique identifier.
 - [PATCH /taxRates/{id}](https://chaching.redocly.app/developer-guide/api/taxrates/taxescontroller_updatetaxrate.md): Updates an existing tax rate by its unique identifier. Only the provided fields will be updated.
## Prices

 - [GET /prices](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_listallprices.md): Retrieves a paginated list of all prices for the authenticated account. Supports pagination and search functionality.
 - [GET /prices/{id}](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_retrieveprice.md): Retrieves details of a specific price by its unique identifier.
 - [POST /prices/{id}](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_createprice.md): Creates a new price for an existing product. The price can be one-time or recurring (subscription-based).
 - [DELETE /prices/{id}](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_deleteprice.md): Permanently deletes a price that has never been billed. This action cannot be undone. A price is activated permanently the first time it is billed, Chaching exposes no endpoint that deactivates it, an
 - [PATCH /prices/{id}/inactive](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_updateinactiveprice.md): Updates the currency, amount, type, recurring interval, tax behavior, and description of a price. When the price has at least one subscription attached, only the description is applied and every other
 - [PATCH /prices/{id}/active](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_updateactiveprice.md): Updates only the customer-facing description of a price. No other field is modified, and this endpoint never changes the active status of the price. A price is activated permanently the first time it
## Subscriptions

 - [GET /subscriptions](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_listsubscriptions.md): Retrieves a paginated list of all subscriptions for the authenticated account. Supports pagination and filtering.
 - [POST /subscriptions](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_createsubscription.md): Creates a new subscription for a customer. The subscription will include product items, pricing, and billing information.
 - [GET /subscriptions/{id}](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_retrievesubscription.md): Retrieves a specific subscription by its unique identifier.
 - [PATCH /subscriptions/{id}](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_updatesubscription.md): Updates an existing subscription by its unique identifier. Can modify items, pricing, billing information, and other subscription details.
 - [DELETE /subscriptions/{id}](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_cancelsubscription.md): Cancels an active subscription. The subscription will be terminated immediately or at the end of the current billing period based on configuration.
 - [POST /subscriptions/{id}/pause](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_pausesubscription.md): Pauses an active subscription. No charges will be made while the subscription is paused. The subscription can be resumed later.
 - [POST /subscriptions/{id}/resume](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_resumesubscription.md): Resumes a paused subscription. Billing will continue from where it was paused, and the subscription will be active again.
## Balance

 - [GET /balance](https://chaching.redocly.app/developer-guide/api/balance/balancecontroller_getbalance.md): Retrieves the current account balance, based on the authentication that was used to make the request.
## Payment Methods

 - [GET /payment-methods](https://chaching.redocly.app/developer-guide/api/payment-methods/paymentmethodscontroller_getpaymentmethods.md): Retrieves a list of payment methods for the current account, based on the authentication that was used to make the request.
 - [GET /payment-methods/{id}](https://chaching.redocly.app/developer-guide/api/payment-methods/paymentmethodscontroller_getpaymentmethod.md): Retrieves detailed information about a specific payment method for the current account, based on the authentication that was used to make the request.
 - [POST /payment-methods/{id}/attach](https://chaching.redocly.app/developer-guide/api/payment-methods/paymentmethodscontroller_attachpaymentmethod.md): Attaches a payment method to a customer for the current account, based on the authentication that was used to make the request.
 - [POST /payment-methods/{id}/detach](https://chaching.redocly.app/developer-guide/api/payment-methods/paymentmethodscontroller_detachpaymentmethod.md): Detaches a payment method from a customer for the current account, based on the authentication that was used to make the request.
 - [POST /payment-methods/{id}/set-default](https://chaching.redocly.app/developer-guide/api/payment-methods/paymentmethodscontroller_setdefaultpaymentmethod.md): Makes a payment method the default for one of the current account's customers, based on the authentication that was used to make the request.
## Revenue Recovery

 - [GET /revenue-recovery](https://chaching.redocly.app/developer-guide/api/revenue-recovery/revenuerecoverycontroller_getrevenuerecovery.md): Retrieves the account's revenue recovery settings — the payment-retry schedule and the two failed-payment outcomes. The settings apply to your whole account, every subscription and every payment plan
 - [PUT /revenue-recovery](https://chaching.redocly.app/developer-guide/api/revenue-recovery/revenuerecoverycontroller_updaterevenuerecovery.md): Replaces the account's revenue recovery settings — the payment-retry schedule and the two failed-payment outcomes. The settings apply to your whole account, every subscription and every payment plan a
## Payment Plans

 - [POST /payment-plans](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_createpaymentplan.md)
 - [GET /payment-plans](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_listpaymentplans.md)
 - [POST /payment-plans/{id}/payments](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_createpaymentplanpayment.md): Charges a stored payment method, records a payment collected elsewhere (external: true), or takes the payment on one of your registered Dejavoo terminals (payment_method: { "type": "terminal", "termin
 - [GET /payment-plans/{id}/payments/{payment_id}](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_retrievepaymentplanpayment.md)
 - [POST /payment-plans/{id}/payments/{payment_id}/resolve](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_resolveterminalpayment.md): Continues a terminal payment whose outcome is not known yet (terminal.state resolving) or whose approval was not recorded yet (approved_no_credential, or a payment still processing), and answers 200 w
 - [POST /payment-plans/{id}/payments/{payment_id}/cancel](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_cancelterminalpayment.md): Asks the terminal to cancel the sale that is waiting for the customer and answers 202 with the payment. The sale ends cancelled when the terminal reports the cancellation; poll GET /payment-plans/{id}
 - [GET /payment-plans/{id}](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_retrievepaymentplan.md)
 - [GET /payment-plans/{id}/installments](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_listinstallments.md)
 - [POST /payment-plans/{id}/cancel](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_cancelpaymentplan.md)
 - [POST /payment-plans/{id}/deposit/terminal](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_startterminaldeposit.md): Sends installment 1 of a payment plan created without a payment method to a registered Dejavoo terminal and answers 202 with the payment plan. The customer pays at the terminal; poll GET /payment-plan
 - [POST /payment-plans/{id}/deposit](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_resolvedeposit.md): Continues a terminal deposit whose outcome is not known yet (deposit.attempt.state resolving) or whose card was charged but not saved (approved_no_credential), and answers 200 with the payment plan. C
 - [POST /payment-plans/{id}/deposit/cancel](https://chaching.redocly.app/developer-guide/api/payment-plans/paymentplanscontroller_cancelterminaldeposit.md): Asks the terminal to cancel the sale that is waiting for the customer and answers 202 with the payment plan. The attempt ends cancelled when the terminal reports the cancellation; poll GET /payment-pl
## Dejavoo Terminals

 - [GET /dejavoo/terminals](https://chaching.redocly.app/developer-guide/api/dejavoo-terminals/dejavooterminalscontroller_listterminals.md): Lists every terminal registered on the account, enabled and disabled. The Auth Key is never returned.
 - [POST /dejavoo/terminals](https://chaching.redocly.app/developer-guide/api/dejavoo-terminals/dejavooterminalscontroller_registerterminal.md): Registers a terminal by its own TPN and 10-character SPIn Auth Key. Chaching checks the pair with SPIn before saving it; a pair SPIn does not accept is never stored. The Auth Key is write-only.
 - [PATCH /dejavoo/terminals/{id}](https://chaching.redocly.app/developer-guide/api/dejavoo-terminals/dejavooterminalscontroller_updateterminal.md): Relabels, enables or disables a terminal, re-enters its Auth Key, or updates its Register / ISV ids and FEED request record. Re-entering the Auth Key and enabling a disabled terminal re-check the cred
