Skip to main content

Store

The Store API exposes the stores your API token can act on, plus checkout setup for the selected store: payment methods, popup embed hostnames, abandoned-checkout recovery, tax defaults, and partner defaults.

Branding palettes are a separate resource — see Branding Themes.

Overview​

  • Get store — the selected store, including checkout setup
  • List stores — every store your token has API access to
  • Update store — sparse checkout-setup writes and the store legal footer

Get store is the natural first call for any integration: it tells you which store the request landed on, which currencies that store already transacts in, and the store-level checkout defaults products inherit. If your token has access to more than one store, List stores gives you the store IDs to use with the X-Easycart-Store header — see Store selection.

Update store accepts checkout-setup keys and footer_id. Profile fields such as name, email, address, and logo_url are not writable here — sending them returns 422.

Payment Methods​

payment_methods is a bare array on the store object — not { items, pagination }. Get store returns the full catalog for the store, sorted by order (lower first).

Each item's id is a catalog key, not a UUID. Do not snake-case applePay, googlePay, or payPo. Catalog ids:

card, applePay, googlePay, blik, tpay, tpay_blik, p24, ideal, eps, bancontact, twint, klarna, revolut_pay, mobilepay, affirm, payPo.

provider is always present: stripe, tpay, or paypo. is_available is read-only. It is false until the method's payment provider is connected and the method is activated for the store, and also while the store's availability with that provider cannot be checked. Enabling a method that is genuinely not activated returns 422 on payment_methods.{i}.is_enabled — connect the provider in the dashboard. Because the same false covers both cases, an enable is not guaranteed to be rejected; if the provider is already connected, read the store again and retry.

is_enabled and order are writable. Methods with no saved row default to enabled for card, applePay, and googlePay, and disabled for the rest.

Update store patches listed items by id. Unlisted methods are unchanged. Duplicate or unknown id returns 422. Sending provider or is_available on write returns 422.

popup_allowed_domains is a bare array of hostnames that may embed checkout as a popup. Get store returns them unique, lowercase, and sorted. An empty array means no third-party popup hosts. Each hostname is matched as stored — a parent domain does not allow its subdomains.

On update, the array you send replaces the whole list. Send [] to clear it. Hostnames only — a value with a scheme (for example https://shop.example.com) returns 422.

Checkout Recovery​

Store checkout_recovery.enabled is a boolean — never null. false turns store-wide recovery off. Product checkout_recovery.enabled: null inherits this store default at checkout.

coupon: null means no recovery coupon. When a coupon is set, exactly one of amount or percent is present. amount is an integer in minor units (e.g. cents) applied in each product's currency — there is no currency key on the store coupon. percent is an integer 1–100.

On update, omitted checkout_recovery keys are unchanged. Sending coupon replaces the pair. Sending coupon: null clears it. Both amount and percent, neither, or currency on write returns 422.

Tax Defaults​

vat_rate, flat_rate, gtu_code, and exempt_tax_kind are store defaults. A product field that is null inherits the matching store value at checkout — see Invoice, tax, portal, waitlist, and QR.

Allowed values match the product fields: vat_rate is a string ("23", "zw", "np"), gtu_code is an integer 1–13, flat_rate is one of 17, 15, 14, 12.5, 12, 10, 8.5, 5.5, 3, 2, and exempt_tax_kind is the exemption basis when VAT is zw (max 255 characters). Send null to clear a store default.

Partners​

partners is always present on the store object and is never null. It is the store-wide cookie length and commission a partner inherits when that partner's cookie_valid_days or commission_percent is null.

cookie_valid_days is an integer from 1 to 3650. commission_percent is an integer 1–100, where 20 means 20%. The object is not per currency.

Until the store saves its own values, they are 7 days and 20%.

Update store accepts a sparse partners object. Sending one key leaves the other in place. At least one of cookie_valid_days or commission_percent is required. null on either key returns 422. Send 7 or 20 to put that default back. The field name is commission_percent, not commission.

footer_id is the store legal footer. Update store accepts it and saves it immediately. Omit it to leave the current footer. Setting a UUID turns the store legal footer on. null clears it and turns that footer off. A value that is not a UUID, an unknown project, or a project that is not a legal footer on your account returns 422, and nothing in the patch is saved.

Get store returns store.footer_id only with include=footer_id. Without that token the key is omitted. With it, the value is a UUID, null when nothing is attached, or { "message": "The Easytools attachment could not be resolved." } when the attachment cannot be resolved. That GET stays 200, and the rest of the store is unchanged. Unknown include tokens are ignored.

The key is not on List stores. The Update store response omits it. It is not listed in the Store Object table.

Store Object​

Returned inside store on Get store and Update store.

FieldTypeNullableDescription
idstringNoUnique store identifier (UUID)
namestringNoStore name
slugstringNoURL-friendly store identifier
emailstringYesPrimary contact email
website_urlstringYesStore website URL
logo_urlstringYesStore logo URL
tax_idstringYesTax identification number
company_namestringYesRegistered company / billing name
full_namestringYesContact person's full name
phonestringYesContact phone number
addressobjectYesStore billing address. null when the store has no details set. See Address Object.
created_atstringNoWhen the store was created (ISO 8601)
payment_methodsarrayNoFull payment-method catalog. See Payment Method Object.
popup_allowed_domainsarrayNoHostnames allowed to embed checkout as a popup. Empty means none.
checkout_recoveryobjectNoStore-wide abandoned-checkout recovery. See Checkout Recovery Object.
vat_ratestringYesDefault VAT rate inherited by products with a null vat_rate
flat_ratenumberYesDefault flat-rate tax percent inherited by products with a null flat_rate
gtu_codeintegerYesDefault GTU code 1–13 inherited by products with a null gtu_code
exempt_tax_kindstringYesDefault exemption basis inherited by products with a null exempt_tax_kind
partnersobjectNoStore-wide partner defaults. Never null. See Partners Object.

footer_id is not in this table. It appears on Get store only when include=footer_id — see Legal footer.

currencies sits beside store on the envelope, not inside it. It is an array of lowercase ISO currency codes the store already has products in, and may be empty.

Address Object​

FieldTypeNullableDescription
streetstringYesStreet name
street_numberstringYesStreet / building number
house_numberstringYesApartment / house number
post_codestringYesPostal code
citystringYesCity
statestringYesState / region / province
countrystringYesUppercase ISO 3166-1 alpha-2 country code (e.g. "US")

Payment Method Object​

FieldTypeNullableDescription
idstringNoCatalog key (card, applePay, …). Not a UUID.
providerstringNostripe, tpay, or paypo. Read-only.
is_enabledbooleanNoWhether the method is turned on for this store.
orderintegerNoDisplay order, lower first. Minimum 0.
is_availablebooleanNoRead-only. See Payment methods.

Checkout Recovery Object​

FieldTypeNullableDescription
enabledbooleanNoStore-wide recovery switch. Never null.
couponobjectYesRecovery coupon. null means none. See Checkout Recovery Coupon Object.

Checkout Recovery Coupon Object​

Exactly one of amount or percent is set. There is no currency property.

FieldTypeNullableDescription
amountintegerYesFixed discount in minor units (e.g. cents), applied in each product's currency. Minimum 1 when set. Mutually exclusive with percent.
percentintegerYesPercent discount, 1–100. Mutually exclusive with amount.

Partners Object​

Always present. Never null. See Partners.

FieldTypeNullableDescription
cookie_valid_daysintegerNoHow many days the partner cookie lasts when a partner does not set its own. 1–3650. Default 7.
commission_percentintegerNoCommission when a partner does not set its own. Integer 1–100. 20 means 20%. Default 20.