BillKit/DocsConsole
Coupons

Validate coupon

Check whether a code is usable, and what it would take off.

POST/v1/coupons/validate
Operation validate_coupon·Scope coupons:read·OpenAPI v1.1.0

Parameters

ParameterDescription
codestringrequiredThe code to check. Case-insensitive. At most 64 characters.
amount_centsinteger | nulloptionalThe charge before the discount, in minor units of currency, to check a minimum and get discount_cents and final_charge_cents back. Between 0 and 99999999.
currencystring | nulloptionalThree-letter ISO 4217 currency of the charge, used when price_id is not sent. At most 3 characters.
price_idstring | nulloptionalId of the price the code would be used with, to check a price or currency restriction.

Returns

Returns a CouponValidateResponse object.

Errors

StatusCause
400The request was refused (type: invalid_request_error): a required parameter is missing (parameter_missing), one failed validation (parameter_invalid) or is not one the operation takes (parameter_unknown), and param names it.
401No credential, or one that does not authenticate.
402The account is suspended (tenant_suspended), or the payment provider refused a charge or refund the call made (type: payment_error, code: payment_refused).
403Authenticated, but not allowed: missing scope (insufficient_scope), a key of the wrong mode (mode_mismatch), or a refused origin. Needs the coupons:read scope.
404No such object in this account and mode.
409Conflicts with the object's current state (state_conflict, or a more specific code), or an operation still in flight (operation_pending).
413The request body is larger than the API accepts.
429Rate limited. Retry-After says when to try again.
500Something failed on BillKit's side (type: api_error). Retry with the same Idempotency-Key.
502The payment provider failed or did not answer.
503Temporarily unable to serve. reason says whether the request was attempted.
Request · curl
curl -X POST https://api.billkit.eu/v1/coupons/validate \
  -H "Authorization: Bearer $BILLKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code":"LAUNCH"}'
Request body · every field
{
  "amount_cents": 1900,
  "code": "string",
  "currency": "EUR",
  "price_id": "price_9XKp2vQ1"
}
Response · 200 OK
{
  "amount_off_cents": 1900,
  "code": "string",
  "coupon_id": "coup_9XKp2vQ1",
  "currency": "EUR",
  "discount_cents": 1900,
  "discount_type": "percent",
  "duration": "once",
  "final_charge_cents": 1900,
  "object": "coupon_validation",
  "percent_off": 0,
  "reason": "coupon_not_found",
  "valid": false
}