The Checkout Applications API lets you create and manage Checkout applications programmatically, giving you full control over your Checkout configurations without manual setup in the Merchant Center. With this API, you can automate the creation of new Checkout applications, update existing configurations, and maintain consistent experiences across multiple Stores, Regions, or Business Units.
This API is valuable for managing multiple Checkout instances, enabling you to standardize configurations, deploy changes at scale, and integrate Checkout application management into your existing development workflows. You can create applications with specific settings, update application properties, and ensure your Checkout solutions remain aligned with your business requirements as they evolve.
Representations
Application
id ​String​ | Unique identifier of the Application. |
version ​Int​ | Current version of the Application. |
key ​String​ | User-defined unique identifier of the Application. MinLength: 2 ​MaxLength: 256 ​Pattern: ^[A-Za-z0-9_-]+$ |
status ​ | Indicates whether the Application is active or not. Default:ÂInactive ​ |
name ​String​ | Name of the Application. |
description ​String​ | Description of the Application. |
logo ​ | Details of the application logo. It is required if the mode = CompleteFlow . |
countries ​Array of String​ | List of countries that the Application supports. Each country is represented by two-digit country code as per ISO 3166-1 alpha-2. |
allowedOrigins ​ | Allowed origin URLs for the Application. |
mode ​ | Checkout mode to use for the Application. |
paymentsConfiguration ​ | Sets the payment configuration options of the Application. |
agreements ​Array of ApplicationAgreement​ | User agreements to display. It is only applicable if the mode is CompleteFlow . |
discountsConfiguration ​ | Sets the discounts configuration options of the Application. It is only applicable if the mode is CompleteFlow . |
createdAt ​DateTime​ | Date and time (UTC) the Application was initially created. |
createdBy ​CreatedBy​ | IDs and references that created the Application. |
lastModifiedAt ​DateTime​ | Date and time (UTC) the Application was last updated. |
lastModifiedBy ​ | IDs and references that last modified the Application. |
Application Draft
key ​String​ | User-defined unique identifier of the Application. MinLength: 2 ​MaxLength: 256 ​Pattern: ^[A-Za-z0-9_-]+$ |
status ​ | Indicates whether the Application is active or not. Default:ÂInactive ​ |
name ​String​ | Name of the Application. |
description ​String​ | Description of the Application. |
logo ​ | Details of the Application logo. It is required if the mode is CompleteFlow . |
countries ​Array of String​ | List of countries that the Application supports. Each country is represented by two-digit country code as per ISO 3166-1 alpha-2. |
allowedOrigins ​ | Allowed origin URLs for the Application. |
mode ​ | Checkout mode to use for the Application. |
paymentsConfiguration ​ | Sets the payment configuration options of the Application. |
agreements ​Array of ApplicationAgreement​ | User agreements to display. It is only applicable if the mode is CompleteFlow . |
discountsConfiguration ​ | Sets the discounts configuration options of the Application. It is only applicable if the mode is CompleteFlow . |
ApplicationLogo
mode
is CompleteFlow
.url ​String​ | URL of the logo. |
ApplicationStatus
Active
The application status is active and can be used for processing payments.
Inactive
The application status is inactive and cannot be used for processing payments.
ApplicationAgreementStatus
Active
The application agreement is active and can be used for processing payments.
Inactive
The application agreement is inactive and cannot be used for processing payments.
AllowedOrigins
allowAll ​Boolean​ | Indicates whether all the origin URLs are allowed or not. |
origins ​Array of String​ | Value of the URL to set. If empty, any existing value will be removed. |
PaymentsConfiguration
paymentReturnUrl ​String​ | URL where the buyer will be redirected back to after an offsite payment. |
activePaymentComponentType ​ | Indicates the type of payment components that the Application will use. |
DiscountsConfiguration
allowDiscounts ​Boolean​ | Indicates if the buyer is able to apply discounts to the cart. It is only applicable if the mode = CompleteFlow . |
Application Agreement
id ​String​ | Unique identifier of the ApplicationAgreement. |
name ​String​ | Unique name identifier for the ApplicationAgreement. |
type ​ | Type of agreement. |
status ​ | Indicates whether the agreement is active or not. |
text ​LocalizedString​ | Text to display in checkout in Markdown format. |
Application Agreement Draft
name ​String​ | Unique name for identifying the agreement. |
type ​ | Type of agreement. |
status ​ | Indicates whether the agreement is active or not. |
text ​LocalizedString​ | Text to display in checkout in Markdown format. |
Application Mode
CompleteFlow
Checkout will manage all the steps of a checkout process including shipping and billing address, shipping method, and payment.
PaymentOnly
Checkout will display only the payment step.
Payment Component Mode
Component
Each payment method component renders just a single payment method.
DropIn
A component that renders all the payment methods.
Application Agreement Type
Text
Display a 'text only' agreement without a checkbox.
MandatoryCheckbox
Display an agreement text with a mandatory checkbox.
ApplicationReference
id ​String​ | Unique identifier of the referenced Application. |
typeId ​ | application Type of referenced resource. |
ApplicationResourceIdentifier
id
or key
is required. If both are set, an InvalidJsonInput error is returned.id ​String​ | Unique identifier of the referenced Application. Required if key is absent. |
typeId ​ | application Type of referenced resource. If given, it must match the expected ReferenceTypeId of the referenced resource. |
key ​String​ | User-defined unique identifier of the referenced Application. Required if id is absent. |
Get Application
Get Application by ID
id
.view_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
id String ​ | id of the Application. |
region String ​ |
application/json
curl --get https://checkout.{region}.commercetools.com/{projectKey}/applications/{id} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
{
"id": "cb5a7f70-4d19-4a95-8296-380a9c87bd1c",
"version": 1,
"createdAt": "2025-05-16T10:48:44.750Z",
"lastModifiedAt": "2025-05-16T10:48:44.750Z",
"key": "my-application",
"allowedOrigins": {
"allowAll": false,
"origins": ["https://demo.com"]
},
"countries": ["DE"],
"description": {
"en": "English description"
},
"name": "My Application",
"mode": "CompleteFlow",
"status": "Active",
"logo": {
"url": "https://svgshare.com/i/120g.svg"
},
"agreements": [
{
"id": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"name": "myAgreement",
"type": "MandatoryCheckbox",
"status": "Active",
"text": {
"en": "By clicking the Complete Purchase button below, I agree to the Terms of Use."
}
}
],
"paymentsConfiguration": {
"paymentReturnUrl": "https://demo.com/checkout",
"activePaymentComponentType": "Component"
},
"discountsConfiguration": {
"allowDiscounts": true
}
}
Get Application by Key
key
.
Specific Error Codes:view_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
key String ​ | key of the Application. |
region String ​ |
application/json
curl --get https://checkout.{region}.commercetools.com/{projectKey}/applications/key={key} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
{
"id": "df6b8g81-5e2a-5b96-9397-491b0d98ce2d",
"version": 1,
"createdAt": "2025-05-16T10:48:44.750Z",
"lastModifiedAt": "2025-05-16T10:48:44.750Z",
"key": "my-payment-application",
"allowedOrigins": {
"allowAll": false,
"origins": ["https://demo.com"]
},
"countries": ["DE"],
"description": {
"en": "Payment processing only - minimal configuration"
},
"name": "My Payment Application",
"mode": "PaymentOnly",
"status": "Active",
"paymentsConfiguration": {
"paymentReturnUrl": "https://demo.com/checkout",
"activePaymentComponentType": "Component"
},
"agreements": [],
"discountsConfiguration": {
"allowDiscounts": false
}
}
Query Applications
Retrieves Applications
view_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
region String ​ |
sort String ​ | Controls Sorting of query results. The parameter can be passed multiple times. |
limit Int ​ | Number of results requested. Default: 20 ​Minimum: 0 ​Maximum: 500 ​ |
offset Int ​ | Number of elements skipped. Default: 0 ​Maximum: 10000 ​ |
withTotal Boolean ​ | Controls the calculation of the total number of query results. Default: true ​ |
application/json
curl --get https://checkout.{region}.commercetools.com/{projectKey}/applications -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
{
"limit": 20,
"offset": 0,
"count": 2,
"total": 2,
"results": [
{
"id": "cb5a7f70-4d19-4a95-8296-380a9c87bd1c",
"version": 1,
"createdAt": "2025-05-16T10:48:44.750Z",
"lastModifiedAt": "2025-05-16T10:48:44.750Z",
"key": "my-application",
"allowedOrigins": {
"allowAll": false,
"origins": ["https://demo.com"]
},
"countries": ["DE"],
"description": {
"en": "English description"
},
"name": "My Application",
"mode": "CompleteFlow",
"status": "Active",
"logo": {
"url": "https://svgshare.com/i/120g.svg"
},
"agreements": [
{
"id": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"name": "myAgreement",
"type": "MandatoryCheckbox",
"status": "Active",
"text": {
"en": "By clicking the Complete Purchase button below, I agree to the Terms of Use."
}
}
],
"paymentsConfiguration": {
"paymentReturnUrl": "https://demo.com/checkout",
"activePaymentComponentType": "Component"
},
"discountsConfiguration": {
"allowDiscounts": true
}
},
{
"id": "df6b8g81-5e2a-5b96-9397-491b0d98ce2d",
"version": 1,
"createdAt": "2025-05-16T11:30:15.200Z",
"lastModifiedAt": "2025-05-16T11:30:15.200Z",
"key": "my-payment-application",
"allowedOrigins": {
"allowAll": false,
"origins": ["https://demo.com"]
},
"countries": ["DE"],
"description": {
"en": "Payment processing only - minimal configuration"
},
"name": "My Payment Application",
"mode": "PaymentOnly",
"status": "Active",
"paymentsConfiguration": {
"paymentReturnUrl": "https://demo.com/checkout",
"activePaymentComponentType": "Component"
},
"agreements": [],
"discountsConfiguration": {
"allowDiscounts": false
}
}
]
}
Check If Application exists
Check by ID
id
exists. Returns 200 OK
if the Application exists, or 404 Not Found
if it doesn't. Specific Error Codes:view_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
id String ​ | id of the Application. |
region String ​ |
curl --head https://checkout.{region}.commercetools.com/{projectKey}/applications/{id} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
Check by Key
key
exists. Returns 200 OK
if the Application exists, or 404 Not Found
if it doesn't. Specific Error Codes:view_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
key String ​ | key of the Application. |
region String ​ |
curl --head https://checkout.{region}.commercetools.com/{projectKey}/applications/key={key} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
Create Application
manage_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
region String ​ |
application/json
application/json
curl https://checkout.{region}.commercetools.com/{projectKey}/applications -i \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"key" : "my-application",
"allowedOrigins" : {
"allowAll" : false,
"origins" : [ "https://demo.com" ]
},
"countries" : [ "DE" ],
"description" : {
"en" : "English description"
},
"name" : "My Application",
"mode" : "CompleteFlow",
"status" : "Active",
"logo" : {
"url" : "https://svgshare.com/i/120g.svg"
},
"agreements" : [ {
"id" : "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"name" : "myAgreement",
"type" : "MandatoryCheckbox",
"status" : "Active",
"text" : {
"en" : "By clicking the Complete Purchase button below, I agree to the Terms of Use."
}
} ],
"paymentsConfiguration" : {
"paymentReturnUrl" : "https://demo.com/checkout",
"activePaymentComponentType" : "Component"
},
"discountsConfiguration" : {
"allowDiscounts" : true
}
}
DATA
{
"id": "cb5a7f70-4d19-4a95-8296-380a9c87bd1c",
"version": 1,
"createdAt": "2025-05-16T10:48:44.750Z",
"lastModifiedAt": "2025-05-16T10:48:44.750Z",
"key": "my-application",
"allowedOrigins": {
"allowAll": false,
"origins": ["https://demo.com"]
},
"countries": ["DE"],
"description": {
"en": "English description"
},
"name": "My Application",
"mode": "CompleteFlow",
"status": "Active",
"logo": {
"url": "https://svgshare.com/i/120g.svg"
},
"agreements": [
{
"id": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"name": "myAgreement",
"type": "MandatoryCheckbox",
"status": "Active",
"text": {
"en": "By clicking the Complete Purchase button below, I agree to the Terms of Use."
}
}
],
"paymentsConfiguration": {
"paymentReturnUrl": "https://demo.com/checkout",
"activePaymentComponentType": "Component"
},
"discountsConfiguration": {
"allowDiscounts": true
}
}
Update Application
Update Application by ID
manage_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
id String ​ | id of the Application. |
region String ​ |
application/json
Update actions for Applications.
version ​Int​ | Expected version of the Application on which the changes should be applied.
If the expected version does not match the actual version, a ConcurrentModification error will be returned. |
actions ​Array of ApplicationUpdateAction​ | Update actions to be performed on the Application. |
application/json
curl https://checkout.{region}.commercetools.com/{projectKey}/applications/{id} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"version" : 1,
"actions" : [ {
"action" : "setName",
"name" : "my-application"
} ]
}
DATA
Update Application by Key
manage_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
key String ​ | key of the Application. |
region String ​ |
application/json
Update actions for Applications.
version ​Int​ | Expected version of the Application on which the changes should be applied.
If the expected version does not match the actual version, a ConcurrentModification error will be returned. |
actions ​Array of ApplicationUpdateAction​ | Update actions to be performed on the Application. |
application/json
Update actions
The following update actions allow you to modify specific properties of an Application resource. Use them with the update endpoints as described above.
Application Update Action
Base type for all Application update actions.
action ​String​ | Type of update action to be performed on the Application. |
Set Status
action ​String​ | "setStatus" |
status ​ | New status to assign to the Application. |
{
"action": "setStatus",
"status": "Active"
}
Set Name
action ​String​ | "setName" |
name ​String​ | New name to assign to the Application. |
{
"action": "setName",
"name": "My Updated Application"
}
Set Description
action ​String​ | "setDescription" |
description ​LocalizedString​ | Value to set. If empty, any existing value will be removed. |
{
"action": "setDescription",
"description": {
"en": "Updated English description",
"de": "Aktualisierte deutsche Beschreibung"
}
}
Set Application Logo
action ​String​ | "setApplicationLogo" |
logo ​ | New logo to assign to the Application, which must be a valid url. |
{
"action": "setApplicationLogo",
"logo": {
"url": "https://example.com/new-logo.svg"
}
}
Set Countries
action ​String​ | "setCountries" |
countries ​Array of String​ | Sets a list of countries to the Application. Each country is represented by two-digit country code as per ISO 3166-1 alpha-2. |
{
"action": "setCountries",
"countries": [
"DE",
"US",
"FR",
"GB"
]
}
Add Country
action ​String​ | "addCountry" |
country ​String​ | Country to add. Represented by two-digit country code as per ISO 3166-1 alpha-2. |
{
"action": "addCountry",
"country": "CA"
}
Remove Country
action ​String​ | "removeCountry" |
country ​String​ | Country to remove. Represented by two-digit country code as per ISO 3166-1 alpha-2. |
{
"action": "removeCountry",
"country": "DE"
}
Set Allowed Origins
action ​String​ | "setAllowedOrigins" |
allowedOrigins ​ | New allowed origins configuration. |
{
"action": "setAllowedOrigins",
"allowedOrigins": {
"allowAll": false,
"origins": [
"https://example.com",
"https://shop.example.com",
"https://checkout.example.com"
]
}
}
Set Allow All Origins
action ​String​ | "setAllowAllOrigins" |
allowAll ​Boolean​ | Whether to allow all origins or not. |
{
"action": "setAllowAllOrigins",
"allowAll": true
}
Add Allowed Origin
action ​String​ | "addAllowedOrigin" |
origin ​String​ | Origin URL to add to the allowed origins list. |
{
"action": "addAllowedOrigin",
"origin": "https://new-domain.example.com"
}
Remove Allowed Origin
action ​String​ | "removeAllowedOrigin" |
origin ​String​ | Origin URL to remove from the allowed origins list. |
{
"action": "removeAllowedOrigin",
"origin": "https://old-domain.example.com"
}
Set Payments Configuration
action ​String​ | "setPaymentsConfiguration" |
paymentsConfiguration ​ | New payments configuration for the Application. |
{
"action": "setPaymentsConfiguration",
"paymentsConfiguration": {
"paymentReturnUrl": "https://example.com/checkout/return",
"activePaymentComponentType": "Component"
}
}
Set Payment Return URL
action ​String​ | "setPaymentReturnUrl" |
paymentReturnUrl ​String​ | Value to set. If empty, any existing value will be removed. |
{
"action": "setPaymentReturnUrl",
"paymentReturnUrl": "https://example.com/checkout/success"
}
Set Active Payment Component Type
action ​String​ | "setActivePaymentComponentType" |
activePaymentComponentType ​ | Type of payment components that the Application will use. |
{
"action": "setActivePaymentComponentType",
"activePaymentComponentType": "DropIn"
}
Set Discounts Configuration
action ​String​ | "setDiscountsConfiguration" |
discountsConfiguration ​ | New discounts configuration for the Application. |
{
"action": "setDiscountsConfiguration",
"discountsConfiguration": {
"allowDiscounts": true
}
}
Set Application Agreements
action ​String​ | "setAgreements" |
agreements ​Array of ApplicationAgreementDraft​ | Value to set. If empty, any existing value will be removed. |
{
"action": "setAgreements",
"agreements": [
{
"name": "Terms of Service",
"type": "MandatoryCheckbox",
"status": "Active",
"text": {
"en": "I agree to the Terms of Service",
"de": "Ich stimme den Nutzungsbedingungen zu"
}
},
{
"name": "Privacy Policy",
"type": "MandatoryCheckbox",
"status": "Active",
"text": {
"en": "I agree to the Privacy Policy",
"de": "Ich stimme der Datenschutzrichtlinie zu"
}
}
]
}
Add Application Agreement
action ​String​ | "addAgreement" |
agreement ​ | Agreement to add to the Application. |
{
"action": "addAgreement",
"agreement": {
"name": "Marketing Consent",
"type": "Text",
"status": "Active",
"text": {
"en": "I would like to receive marketing communications",
"de": "Ich möchte Marketing-Mitteilungen erhalten"
}
}
}
Remove Application Agreement
action ​String​ | "removeAgreement" |
agreementId ​String​ | ID of the agreement to remove from the Application. |
{
"action": "removeAgreement",
"agreementId": "bc95d35a-8cc1-484c-b207-bd8c55a55a28"
}
Reorder Application Agreement
action ​String​ | "reorderAgreement" |
agreementIds ​Array of String​ | Array of agreement IDs. |
{
"action": "reorderAgreement",
"agreementIds": [
"6ec32894-ba52-4b57-bdc7-d72e00bb1623",
"dfbd5fe8-3956-4e8e-8c1e-0c780a77c60a"
]
}
Set Application Agreement Name
action ​String​ | "setAgreementName" |
agreementId ​String​ | ID of the agreement to update. |
name ​String​ | New name for the agreement. |
{
"action": "setAgreementName",
"agreementId": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"name": "Updated Agreement Name"
}
Set Application Agreement Type
action ​String​ | "setAgreementType" |
agreementId ​String​ | ID of the agreement to update. |
type ​ | New type for the agreement. |
{
"action": "setAgreementType",
"agreementId": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"type": "Text"
}
Set Application Agreement Status
action ​String​ | "setAgreementStatus" |
agreementId ​String​ | ID of the agreement to update. |
status ​ | New status for the agreement. |
{
"action": "setAgreementStatus",
"agreementId": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"status": "Inactive"
}
Set Application Agreement Text
action ​String​ | "setAgreementText" |
agreementId ​String​ | ID of the agreement to update. |
text ​LocalizedString​ | New text for the agreement. |
{
"action": "setAgreementText",
"agreementId": "bc95d35a-8cc1-484c-b207-bd8c55a55a28",
"text": {
"en": "Updated agreement text in English",
"de": "Aktualisierter Vertragstext auf Deutsch"
}
}
Delete Application
Delete Application by Key
manage_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
key String ​ | key of the Application. |
region String ​ |
application/json
application/json
curl -X DELETE https://checkout.{region}.commercetools.com/{projectKey}/applications/key={key} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
Delete Application by ID
manage_checkout_applications:{projectKey}
projectKey String ​ | Identifier of your Checkout entity and key of your Project. |
id String ​ | id of the Application. |
region String ​ |
application/json
application/json
curl -X DELETE https://checkout.{region}.commercetools.com/{projectKey}/applications/{id} -i \
--header "Authorization: Bearer ${BEARER_TOKEN}"
Allowed SortList
sort
query parameter. The following fields are available for sorting:Field | Description | Example |
---|---|---|
id | Sort by Application ID | id asc |
name | Sort by Application name | name desc |
mode | Sort by Application mode (CompleteFlow, PaymentOnly) | mode asc |
status | Sort by Application status (Active, Inactive) | status desc |
key | Sort by Application key | key asc |
createdAt | Sort by creation timestamp | createdAt desc |
lastModifiedAt | Sort by last modification timestamp | lastModifiedAt asc |
Sorting Examples
GET /applications?sort=name asc
GET /applications?sort=createdAt desc
GET /applications?sort=status asc,createdAt desc
GET /applications?sort=lastModifiedAt desc&limit=10&offset=0