Charges

Charge a saved card with a one-off amount. If the charge succeeds CHING issues a receipt or tax invoice through the connected business identity automatically.

Use cases: Run a one-time payment, bill a custom amount after a setup session, or retry a failed subscription renewal from your own logic.
POST/v1/charges

Create and confirm a charge in a single request. In test mode the charge always succeeds; in live mode CHING routes the attempt to Grow.

Successful charges trigger a charge.succeeded webhook and, when the project is wired to Glance, automatically issue a tax invoice receipt.

Body Parameters

NameTypeDescription
customer
stringrequiredThe customer id being charged.
payment_method
stringrequiredThe active payment method id to charge. Must belong to the customer.
amount
numberrequiredAmount in the smallest currency unit (e.g. agorot for ILS). Must be a positive integer.
currency
stringISO 4217 currency code. Defaults to "ils".
description
stringDescription stored on the charge and shown on the receipt.
installments
objectInstallment plan for Israeli credit-card networks. Send { count: N } to split the charge over N monthly installments.
count
numberNumber of installments. Defaults to 1.
metadata
objectSet of key-value pairs you can attach to the object for your own use. Returned as-is on retrieval.

Request

curl -X POST "https://api.ching.co.il/ching/v1/charges" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "customer": "example_customer",
  "payment_method": "example_payment_method",
  "amount": 0,
  "currency": "example_currency",
  "description": "example_description",
  "installments": {},
  "metadata": {}
}'

Response

Response
{
  "success": true,
  "data": {
    "id": "ch_9mTPfRSDmEOU",
    "object": "charge",
    "customer": "cus_V8ltq1pK_MWH",
    "payment_method": "pm_WMc9X22NT1af",
    "amount": 9900,
    "amount_captured": 9900,
    "currency": "ils",
    "status": "succeeded",
    "description": "Pro plan - April",
    "installments": {
      "count": 1
    },
    "captured": true,
    "capture_method": "automatic",
    "authorized_at": "2026-04-19T09:15:22.000Z",
    "capturable_until": null,
    "captured_at": "2026-04-19T09:15:22.000Z",
    "cancellation_reason": null,
    "refunded_amount": 0,
    "failure_code": null,
    "failure_message": null,
    "document": "doc_R0i70cuPK_yO",
    "metadata": {},
    "livemode": false,
    "created": "2026-04-19T09:15:22.000Z"
  }
}
GET/v1/charges

List the 100 most recent charges, newest first. Optionally filter to a single customer.

Query Parameters

NameTypeDescription
customer
stringRestrict the list to charges belonging to this customer (cus_*). When omitted, all charges on the project are returned.

Request

curl -X GET "https://api.ching.co.il/ching/v1/charges" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "data": [
    {
      "id": "ch_9mTPfRSDmEOU",
      "object": "charge",
      "customer": "cus_V8ltq1pK_MWH",
      "payment_method": "pm_WMc9X22NT1af",
      "amount": 9900,
      "amount_captured": 9900,
      "currency": "ils",
      "status": "succeeded",
      "description": "Pro plan - April",
      "installments": {
        "count": 1
      },
      "captured": true,
      "capture_method": "automatic",
      "authorized_at": "2026-04-19T09:15:22.000Z",
      "capturable_until": null,
      "captured_at": "2026-04-19T09:15:22.000Z",
      "cancellation_reason": null,
      "refunded_amount": 0,
      "failure_code": null,
      "failure_message": null,
      "document": "doc_R0i70cuPK_yO",
      "metadata": {},
      "livemode": false,
      "created": "2026-04-19T09:15:22.000Z",
      "customer_name": "Tal Levi"
    }
  ]
}
GET/v1/charges/:id

Retrieve a charge by its id.

Path Parameters

NameTypeDescription
id
stringrequiredThe charge id (e.g. ch_9mTPfRSDmEOU).

Request

