Checkout fees let an integration manage required charges and optional services for a market. Read requests require read_markets; changes require write_markets. Required fees apply automatically. Optional fees are offered for selection. Percentage fees use merchandise after product and order discounts, while fixed fees may apply once per order or once per merchandise unit. A fee's selected market tax class is applied after its amount is resolved.
Endpoints#
List checkout fees
List the required charges and optional services configured for a market.
Fees are returned in checkout order together with the live authoring contract. Required fees are applied automatically. Optional fees are available for the customer or an admin to select. Percentage fees use merchandise after product and order discounts; fixed per-item fees multiply by the total merchandise quantity.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
404NOT_FOUNDThe market or checkout fee does not exist in this store.
Get a checkout fee
Read one checkout fee and its complete amount, application, availability, and tax configuration.
Use the returned currency map and contract metadata when populating an edit form. Historical orders retain the fee snapshot recorded when they were placed.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
feeId
required
|
uuid |
Checkout fee ID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
404NOT_FOUNDThe market or checkout fee does not exist in this store.
Create a checkout fee
Add a required charge or optional service to a market.
Fixed fees require an amount for every market currency and may apply once per order or once per merchandise unit. Percentage fees apply once per order to discounted merchandise. A selected tax class must belong to this market. A successful create publishes checkout_fees/create.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Merchant-facing fee or service name. |
description
|
string |
Optional explanation shown with an optional service. |
fee_type
required
|
string |
Use |
percent_value
|
string|null |
Percentage of discounted merchandise when |
fee_amounts
|
object |
Positive fixed amount keyed by every market currency when |
apply_per
required
|
string |
Use |
tax_class_id
|
uuid|null |
Tax class from this market applied to the resolved fee. |
hsn_code
|
string |
HSN or SAC code retained with the fee for tax reporting. |
is_enabled
required
|
boolean |
Whether the fee can participate in checkout. |
is_optional
required
|
boolean |
Whether the customer or admin chooses the fee instead of it applying automatically. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
400STORE_API_INVALID_REQUEST_BODYThe request body is not valid JSON.
-
400CHECKOUT_FEE_NAME_REQUIREDnameis empty. -
400CHECKOUT_FEE_NAME_TOO_LONGnameexceeds the live contract limit. -
400CHECKOUT_FEE_DESCRIPTION_TOO_LONGdescriptionexceeds the live contract limit. -
400CHECKOUT_FEE_TYPE_INVALIDfee_typeor its accompanying value fields are invalid. -
400CHECKOUT_FEE_APPLY_PER_INVALIDapply_peris not supported for this fee type. -
400CHECKOUT_FEE_PERCENT_RANGEpercent_valueis missing or is outside the accepted range. -
400CHECKOUT_FEE_AMOUNT_NEGATIVEA fixed currency amount is negative.
-
400INVALID_INPUTA required market currency amount is missing or has invalid precision.
-
400TAX_CLASS_NOT_IN_MARKETThe selected tax class does not belong to this market.
-
404NOT_FOUNDThe market or checkout fee does not exist in this store.
-
400CHECKOUT_FEE_LIMIT_REACHEDThe market already has the maximum number of checkout fees.
Update a checkout fee
Replace the editable definition of one checkout fee.
Send the complete definition you want to keep. An unchanged request leaves timestamps, audit history, and webhooks untouched. A successful change publishes checkout_fees/update.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
feeId
required
|
uuid |
Checkout fee ID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Merchant-facing fee or service name. |
description
|
string |
Optional explanation shown with an optional service. |
fee_type
required
|
string |
Use |
percent_value
|
string|null |
Percentage of discounted merchandise when |
fee_amounts
|
object |
Positive fixed amount keyed by every market currency when |
apply_per
required
|
string |
Use |
tax_class_id
|
uuid|null |
Tax class from this market applied to the resolved fee. |
hsn_code
|
string |
HSN or SAC code retained with the fee for tax reporting. |
is_enabled
required
|
boolean |
Whether the fee can participate in checkout. |
is_optional
required
|
boolean |
Whether the customer or admin chooses the fee instead of it applying automatically. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
400STORE_API_INVALID_REQUEST_BODYThe request body is not valid JSON.
-
400CHECKOUT_FEE_NAME_REQUIREDnameis empty. -
400CHECKOUT_FEE_NAME_TOO_LONGnameexceeds the live contract limit. -
400CHECKOUT_FEE_DESCRIPTION_TOO_LONGdescriptionexceeds the live contract limit. -
400CHECKOUT_FEE_TYPE_INVALIDfee_typeor its accompanying value fields are invalid. -
400CHECKOUT_FEE_APPLY_PER_INVALIDapply_peris not supported for this fee type. -
400CHECKOUT_FEE_PERCENT_RANGEpercent_valueis missing or is outside the accepted range. -
400CHECKOUT_FEE_AMOUNT_NEGATIVEA fixed currency amount is negative.
-
400INVALID_INPUTA required market currency amount is missing or has invalid precision.
-
400TAX_CLASS_NOT_IN_MARKETThe selected tax class does not belong to this market.
-
404NOT_FOUNDThe market or checkout fee does not exist in this store.
Delete a checkout fee
Remove a checkout fee from future calculations.
Existing orders keep their saved fee and tax evidence. A successful deletion publishes checkout_fees/delete with the fee's last known identity.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
feeId
required
|
uuid |
Checkout fee ID. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
404NOT_FOUNDThe market or checkout fee does not exist in this store.
Reorder checkout fees
Set the order in which checkout fees are presented.
Send every current fee id exactly once. An unchanged order is a no-op. A successful change publishes checkout_fees/reorder with the complete ordered id list.
Path parameters
| Name | Type | Description |
|---|---|---|
marketId
required
|
uuid |
Market id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
fee_ids
required
|
array<uuid> |
Every current checkout fee id in the order checkout should present them. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYmarketIdmust be a valid UUID. -
400CHECKOUT_FEE_REORDER_INVALIDfee_idsdoes not contain every current checkout fee exactly once. -
404NOT_FOUNDThe market does not exist in this store.
Webhook events#
Subscribe to these events when your app keeps a local copy of checkout fees. Create and update events contain the complete saved fee. Delete identifies the removed fee. Reorder contains the complete ordered id list. Requests that make no effective change do not publish an event.
Checkout fee created
Subscribe to receive a checkout fee after it is created in a market.
Payload fields
| Field | Type | Description |
|---|---|---|
checkout_fee.id |
string |
Always present |
checkout_fee.market_id |
string |
Selectable in the Payload builder |
checkout_fee.name |
string |
Selectable in the Payload builder |
checkout_fee.description |
string |
Selectable in the Payload builder |
checkout_fee.fee_type |
string |
Selectable in the Payload builder |
checkout_fee.percent_value |
string |
Selectable in the Payload builder |
checkout_fee.fee_amounts |
object |
Selectable in the Payload builder |
checkout_fee.apply_per |
string |
Selectable in the Payload builder |
checkout_fee.tax_class_id |
string |
Selectable in the Payload builder |
checkout_fee.hsn_code |
string |
Selectable in the Payload builder |
checkout_fee.is_enabled |
boolean |
Selectable in the Payload builder |
checkout_fee.is_optional |
boolean |
Selectable in the Payload builder |
checkout_fee.sort_order |
integer |
Selectable in the Payload builder |
checkout_fee.created_at |
string |
Selectable in the Payload builder |
checkout_fee.updated_at |
string |
Selectable in the Payload builder |
Checkout fee updated
Subscribe to receive the current checkout fee after its amount, application, tax treatment, availability, or position changes.
Payload fields
| Field | Type | Description |
|---|---|---|
checkout_fee.id |
string |
Always present |
checkout_fee.market_id |
string |
Selectable in the Payload builder |
checkout_fee.name |
string |
Selectable in the Payload builder |
checkout_fee.description |
string |
Selectable in the Payload builder |
checkout_fee.fee_type |
string |
Selectable in the Payload builder |
checkout_fee.percent_value |
string |
Selectable in the Payload builder |
checkout_fee.fee_amounts |
object |
Selectable in the Payload builder |
checkout_fee.apply_per |
string |
Selectable in the Payload builder |
checkout_fee.tax_class_id |
string |
Selectable in the Payload builder |
checkout_fee.hsn_code |
string |
Selectable in the Payload builder |
checkout_fee.is_enabled |
boolean |
Selectable in the Payload builder |
checkout_fee.is_optional |
boolean |
Selectable in the Payload builder |
checkout_fee.sort_order |
integer |
Selectable in the Payload builder |
checkout_fee.created_at |
string |
Selectable in the Payload builder |
checkout_fee.updated_at |
string |
Selectable in the Payload builder |
Checkout fee deleted
Subscribe to remove a deleted checkout fee from your integration. The payload keeps its id, market id, and last known name.
Payload fields
| Field | Type | Description |
|---|---|---|
checkout_fee.id |
string |
Always present |
checkout_fee.market_id |
string |
Selectable in the Payload builder |
checkout_fee.name |
string |
Selectable in the Payload builder |
Checkout fees reordered
Subscribe to receive the complete checkout fee order after fees are rearranged in a market.
Payload fields
| Field | Type | Description |
|---|---|---|
market_id |
string |
Always present |
fee_ids |
array |
Selectable in the Payload builder |