Cars

Cancel a car rental booking

Cancel the booking at the rental provider and refund the customer's payment minus the cancellation fee. Requires the cancellation_id from a preceding preview, binding the commit to the fee the customer saw. Safe to call twice — a committed cancellation is reported as it stands rather than repeated. state: confirmed is done; state: pending is recorded but not finished — the platform is still completing it, or a Jinko agent has it — so read car_cancel_status rather than committing again. refund_pending_review: true means the refund needs a person before it is issued. A preview that answered manual_required: true is committed with manual_ok: true, once the customer agrees: the cancellation is then recorded for a Jinko agent (state: pending, refund_pending_review: true) and nothing is sent to the rental company by this call. Without the flag that commit is refused 409 manual_required. The other 409 refusals are QUOTE_EXPIRED (preview again), quote_drift (the refund moved; commit against the retry_quote_id it names after showing the customer current.refund), active_operation_exists, not_cancellable and funds_unavailable — see CarServicingConflictCode. In every one of them nothing was cancelled.

post/v1/car_cancel_commit

Request

  • Base URL
    https://api.gojinko.com
  • URL
    https://api.gojinko.com/v1/car_cancel_commit
  • Auth
    • API key in header X-API-Key
    • or HTTP bearer

Request body

booking_refstring required

Jinko booking reference. Call get_booking first, then select its booked_item_id for servicing.

booked_item_idstring

The booked item, from get_booking items[].booked_item_id. Preserved across exchanges. Omit only when the booking has exactly one item of the requested domain; otherwise a 409 returns items to choose from.

last_namestring

Required for guest lookup. A credential that owns the booking may omit it; ownership is checked by the platform.

quote_idstring required

The quote_id from a preceding car_cancel_preview. Binds the commit to the fee the customer saw.

reasonstring

Optional free-text cancellation reason.

manual_okboolean

Send true to commit a preview that answered manual_required: true. The cancellation is then recorded for a Jinko agent — NOTHING is sent to the rental company by this call — and the answer is state: pending with refund_pending_review: true; the agent completes it and settles the refund by hand, and car_cancel_status reports the outcome. Without the flag such a commit is refused 409 manual_required, so a customer is never put in an agent queue unasked: send it only once the customer has agreed to that. On a preview that can be committed online the flag changes nothing.

Example request

{
  "booking_ref": "JNK-8PT9VS",
  "last_name": "Doe",
  "quote_id": "ccl_2f7c9a4e8b1d4c6f9e3a5b7d1c2e4f6a"
}

Response

Cancellation result

quote_idstring

The quote this cancellation was committed against.

cancellation_idstring

Deprecated: use quote_id instead. Same value.

statestring

confirmed — cancelled and the refund issued or on its way. pending — recorded but not finished: the platform is still completing it, or (with refund_pending_review: true) a Jinko agent has it; read car_cancel_status, do not commit again. rejected — the rental company declined; the booking still stands and rejected_reason says why. failed — the attempt did not complete; read car_cancel_status before trying again.

fee_knownboolean
refund_pending_reviewboolean

true means the booking IS cancelled (or, with state: pending, recorded for a Jinko agent) but the refund needs a person before it is issued — do not quote refund_amount as final.

stripe_refund_idstring

Deprecated. An internal payment reference.

rejected_reasonstring
completed_atstring

Example response

{
  "quote_id": "ccl_2f7c9a4e8b1d4c6f9e3a5b7d1c2e4f6a",
  "cancellation_id": "ccl_2f7c9a4e8b1d4c6f9e3a5b7d1c2e4f6a",
  "state": "confirmed",
  "fee": {
    "value": 41250,
    "currency": "EUR",
    "decimal_places": 2,
    "display": "EUR 412.50"
  },
  "paid": {
    "value": 41250,
    "currency": "EUR",
    "decimal_places": 2,
    "display": "EUR 412.50"
  },
  "refund_amount": {
    "value": 41250,
    "currency": "EUR",
    "decimal_places": 2,
    "display": "EUR 412.50"
  },
  "completed_at": "2026-08-20T15:18:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.