curl -X GET "https://api.ching.co.il/ching/v1/charges/:id" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "data": {
    "id": "ch_9mTPfRSDmEOU",
    "object": "charge",
    "customer": "cus_V8ltq1pK_MWH",
    "payment_method": "pm_WMc9X22NT1af",
    "amount": 9900,
    "amount_captured": 9900,
    "currency": "ils",
    "status": "succeeded",
    "description": "Pro plan - April",
    "installments": {
      "count": 1
    },
    "captured": true,
    "capture_method": "automatic",
    "authorized_at": "2026-04-19T09:15:22.000Z",
    "capturable_until": null,
    "captured_at": "2026-04-19T09:15:22.000Z",
    "cancellation_reason": null,
    "refunded_amount": 0,
    "failure_code": null,
    "failure_message": null,
    "document": "doc_R0i70cuPK_yO",
    "metadata": {},
    "livemode": false,
    "created": "2026-04-19T09:15:22.000Z"
  }
}
POST/v1/charges/:id/capture

Capture a manual-capture charge that is currently in `requires_capture`. Pass an `amount` for a partial capture; the unused difference is automatically released back to the customer's card by the provider. Fires `charge.captured`, issues the tax document, and emails the receipt - all of which were deferred from the authorization step.

Only valid when the charge is in `requires_capture`. Calling capture after the `capturable_until` window has elapsed returns `charge_authorization_expired` (400) - the daily sweep job should have already canceled the hold by that point.

Path Parameters

NameTypeDescription
id
stringrequiredThe charge id (e.g. ch_9mTPfRSDmEOU).

Body Parameters

NameTypeDescription
amount
numberOptional partial capture amount in agorot. Must be > 0 and ≤ the original authorized amount. Defaults to the full authorized amount when omitted.

Request

curl -X POST "https://api.ching.co.il/ching/v1/charges/:id/capture" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 0
}'

Response

Response
{
  "success": true,
  "data": {
    "id": "ch_9mTPfRSDmEOU",
    "object": "charge",
    "customer": "cus_V8ltq1pK_MWH",
    "payment_method": "pm_WMc9X22NT1af",
    "amount": 9900,
    "amount_captured": 9900,
    "currency": "ils",
    "status": "succeeded",
    "description": "Pro plan - April",
    "installments": {
      "count": 1
    },
    "captured": true,
    "capture_method": "manual",
    "authorized_at": "2026-04-19T09:15:22.000Z",
    "capturable_until": "2026-04-26T09:15:22.000Z",
    "captured_at": "2026-04-19T09:15:22.000Z",
    "cancellation_reason": null,
    "refunded_amount": 0,
    "failure_code": null,
    "failure_message": null,
    "document": "doc_R0i70cuPK_yO",
    "metadata": {},
    "livemode": false,
    "created": "2026-04-19T09:15:22.000Z"
  }
}
POST/v1/charges/:id/cancel

Cancel a manual-capture charge that is currently in `requires_capture`. Releases the CHING-side hold immediately and fires `charge.canceled`. Note that the customer's bank may take up to 10 days to remove the hold from their available balance (Grow's auto-release window); surface this delay to your customer.

Only valid when the charge is in `requires_capture`. To reverse a charge that has already been captured, use `POST /v1/refunds` instead.

Path Parameters

NameTypeDescription
id
stringrequiredThe charge id.

Body Parameters

NameTypeDescription
cancellation_reason
stringOptional reason tag. One of "requested_by_customer", "fraudulent", "abandoned". Defaults to "requested_by_customer".

Request

curl -X POST "https://api.ching.co.il/ching/v1/charges/:id/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "cancellation_reason": "example_cancellation_reason"
}'

Response

Response
{
  "success": true,
  "data": {
    "id": "ch_9mTPfRSDmEOU",
    "object": "charge",
    "customer": "cus_V8ltq1pK_MWH",
    "payment_method": "pm_WMc9X22NT1af",
    "amount": 9900,
    "amount_captured": null,
    "currency": "ils",
    "status": "canceled",
    "description": "Variable-weight cart - awaiting fulfilment",
    "installments": {
      "count": 1
    },
    "captured": false,
    "capture_method": "manual",
    "authorized_at": "2026-04-19T09:15:22.000Z",
    "capturable_until": "2026-04-26T09:15:22.000Z",
    "captured_at": null,
    "cancellation_reason": "requested_by_customer",
    "refunded_amount": 0,
    "failure_code": null,
    "failure_message": null,
    "document": "doc_R0i70cuPK_yO",
    "metadata": {},
    "livemode": false,
    "created": "2026-04-19T09:15:22.000Z"
  }
}