# 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

This object represents a customer of your business. Use it to create recurring charges, save payment and contact information, and track payments that belong to the same customer.

### Creates a new customer

 - [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 paginated list of customers

 - [GET /customers](https://chaching.redocly.app/developer-guide/api/customers/customerscontroller_getallbyaccount.md): Retrieves a paginated list of customers associated with the authenticated account.

### Search customers by name or email

 - [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 customer details by External Key

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

### Update customer details by 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 a customer by External Key

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

### List customer payment methods

 - [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 customer payment method details

 - [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

Products describe the specific goods or services you offer to your customers. For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product.

### Get tax codes with category names

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

### List all products

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

### Create a product

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

### Retrieve a product

 - [GET /products/{id}](https://chaching.redocly.app/developer-guide/api/products/productscontroller_retrieveproduct.md): Retrieves details of a specific product by its unique identifier.

### Update a product

 - [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 a product

 - [DELETE /products/{id}](https://chaching.redocly.app/developer-guide/api/products/productscontroller_deleteproduct.md): Permanently deletes a product. This action cannot be undone.

## Transactions

Transactions represent the payments and charges made by your customers.

### List all 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.

### Retrieve a transaction

 - [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

Invoices are statements of amounts owed by a customer, and are either generated one-off, or generated periodically from a subscription.

### List all 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.

### Create an invoice

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

### Retrieve an invoice

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

### Pay an invoice

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

### Void an 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.

### List invoice transactions

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

### Retrieve invoice transaction

 - [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

TaxRates allow you to calculate the tax to collect from your customer.

### List all tax rates

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

### Create a tax rate

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

### Retrieve a tax rate

 - [GET /taxRates/{id}](https://chaching.redocly.app/developer-guide/api/taxrates/taxescontroller_retrievetaxrate.md): Retrieves a specific tax rate by its unique identifier.

### Update a tax rate

 - [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

This object represents a price in your Chaching account. Use it to define the cost of your products, configure one-time or recurring billing intervals, specify tax behavior, and manage pricing updates or deactivations for your offerings.

### List all 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.

### Retrieve a price

 - [GET /prices/{id}](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_retrieveprice.md): Retrieves details of a specific price by its unique identifier.

### Create a price for a product

 - [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 a price

 - [DELETE /prices/{id}](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_deleteprice.md): Permanently deletes a price. This action cannot be undone. Active prices associated with active subscriptions should be deactivated instead of deleted.

### Update an inactive price

 - [PATCH /prices/{id}/inactive](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_updateinactiveprice.md): Updates an inactive price with new details. Only inactive prices can be fully updated with this endpoint.

### Update an active price

 - [PATCH /prices/{id}/active](https://chaching.redocly.app/developer-guide/api/prices/pricescontroller_updateactiveprice.md): Updates metadata of an active price. Only the description field can be modified for active prices to maintain billing consistency.

## Subscriptions

Subscriptions are a way to charge your customers on a recurring basis. They can be used for products or services that are delivered over time, such as memberships or software licenses.

### List all 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.

### Create a subscription

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

### Retrieve a subscription

 - [GET /subscriptions/{id}](https://chaching.redocly.app/developer-guide/api/subscriptions/subscriptionscontroller_retrievesubscription.md): Retrieves a specific subscription by its unique identifier.

### Update a subscription

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

### Cancel a subscription

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

### Pause a subscription

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

### Resume a subscription

 - [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

Balances represent the amount of money in your account. You can use balances to track your income and expenses, and to make payments to your customers or vendors.

### Retrieve 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

Payment Methods represent a way to collect payment from your customers. They can be attached to customers to make charging easier and more efficient.

### List all 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.

### Retrieve a payment method

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

### Attach a payment method

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

### Detach a payment method

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

