SubblySubbly
Log inGet started
  • Get started
  • Developer resources
Storefront API reference
Docs
Information
    Base URLAuthenticationPaginationErrors
Bootstrap
    Get shop info and settings
Product
    Get list of productsGet product by IDGet variant or pricing by IDGet plan by ID
Bundle
    Get list of bundlesGet bundle by IDQuote bundleGet list of bundle group itemsGet list of bundle itemsGet the list of bundle items associated with multiple bundles
Survey
    Get survey by ID
Cart
    Init cartGet cart by IDUpdate cart by IDGet cart gifting datesGet cart start datesGet shipping methodsGet local pickupsValidate the cartAttach the customer to the cart
Cart Item
    Add cart itemUpdate cart itemDelete cart item
Checkout
    Make purchase from the cart
Auth
    LoginOtp LoginOtp GenerateSocial LoginRegisteredRegister
Customer
    Get the current customerGet the current customer referral infoUpdate customer
Address
    Get list of addressStore addressUpdate addressDelete address
Pickup Info
    Get list of pickup infosStore pickup infoUpdate pickup infoDelete pickup info
Wallet
    Store payment methodGet list of payment methodsStore payment methodDelete payment methodSet default payment method
Subscription
    Get list of subscriptionsShow subscriptionUpdate subscriptionUpdate subscription survey preferences by Subscription IDUpdate subscription bundle data by Subscription IDCancel a subscriptionUndo cancellationUndo a scheduled cancellationRequest a cancellationWithdraw a cancellation requestSkip upcoming renewalsPause the subscriptionResume the subscriptionProlong an active skipReactivate the subscriptionUpdate shipping address and methodUpdate subscription payment methodGet shipping methodsGet local pickupsList upcoming billing datesList allowed skipping datesList allowed resume datesChange the plans of the subscription's itemsList the plans the subscription can move toCreate a subscription itemShow a subscription itemUpdate a subscription itemRemove a subscription itemUpdate a subscription item's preferencesUpdate a subscription item's bundleChange the plan of a subscription itemChange the variant of a one-time item
Order
    Get list of ordersGet order by ID
Invoice
    Get list of invoicesGet invoice by ID
Payment Intent
    Confirm payment intentGet payment intent by ID
Funnels
    Get the current pre purchase funnel step by IDRefresh the funnel progressAccept the pre purchase funnel stepReject the pre purchase funnel stepGet the current mid purchase funnel step by IDRefresh the funnel progressAccept the mid purchase funnel stepReject the mid purchase funnel step
Countries
    Get list of countries
Out Of Stock
    Subscribe to the out of stock
Cancellation
    Get shop cancellation reasons
Metafield
    Get shop's metafields
Product Collection
    Get list of product collectionsGet product collection by IDGet list of collection groups with items
Lead
    Store the shop lead

Cart

Storefront Cart API endpoints

Endpoints
  • POST/cart
  • GET/cart/{cart_id}
  • PATCH/cart/{cart_id}
  • GET/cart/{cart_id}/gifting_dates
  • GET/cart/{cart_id}/start_dates
  • GET/cart/{cart_id}/shipping_methods
  • GET/cart/{cart_id}/local_pickups
  • POST/cart/{cart_id}/validate
  • POST/cart/{cart_id}/attach_customer

Init cart

POST /cart

An api call to initialize cart.

Request body

Store cart body

referral_idoptionalinteger

Referral Id

currency_codeoptionalstring
coupon_codeoptionalstring
gift_card_codeoptionalstring

ReturnsCart

Cart object response

Error responses

422object

A body field fails validation. currency_code is not a currency the shop sells in. referral_id is not an integer. coupon_code is sent while the shop turns off coupon discounts, or the coupon is unknown or not valid ('The coupon code is invalid.'). For a signed- in customer, coupon_code also fails when the customer already used a one-per-customer coupon ('You have already used this coupon.'), the coupon is for other customers ('This coupon is designated for personal use only.'), or the coupon is for subscribers only ('To use this coupon, you must be a subscribed member.'). gift_card_code is sent while the shop turns off gift card discounts, is not a UUID, is unknown or not purchasable ('The gift card is not valid.'), or has expired ('The gift card has already expired.'). expand is not an array.

curl -X POST https://api.subbly.co/storefront/v1/cart \ -H 'X-API-KEY: <api-key>' \ -H 'Authorization: Bearer <access-token>' \ -H 'Content-Type: application/json' \ -d '{ "referral_id": 1, "currency_code": "currency_code", "coupon_code": "coupon_code", "gift_card_code": "gift_card_code" }'
Response
{ "id": "d290f1ee-6c54-4b01-90e6-d701748f0851", "customer_id": 1, "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "attached": true, "shop_id": 1, "coupon_code": "new-year-discount", "coupon": { "id": 1, "coupon_id": "discount-100", "name": "Discount for the New Year", "amount_off": 100, "percent_off": 20, "duration": "once", "duration_in_months": 2 }, "gift_card_code": "a290f1ee-6c54-4b01-90e6-d701748fc920", "gift_card": { "id": 1, "code": "d290f1ee-6c54-4b01-90e6-d701748f0851", "amount": 100, "balance": 20, "message": "It's a gift for you", "status": "redeemed" }, "referral_id": 1, "currency_code": "EUR", "base_currency_code": "USD", "shipping_method_id": 1, "onboarding_template_id": 1, "shipping_method": { "id": 1, "type": "shipping_option", "method": {} }, "shipping_carrier_id": 1, "shipping_carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "shipping_carrier_service": "STANDARD", "shipping_address_id": 1, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "billing_address_id": 1, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "payment_method": { "id": 567, "type": "card", "identifier": "4242", "card": { "last_four": "4242", "expiry_month": "2", "expiry_year": "2099", "type": "credit", "brand": "visa" }, "ideal": { "bank": "ING", "bic": "INGBNL2A", "email": "test@subbly.co", "name": "John Doe" }, "bancontact": { "email": "test@subbly.co", "name": "John Doe" }, "acss_debit": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "Royal Bank of Canada", "transit_number": "12345", "institution_number": "123", "last_four": "6789" }, "us_bank_account": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "US Bank", "last_four": "6789", "routing_number": "123456789", "account_type": "checking", "account_holder_type": "individual" }, "sepa_debit": { "email": "test@subbly.co", "name": "John Doe", "iban_last4": "6789", "bank_code": "123456", "country": "DE", "branch_code": "12345" }, "sofort": { "email": "test@subbly.co", "name": "John Doe", "country": "DE" }, "link": { "email": "test@subbly.co", "name": "John Doe" }, "cashapp": { "email": "test@subbly.co", "name": "John Doe", "buyer_id": "cashapp:123456789", "cash_tag": "$subbly" }, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }, "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2022-04-01", "items": [ { "id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "status": "active", "product": {}, "quantity": 2, "description": "Yellow T-shirt with pokemon print", "addon": false, "addon_duration": 0, "gift_card": { "customer_email": "customer_email", "customer_name": "customer_name", "message": "message" }, "bundle": { "preferences": [ {} ], "items": [ {} ] }, "metadata": [ {} ], "options": [ { "question_id": 1, "answers": [ "answers" ] } ], "amount_off": null, "percent_off": null, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "summary_items": [ { "item_id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "net_total": 1298, "gross_total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "digital": false, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "totals": { "now": { "sub_total": 4000, "discount_total": 0, "tax_total": 350, "tax_added": 350, "tax_included": 0, "customs_fee": 0, "gross_total": 4350, "net_total": 4000, "adjustment": 0, "amount_due": 4350 }, "future": {} }, "breakdown": { "products": {}, "setup_fee": {}, "surveys": {}, "shipping": {}, "discounts": [ {} ] }, "discounts": [ { "type": "coupon", "description": "Offer discount", "total": 3, "charge_now": true } ], "metadata": [ { "id": 1, "name": "Color", "slug": "color-red", "description": "description", "unit": "kg", "data_type": "single_line_string", "preset": true, "multiple": true, "variant": true, "save_behavior": "customer", "editable": true, "values": [ {} ] } ], "adjustment": 0, "customs_fee": 0, "future_customs_fee": 0, "balance_change": { "amount": 0, "currency_code": "USD" }, "status": "initialized", "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }

Get cart by ID

GET /cart/{cart_id}

A detailed description of the cart with all discounts and amounts.

Loading the cart refreshes stored start dates that are no longer available (for example, a date chosen days ago that is now in the past): a stale gift_info.starts_at is moved to the earliest available gifting date, and a stale starts_at is cleared so the earliest available start date is returned. Checkout still rejects a stale date, so reload the cart before purchase if it was loaded long ago.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsCart

Cart object response

Error responses

400object

The signed-in customer does not own the cart (unauthorized_customer), or the cart is not active (it is completed or expired) or belongs to another shop (bad_request).

404object

No cart with this ID exists.

422object

The expand query parameter is not an array.

curl https://api.subbly.co/storefront/v1/cart/{cart_id} \ -H 'X-API-KEY: <api-key>' \ -H 'Authorization: Bearer <access-token>'
Response
{ "id": "d290f1ee-6c54-4b01-90e6-d701748f0851", "customer_id": 1, "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "attached": true, "shop_id": 1, "coupon_code": "new-year-discount", "coupon": { "id": 1, "coupon_id": "discount-100", "name": "Discount for the New Year", "amount_off": 100, "percent_off": 20, "duration": "once", "duration_in_months": 2 }, "gift_card_code": "a290f1ee-6c54-4b01-90e6-d701748fc920", "gift_card": { "id": 1, "code": "d290f1ee-6c54-4b01-90e6-d701748f0851", "amount": 100, "balance": 20, "message": "It's a gift for you", "status": "redeemed" }, "referral_id": 1, "currency_code": "EUR", "base_currency_code": "USD", "shipping_method_id": 1, "onboarding_template_id": 1, "shipping_method": { "id": 1, "type": "shipping_option", "method": {} }, "shipping_carrier_id": 1, "shipping_carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "shipping_carrier_service": "STANDARD", "shipping_address_id": 1, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "billing_address_id": 1, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "payment_method": { "id": 567, "type": "card", "identifier": "4242", "card": { "last_four": "4242", "expiry_month": "2", "expiry_year": "2099", "type": "credit", "brand": "visa" }, "ideal": { "bank": "ING", "bic": "INGBNL2A", "email": "test@subbly.co", "name": "John Doe" }, "bancontact": { "email": "test@subbly.co", "name": "John Doe" }, "acss_debit": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "Royal Bank of Canada", "transit_number": "12345", "institution_number": "123", "last_four": "6789" }, "us_bank_account": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "US Bank", "last_four": "6789", "routing_number": "123456789", "account_type": "checking", "account_holder_type": "individual" }, "sepa_debit": { "email": "test@subbly.co", "name": "John Doe", "iban_last4": "6789", "bank_code": "123456", "country": "DE", "branch_code": "12345" }, "sofort": { "email": "test@subbly.co", "name": "John Doe", "country": "DE" }, "link": { "email": "test@subbly.co", "name": "John Doe" }, "cashapp": { "email": "test@subbly.co", "name": "John Doe", "buyer_id": "cashapp:123456789", "cash_tag": "$subbly" }, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }, "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2022-04-01", "items": [ { "id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "status": "active", "product": {}, "quantity": 2, "description": "Yellow T-shirt with pokemon print", "addon": false, "addon_duration": 0, "gift_card": { "customer_email": "customer_email", "customer_name": "customer_name", "message": "message" }, "bundle": { "preferences": [ {} ], "items": [ {} ] }, "metadata": [ {} ], "options": [ { "question_id": 1, "answers": [ "answers" ] } ], "amount_off": null, "percent_off": null, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "summary_items": [ { "item_id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "net_total": 1298, "gross_total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "digital": false, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "totals": { "now": { "sub_total": 4000, "discount_total": 0, "tax_total": 350, "tax_added": 350, "tax_included": 0, "customs_fee": 0, "gross_total": 4350, "net_total": 4000, "adjustment": 0, "amount_due": 4350 }, "future": {} }, "breakdown": { "products": {}, "setup_fee": {}, "surveys": {}, "shipping": {}, "discounts": [ {} ] }, "discounts": [ { "type": "coupon", "description": "Offer discount", "total": 3, "charge_now": true } ], "metadata": [ { "id": 1, "name": "Color", "slug": "color-red", "description": "description", "unit": "kg", "data_type": "single_line_string", "preset": true, "multiple": true, "variant": true, "save_behavior": "customer", "editable": true, "values": [ {} ] } ], "adjustment": 0, "customs_fee": 0, "future_customs_fee": 0, "balance_change": { "amount": 0, "currency_code": "USD" }, "status": "initialized", "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }

Update cart by ID

PATCH /cart/{cart_id}

An api call to update main cart fields

Path parameters

cart_idRequiredstring

Cart ID

Request body

Update cart body

referral_idoptionalinteger
currency_codeoptionalstring
coupon_codeoptionalstring
gift_card_codeoptionalstring
gift_infooptionalGiftData
starts_atoptionalstring | null

Subscription start date (Y-m-d). Prohibited together with gift_info.

Format: date.

customeroptionalCustomerData
shipping_addressoptionalAddress
pickup_infooptionalPickupInfo
billing_addressoptionalAddress
payment_method_idoptionalinteger

Applicable only after authentication.

shipping_address_idoptionalinteger

Applicable only after authentication. Required with shipping_method_id

shipping_method_idoptionalinteger

Applicable only after authentication. Required with shipping_address_id

shipping_carrier_idoptionalinteger | null

Required when the shipping method is dynamic. Prohibited otherwise.

shipping_carrier_serviceoptionalstring | null

Required when the shipping method is dynamic. Prohibited otherwise.

onboarding_template_idoptionalinteger | null
billing_address_idoptionalinteger

Applicable only after authentication.

metadataoptionalobject[] | null

List of metadata and its values

attributionoptionalobject | null

Browser and ad-click identifiers captured by the storefront and forwarded to server-side conversion APIs. Merged into the cart per key: a non-empty value overwrites the stored one, a missing or empty key keeps it. Keys outside the list below are ignored, so a client may send identifiers before the API uses them. Values are never hashed and never rejected (a non-string value is ignored): a value longer than its limit is truncated to it, and fbc / fbp that are not in fb.<subdomainIndex>.<creationMs>.<id> form are dropped.

ReturnsCart

Cart object response

Error responses

400object

The signed-in customer does not own the cart (unauthorized_customer), the cart is not active (it is completed or expired) or belongs to another shop (bad_request), or the postal code region lookup service fails for a shipping_address or billing_address sent with a zip but no region (region_lookup).

404object

No cart with this ID exists.

422object

A body field fails validation. Typical cases: currency_code is not a shop currency. gift_info and starts_at are sent together, or the date is not an available start date ('The starts at is invalid.'). gift_info.recipient_email is missing while the shop collects it. coupon_code fails the coupon checks ('The coupon code is invalid.', 'You have already used this coupon.', 'This coupon is designated for personal use only.', 'To use this coupon, you must be a subscribed member.', 'Coupon conditions are not passed.'). gift_card_code is not valid ('The gift card is not valid.', 'The gift card has already expired.'). payment_method_id is sent without an attached, signed-in customer, or its gateway does not support the cart currency. customer is sent while a customer is attached or signed in. shipping_address_id or billing_address_id is not an address of the signed-in customer ('The shipping address id is prohibited. The customer must be attached to a cart.'). shipping_address, shipping_address_id and pickup_info conflict, or the cart holds only digital items ('The shipping address is prohibited for digital products.', 'The pickup info should be empty when digital products.'). shipping_method_id does not fit the address ('The shipping method id is not valid for the provided address.', 'The shipping method id is required when a shipping address or pickup info has been provided.'). shipping_carrier_id or shipping_carrier_service is missing for a dynamic method or not offered ('The selected carrier is not available for this shipping method.', 'The selected service is not available for this carrier.'). An address or pickup field is missing or invalid ('The phone number is invalid'). metadata holds unknown attributes or invalid values. expand is not an array.

curl -X PATCH https://api.subbly.co/storefront/v1/cart/{cart_id} \ -H 'X-API-KEY: <api-key>' \ -H 'Authorization: Bearer <access-token>' \ -H 'Content-Type: application/json' \ -d '{ "referral_id": 1, "currency_code": "currency_code", "coupon_code": "coupon_code", "gift_card_code": "gift_card_code", "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2026-01-15", "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "pickup_info": { "id": 3487, "first_name": "John", "last_name": "Smith", "phone": "+13232380656", "pickup_point": { "id": 12, "external_id": "FR-123456", "country_id": 74, "country_code": "FR", "country_name": "France", "type": "mondial_relay", "city": "Paris", "address_one": "1 Rue de Rivoli", "address_two": null, "zip": "75001" } }, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "shipping_address_id": 1, "shipping_method_id": 1, "shipping_carrier_id": 1, "shipping_carrier_service": "shipping_carrier_service", "onboarding_template_id": 1, "billing_address_id": 1, "metadata": [ { "id": 1, "values": [ { "id": 10, "value": "Blue" } ] } ], "attribution": { "fbc": "fb.1.1554763741205.IwAR2F4-dbP0l7Mn1IawQQGCINEz7PYXQvwjNwB_qa2ofrHyiLjcbCRxTDMgk", "fbp": "fb.1.1596403881668.1116446470", "fbclid": "fbclid", "source_url": "source_url" } }'
Response
{ "id": "d290f1ee-6c54-4b01-90e6-d701748f0851", "customer_id": 1, "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "attached": true, "shop_id": 1, "coupon_code": "new-year-discount", "coupon": { "id": 1, "coupon_id": "discount-100", "name": "Discount for the New Year", "amount_off": 100, "percent_off": 20, "duration": "once", "duration_in_months": 2 }, "gift_card_code": "a290f1ee-6c54-4b01-90e6-d701748fc920", "gift_card": { "id": 1, "code": "d290f1ee-6c54-4b01-90e6-d701748f0851", "amount": 100, "balance": 20, "message": "It's a gift for you", "status": "redeemed" }, "referral_id": 1, "currency_code": "EUR", "base_currency_code": "USD", "shipping_method_id": 1, "onboarding_template_id": 1, "shipping_method": { "id": 1, "type": "shipping_option", "method": {} }, "shipping_carrier_id": 1, "shipping_carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "shipping_carrier_service": "STANDARD", "shipping_address_id": 1, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "billing_address_id": 1, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "payment_method": { "id": 567, "type": "card", "identifier": "4242", "card": { "last_four": "4242", "expiry_month": "2", "expiry_year": "2099", "type": "credit", "brand": "visa" }, "ideal": { "bank": "ING", "bic": "INGBNL2A", "email": "test@subbly.co", "name": "John Doe" }, "bancontact": { "email": "test@subbly.co", "name": "John Doe" }, "acss_debit": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "Royal Bank of Canada", "transit_number": "12345", "institution_number": "123", "last_four": "6789" }, "us_bank_account": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "US Bank", "last_four": "6789", "routing_number": "123456789", "account_type": "checking", "account_holder_type": "individual" }, "sepa_debit": { "email": "test@subbly.co", "name": "John Doe", "iban_last4": "6789", "bank_code": "123456", "country": "DE", "branch_code": "12345" }, "sofort": { "email": "test@subbly.co", "name": "John Doe", "country": "DE" }, "link": { "email": "test@subbly.co", "name": "John Doe" }, "cashapp": { "email": "test@subbly.co", "name": "John Doe", "buyer_id": "cashapp:123456789", "cash_tag": "$subbly" }, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }, "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2022-04-01", "items": [ { "id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "status": "active", "product": {}, "quantity": 2, "description": "Yellow T-shirt with pokemon print", "addon": false, "addon_duration": 0, "gift_card": { "customer_email": "customer_email", "customer_name": "customer_name", "message": "message" }, "bundle": { "preferences": [ {} ], "items": [ {} ] }, "metadata": [ {} ], "options": [ { "question_id": 1, "answers": [ "answers" ] } ], "amount_off": null, "percent_off": null, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "summary_items": [ { "item_id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "net_total": 1298, "gross_total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "digital": false, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "totals": { "now": { "sub_total": 4000, "discount_total": 0, "tax_total": 350, "tax_added": 350, "tax_included": 0, "customs_fee": 0, "gross_total": 4350, "net_total": 4000, "adjustment": 0, "amount_due": 4350 }, "future": {} }, "breakdown": { "products": {}, "setup_fee": {}, "surveys": {}, "shipping": {}, "discounts": [ {} ] }, "discounts": [ { "type": "coupon", "description": "Offer discount", "total": 3, "charge_now": true } ], "metadata": [ { "id": 1, "name": "Color", "slug": "color-red", "description": "description", "unit": "kg", "data_type": "single_line_string", "preset": true, "multiple": true, "variant": true, "save_behavior": "customer", "editable": true, "values": [ {} ] } ], "adjustment": 0, "customs_fee": 0, "future_customs_fee": 0, "balance_change": { "amount": 0, "currency_code": "USD" }, "status": "initialized", "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }

Get cart gifting dates

GET /cart/{cart_id}/gifting_dates

Available gifting dates.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsStartDates

Gifting dates object

Error responses

400object

The cart is not active (it is completed or expired) or belongs to another shop.

404object

No cart with this ID exists.

curl https://api.subbly.co/storefront/v1/cart/{cart_id}/gifting_dates \ -H 'X-API-KEY: <api-key>'
Response
{ "available_dates": [ "2022-01-01" ], "range": [ "2022-01-01", "2022-12-01" ] }

Get cart start dates

GET /cart/{cart_id}/start_dates

Available subscription start dates.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsStartDates

Start dates object

Error responses

400object

The cart is not active (it is completed or expired) or belongs to another shop.

404object

No cart with this ID exists.

curl https://api.subbly.co/storefront/v1/cart/{cart_id}/start_dates \ -H 'X-API-KEY: <api-key>'
Response
{ "available_dates": [ "2022-01-01" ], "range": [ "2022-01-01", "2022-12-01" ] }

Get shipping methods

GET /cart/{cart_id}/shipping_methods

Available shipping methods for the current address.

Path parameters

cart_idRequiredstring

Cart ID

Query parameters

country_idRequiredinteger
region_idoptionalinteger

If empty will be looked up by country and zip

zipRequiredstring
first_nameoptionalstring
last_nameoptionalstring
phoneoptionalstring
address_oneoptionalstring
address_twooptionalstring
cityoptionalstring
expandoptionalstring[]

Expandable relations (e.g. carrier)

ReturnsCartShippingMethod[]

Array of shipping methods objects

Error responses

400object

The cart has expired or belongs to another shop (bad_request), or the postal code region lookup service fails when zip is sent without region_id for a country with regions (region_lookup).

404object

No cart with this ID exists.

422object

A query parameter fails validation. country_id is missing or unknown. region_id is missing for a country with regions, sent for a country without regions, or not a region of that country. zip is missing. first_name or last_name is not 1 to 50 characters. phone is not a valid number ('The phone number is invalid'). address_one, address_two or city is not a string. expand is not an array.

curl https://api.subbly.co/storefront/v1/cart/{cart_id}/shipping_methods \ -H 'X-API-KEY: <api-key>'
Response
[ { "id": 1, "service": "STANDARD", "carrier_id": 1, "carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "type": "shipping_option", "method": { "name": "US Free shipping method", "duration": "2-3 days", "type": "flat_price", "provider": "flavorcloud" }, "shipping_fee": 10, "future_shipping_fee": 0, "customs_fee": 0, "future_customs_fee": 0, "prohibited_products": [ 1 ] } ]

Get local pickups

GET /cart/{cart_id}/local_pickups

Available local pickups.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsCartShippingMethod[]

Array of local pickup objects

Error responses

400object

The cart is not active (it is completed or expired) or belongs to another shop.

404object

No cart with this ID exists.

curl https://api.subbly.co/storefront/v1/cart/{cart_id}/local_pickups \ -H 'X-API-KEY: <api-key>'
Response
[ { "id": 1, "service": "STANDARD", "carrier_id": 1, "carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "type": "shipping_option", "method": { "name": "US Free shipping method", "duration": "2-3 days", "type": "flat_price", "provider": "flavorcloud" }, "shipping_fee": 10, "future_shipping_fee": 0, "customs_fee": 0, "future_customs_fee": 0, "prohibited_products": [ 1 ] } ]

Validate the cart

POST /cart/{cart_id}/validate

The validation of the cart to be sure it will be valid when purchase.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsCart

Cart object response

Error responses

400object

The cart has a customer and the signed-in customer is not that customer (unauthorized_customer); the cart is not active (it is completed or expired) or belongs to another shop (bad_request); the cart has no available items (cart_empty); a bundle item carries invalid preferences (bundle_preferences_not_valid) or invalid products (bundle_items_not_valid); or a subscription item carries invalid survey answers (invalid_survey).

401object

The request carries no valid customer auth token. The customer must sign in first.

404object

No cart with this ID exists.

422object

The cart is not ready for purchase. Each failed check adds an error under its field: customer_id ('The customer is not attached to the cart.', 'The TOS consent is required.'), coupon_id ('The coupon does not exists.', 'The coupon was already used by the customer.', 'The coupon rules are not passed for the customer.', 'To use this coupon, you must be a subscribed member.'), gift_card_id ('The gift voucher does not exists.', 'The gift voucher status should be in "issued" or "partially used".'), shipping_address_id ('The shipping address is required.', 'The shipping address does not exist.'), billing_address_id ('The billing address is required.', 'The billing address does not exist.'), shipping_method_id ('The shipping method is required.', 'The shipping method does not exist.', 'The shipping method is not valid.'), payment_method_id ('The payment method is required.', 'The payment method was not found.', 'The payment method is not valid.'), currency_code ('The currency code is not valid.'), gift_info.starts_at ('The selected gift start date is no longer available. Please choose a new date.') and starts_at ('The selected start date is no longer available. Please choose a new date.').

curl -X POST https://api.subbly.co/storefront/v1/cart/{cart_id}/validate \ -H 'X-API-KEY: <api-key>' \ -H 'Authorization: Bearer <access-token>'
Response
{ "id": "d290f1ee-6c54-4b01-90e6-d701748f0851", "customer_id": 1, "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "attached": true, "shop_id": 1, "coupon_code": "new-year-discount", "coupon": { "id": 1, "coupon_id": "discount-100", "name": "Discount for the New Year", "amount_off": 100, "percent_off": 20, "duration": "once", "duration_in_months": 2 }, "gift_card_code": "a290f1ee-6c54-4b01-90e6-d701748fc920", "gift_card": { "id": 1, "code": "d290f1ee-6c54-4b01-90e6-d701748f0851", "amount": 100, "balance": 20, "message": "It's a gift for you", "status": "redeemed" }, "referral_id": 1, "currency_code": "EUR", "base_currency_code": "USD", "shipping_method_id": 1, "onboarding_template_id": 1, "shipping_method": { "id": 1, "type": "shipping_option", "method": {} }, "shipping_carrier_id": 1, "shipping_carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "shipping_carrier_service": "STANDARD", "shipping_address_id": 1, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "billing_address_id": 1, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "payment_method": { "id": 567, "type": "card", "identifier": "4242", "card": { "last_four": "4242", "expiry_month": "2", "expiry_year": "2099", "type": "credit", "brand": "visa" }, "ideal": { "bank": "ING", "bic": "INGBNL2A", "email": "test@subbly.co", "name": "John Doe" }, "bancontact": { "email": "test@subbly.co", "name": "John Doe" }, "acss_debit": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "Royal Bank of Canada", "transit_number": "12345", "institution_number": "123", "last_four": "6789" }, "us_bank_account": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "US Bank", "last_four": "6789", "routing_number": "123456789", "account_type": "checking", "account_holder_type": "individual" }, "sepa_debit": { "email": "test@subbly.co", "name": "John Doe", "iban_last4": "6789", "bank_code": "123456", "country": "DE", "branch_code": "12345" }, "sofort": { "email": "test@subbly.co", "name": "John Doe", "country": "DE" }, "link": { "email": "test@subbly.co", "name": "John Doe" }, "cashapp": { "email": "test@subbly.co", "name": "John Doe", "buyer_id": "cashapp:123456789", "cash_tag": "$subbly" }, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }, "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2022-04-01", "items": [ { "id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "status": "active", "product": {}, "quantity": 2, "description": "Yellow T-shirt with pokemon print", "addon": false, "addon_duration": 0, "gift_card": { "customer_email": "customer_email", "customer_name": "customer_name", "message": "message" }, "bundle": { "preferences": [ {} ], "items": [ {} ] }, "metadata": [ {} ], "options": [ { "question_id": 1, "answers": [ "answers" ] } ], "amount_off": null, "percent_off": null, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "summary_items": [ { "item_id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "net_total": 1298, "gross_total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "digital": false, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "totals": { "now": { "sub_total": 4000, "discount_total": 0, "tax_total": 350, "tax_added": 350, "tax_included": 0, "customs_fee": 0, "gross_total": 4350, "net_total": 4000, "adjustment": 0, "amount_due": 4350 }, "future": {} }, "breakdown": { "products": {}, "setup_fee": {}, "surveys": {}, "shipping": {}, "discounts": [ {} ] }, "discounts": [ { "type": "coupon", "description": "Offer discount", "total": 3, "charge_now": true } ], "metadata": [ { "id": 1, "name": "Color", "slug": "color-red", "description": "description", "unit": "kg", "data_type": "single_line_string", "preset": true, "multiple": true, "variant": true, "save_behavior": "customer", "editable": true, "values": [ {} ] } ], "adjustment": 0, "customs_fee": 0, "future_customs_fee": 0, "balance_change": { "amount": 0, "currency_code": "USD" }, "status": "initialized", "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }

Attach the customer to the cart

POST /cart/{cart_id}/attach_customer

Attach the customer to the current cart.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsCart

Cart object response

Error responses

400object

The cart already has a customer (customer_attached), or the cart is not active (it is completed or expired) or belongs to another shop (bad_request).

401object

The request carries no valid customer auth token. The customer must sign in first.

404object

No cart with this ID exists.

curl -X POST https://api.subbly.co/storefront/v1/cart/{cart_id}/attach_customer \ -H 'X-API-KEY: <api-key>' \ -H 'Authorization: Bearer <access-token>'
Response
{ "id": "d290f1ee-6c54-4b01-90e6-d701748f0851", "customer_id": 1, "customer": { "first_name": "John", "last_name": "Smith", "email": "test@test.com", "marketing_consent": false, "tos_consent": false, "active_subscriptions_count": 0, "external_id": "external_id", "created_at": "2026-01-15T10:30:00Z" }, "attached": true, "shop_id": 1, "coupon_code": "new-year-discount", "coupon": { "id": 1, "coupon_id": "discount-100", "name": "Discount for the New Year", "amount_off": 100, "percent_off": 20, "duration": "once", "duration_in_months": 2 }, "gift_card_code": "a290f1ee-6c54-4b01-90e6-d701748fc920", "gift_card": { "id": 1, "code": "d290f1ee-6c54-4b01-90e6-d701748f0851", "amount": 100, "balance": 20, "message": "It's a gift for you", "status": "redeemed" }, "referral_id": 1, "currency_code": "EUR", "base_currency_code": "USD", "shipping_method_id": 1, "onboarding_template_id": 1, "shipping_method": { "id": 1, "type": "shipping_option", "method": {} }, "shipping_carrier_id": 1, "shipping_carrier": { "id": 1, "name": "DHL", "service_codes": [ "STANDARD", "EXPRESS" ] }, "shipping_carrier_service": "STANDARD", "shipping_address_id": 1, "shipping_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "billing_address_id": 1, "billing_address": { "id": 3486, "first_name": "John", "last_name": "Smith", "country_id": 230, "region_id": 1231, "country": "United States", "region": "California", "phone": "+13232380656", "company_name": null, "address_one": "7609 Mckinley Ave", "address_two": null, "city": "Los Angeles", "zip": "90044" }, "payment_method_id": 1, "payment_method": { "id": 567, "type": "card", "identifier": "4242", "card": { "last_four": "4242", "expiry_month": "2", "expiry_year": "2099", "type": "credit", "brand": "visa" }, "ideal": { "bank": "ING", "bic": "INGBNL2A", "email": "test@subbly.co", "name": "John Doe" }, "bancontact": { "email": "test@subbly.co", "name": "John Doe" }, "acss_debit": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "Royal Bank of Canada", "transit_number": "12345", "institution_number": "123", "last_four": "6789" }, "us_bank_account": { "email": "test@subbly.co", "name": "John Doe", "bank_name": "US Bank", "last_four": "6789", "routing_number": "123456789", "account_type": "checking", "account_holder_type": "individual" }, "sepa_debit": { "email": "test@subbly.co", "name": "John Doe", "iban_last4": "6789", "bank_code": "123456", "country": "DE", "branch_code": "12345" }, "sofort": { "email": "test@subbly.co", "name": "John Doe", "country": "DE" }, "link": { "email": "test@subbly.co", "name": "John Doe" }, "cashapp": { "email": "test@subbly.co", "name": "John Doe", "buyer_id": "cashapp:123456789", "cash_tag": "$subbly" }, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }, "gift_info": { "starts_at": "2022-04-01", "number_of_orders": 1, "message": "Happy Birthday", "recipient_email": "recipient@example.com" }, "starts_at": "2022-04-01", "items": [ { "id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "status": "active", "product": {}, "quantity": 2, "description": "Yellow T-shirt with pokemon print", "addon": false, "addon_duration": 0, "gift_card": { "customer_email": "customer_email", "customer_name": "customer_name", "message": "message" }, "bundle": { "preferences": [ {} ], "items": [ {} ] }, "metadata": [ {} ], "options": [ { "question_id": 1, "answers": [ "answers" ] } ], "amount_off": null, "percent_off": null, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "summary_items": [ { "item_id": "f290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "net_total": 1298, "gross_total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "digital": false, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "totals": { "now": { "sub_total": 4000, "discount_total": 0, "tax_total": 350, "tax_added": 350, "tax_included": 0, "customs_fee": 0, "gross_total": 4350, "net_total": 4000, "adjustment": 0, "amount_due": 4350 }, "future": {} }, "breakdown": { "products": {}, "setup_fee": {}, "surveys": {}, "shipping": {}, "discounts": [ {} ] }, "discounts": [ { "type": "coupon", "description": "Offer discount", "total": 3, "charge_now": true } ], "metadata": [ { "id": 1, "name": "Color", "slug": "color-red", "description": "description", "unit": "kg", "data_type": "single_line_string", "preset": true, "multiple": true, "variant": true, "save_behavior": "customer", "editable": true, "values": [ {} ] } ], "adjustment": 0, "customs_fee": 0, "future_customs_fee": 0, "balance_change": { "amount": 0, "currency_code": "USD" }, "status": "initialized", "created_at": "2022-04-01T00:00:00.000000Z", "updated_at": "2022-04-01T00:00:00.000000Z" }
idstring

Format: uuid.

customer_idinteger
customerCustomerData
attachedboolean
shop_idinteger
coupon_codestring | null
couponCoupon | null

Expandable link to the coupon

gift_card_codestring | null

Format: uuid.

gift_cardGiftCard | null

Expandable link to the gift card

referral_idinteger | null
currency_codestring
base_currency_codestring
shipping_method_idinteger
onboarding_template_idinteger | null
shipping_methodShippingMethod | null

Shipping method object

shipping_carrier_idinteger | null
shipping_carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

shipping_carrier_servicestring | null
shipping_address_idinteger | null
shipping_addressAddress | PickupInfo | null

Shipping address or pickup point object

billing_address_idinteger
billing_addressAddress | null

Billing address object

payment_method_idinteger
payment_methodPaymentMethod | null

Expandable link to the payment method

gift_infoGiftData

Gift details. On GET /cart/{cart_id}, a starts_at that is no longer available is moved to the earliest available gifting date.

starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen. On GET /cart/{cart_id}, a selected start that is no longer available is cleared, so the earliest available start date is returned.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger

Total after discounts, with tax. Tax is added on top when prices are tax-exclusive and is already part of the price when prices are tax-inclusive.

sub_totalinteger

Sum of item prices multiplied by quantity, before discounts. It does not include tax when prices are tax-exclusive and includes tax when prices are tax-inclusive.

discount_totalinteger
tax_totalinteger
tax_ratenumber
totalsCartTotals

Cart totals split by charge phase: now is charged at checkout, future is charged with the next billing cycle.

breakdownCartBreakdown

Cart amounts split by item group. The groups products, setup_fee, surveys and shipping partition the cart items, so their totals add up to the cart total.

discountsCartDiscount[]
metadataEntityMetadata[]
adjustmentnumber
customs_feeinteger

Customs fee for the first shipment. Only applicable for dynamic shipping.

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments. Only applicable for dynamic shipping.

Defaults to 0.

balance_changeBalanceChange
statusstring

Possible values: initialized, expired, completed.

created_atstring

Format: date-time.

updated_atstring

Format: date-time.

idstring

Format: uuid.

customer_idinteger
customerCustomerData
attachedboolean
shop_idinteger
coupon_codestring | null
couponCoupon | null

Expandable link to the coupon

gift_card_codestring | null

Format: uuid.

gift_cardGiftCard | null

Expandable link to the gift card

referral_idinteger | null
currency_codestring
base_currency_codestring
shipping_method_idinteger
onboarding_template_idinteger | null
shipping_methodShippingMethod | null

Shipping method object

shipping_carrier_idinteger | null
shipping_carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

shipping_carrier_servicestring | null
shipping_address_idinteger | null
shipping_addressAddress | PickupInfo | null

Shipping address or pickup point object

billing_address_idinteger
billing_addressAddress | null

Billing address object

payment_method_idinteger
payment_methodPaymentMethod | null

Expandable link to the payment method

gift_infoGiftData

Gift details. On GET /cart/{cart_id}, a starts_at that is no longer available is moved to the earliest available gifting date.

starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen. On GET /cart/{cart_id}, a selected start that is no longer available is cleared, so the earliest available start date is returned.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger

Total after discounts, with tax. Tax is added on top when prices are tax-exclusive and is already part of the price when prices are tax-inclusive.

sub_totalinteger

Sum of item prices multiplied by quantity, before discounts. It does not include tax when prices are tax-exclusive and includes tax when prices are tax-inclusive.

discount_totalinteger
tax_totalinteger
tax_ratenumber
totalsCartTotals

Cart totals split by charge phase: now is charged at checkout, future is charged with the next billing cycle.

breakdownCartBreakdown

Cart amounts split by item group. The groups products, setup_fee, surveys and shipping partition the cart items, so their totals add up to the cart total.

discountsCartDiscount[]
metadataEntityMetadata[]
adjustmentnumber
customs_feeinteger

Customs fee for the first shipment. Only applicable for dynamic shipping.

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments. Only applicable for dynamic shipping.

Defaults to 0.

balance_changeBalanceChange
statusstring

Possible values: initialized, expired, completed.

created_atstring

Format: date-time.

updated_atstring

Format: date-time.

starts_atoptionalstring

Format: date.

number_of_ordersoptionalinteger
messageoptionalstring
recipient_emailoptionalstring | null

Gift recipient email. Required when collect_gift_recipient_email shop setting is enabled.

Format: email.

first_nameoptionalstring | null
last_nameoptionalstring | null
emailoptionalstring | null

Format: email.

marketing_consentoptionalboolean | null
tos_consentoptionalboolean | null
active_subscriptions_countoptionalinteger
external_idoptionalstring | null
created_atoptionalstring | null

Format: date-time.

idoptionalinteger
first_nameoptionalstring
last_nameoptionalstring
country_idoptionalinteger | null
region_idoptionalinteger | null
countryoptionalstring
regionoptionalstring | null
phoneoptionalstring | null
company_nameoptionalstring | null
address_oneoptionalstring
address_twooptionalstring | null
cityoptionalstring
zipoptionalstring
idoptionalinteger
first_nameoptionalstring
last_nameoptionalstring
phoneoptionalstring | null
pickup_pointoptionalPickupPoint | null

The pickup point the pickup info is attached to.

idoptionalinteger
first_nameoptionalstring
last_nameoptionalstring
country_idoptionalinteger | null
region_idoptionalinteger | null
countryoptionalstring
regionoptionalstring | null
phoneoptionalstring | null
company_nameoptionalstring | null
address_oneoptionalstring
address_twooptionalstring | null
cityoptionalstring
zipoptionalstring
idRequiredinteger

Metadata ID

valuesRequiredobject[]

Array of metadata values

fbcoptionalstring

Meta click id from the _fbc cookie, or fb.1.<ms>.<fbclid> derived from the fbclid query param. Truncated to 255 characters.

fbpoptionalstring

Meta browser id from the _fbp cookie. Truncated to 255 characters.

fbclidoptionalstring

Raw Meta click id from the page URL, case preserved. Truncated to 255 characters.

source_urloptionalstring

Page URL where the identifiers were captured. Truncated to 2048 characters.

idstring

Format: uuid.

customer_idinteger
customerCustomerData
attachedboolean
shop_idinteger
coupon_codestring | null
couponCoupon | null

Expandable link to the coupon

gift_card_codestring | null

Format: uuid.

gift_cardGiftCard | null

Expandable link to the gift card

referral_idinteger | null
currency_codestring
base_currency_codestring
shipping_method_idinteger
onboarding_template_idinteger | null
shipping_methodShippingMethod | null

Shipping method object

shipping_carrier_idinteger | null
shipping_carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

shipping_carrier_servicestring | null
shipping_address_idinteger | null
shipping_addressAddress | PickupInfo | null

Shipping address or pickup point object

billing_address_idinteger
billing_addressAddress | null

Billing address object

payment_method_idinteger
payment_methodPaymentMethod | null

Expandable link to the payment method

gift_infoGiftData

Gift details. On GET /cart/{cart_id}, a starts_at that is no longer available is moved to the earliest available gifting date.

starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen. On GET /cart/{cart_id}, a selected start that is no longer available is cleared, so the earliest available start date is returned.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger

Total after discounts, with tax. Tax is added on top when prices are tax-exclusive and is already part of the price when prices are tax-inclusive.

sub_totalinteger

Sum of item prices multiplied by quantity, before discounts. It does not include tax when prices are tax-exclusive and includes tax when prices are tax-inclusive.

discount_totalinteger
tax_totalinteger
tax_ratenumber
totalsCartTotals

Cart totals split by charge phase: now is charged at checkout, future is charged with the next billing cycle.

breakdownCartBreakdown

Cart amounts split by item group. The groups products, setup_fee, surveys and shipping partition the cart items, so their totals add up to the cart total.

discountsCartDiscount[]
metadataEntityMetadata[]
adjustmentnumber
customs_feeinteger

Customs fee for the first shipment. Only applicable for dynamic shipping.

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments. Only applicable for dynamic shipping.

Defaults to 0.

balance_changeBalanceChange
statusstring

Possible values: initialized, expired, completed.

created_atstring

Format: date-time.

updated_atstring

Format: date-time.

available_datesstring[] | null
rangestring[] | null

Array of 2 elements which are the range of possible gifting or start dates

available_datesstring[] | null
rangestring[] | null

Array of 2 elements which are the range of possible gifting or start dates

idinteger
servicestring | null

Carrier service code. Only present for dynamic shipping methods.

carrier_idinteger | null

Shipping carrier ID. Only present for dynamic shipping methods.

carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

typestring

Possible values: shipping_option, local_delivery, local_pickup.

methodShippingOption | LocalDelivery | LocalPickup
shipping_feeinteger
future_shipping_feeinteger
customs_feeinteger

Customs fee for the first shipment

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments

Defaults to 0.

prohibited_productsinteger[]
idinteger
servicestring | null

Carrier service code. Only present for dynamic shipping methods.

carrier_idinteger | null

Shipping carrier ID. Only present for dynamic shipping methods.

carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

typestring

Possible values: shipping_option, local_delivery, local_pickup.

methodShippingOption | LocalDelivery | LocalPickup
shipping_feeinteger
future_shipping_feeinteger
customs_feeinteger

Customs fee for the first shipment

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments

Defaults to 0.

prohibited_productsinteger[]
idstring

Format: uuid.

customer_idinteger
customerCustomerData
attachedboolean
shop_idinteger
coupon_codestring | null
couponCoupon | null

Expandable link to the coupon

gift_card_codestring | null

Format: uuid.

gift_cardGiftCard | null

Expandable link to the gift card

referral_idinteger | null
currency_codestring
base_currency_codestring
shipping_method_idinteger
onboarding_template_idinteger | null
shipping_methodShippingMethod | null

Shipping method object

shipping_carrier_idinteger | null
shipping_carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

shipping_carrier_servicestring | null
shipping_address_idinteger | null
shipping_addressAddress | PickupInfo | null

Shipping address or pickup point object

billing_address_idinteger
billing_addressAddress | null

Billing address object

payment_method_idinteger
payment_methodPaymentMethod | null

Expandable link to the payment method

gift_infoGiftData

Gift details. On GET /cart/{cart_id}, a starts_at that is no longer available is moved to the earliest available gifting date.

starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen. On GET /cart/{cart_id}, a selected start that is no longer available is cleared, so the earliest available start date is returned.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger

Total after discounts, with tax. Tax is added on top when prices are tax-exclusive and is already part of the price when prices are tax-inclusive.

sub_totalinteger

Sum of item prices multiplied by quantity, before discounts. It does not include tax when prices are tax-exclusive and includes tax when prices are tax-inclusive.

discount_totalinteger
tax_totalinteger
tax_ratenumber
totalsCartTotals

Cart totals split by charge phase: now is charged at checkout, future is charged with the next billing cycle.

breakdownCartBreakdown

Cart amounts split by item group. The groups products, setup_fee, surveys and shipping partition the cart items, so their totals add up to the cart total.

discountsCartDiscount[]
metadataEntityMetadata[]
adjustmentnumber
customs_feeinteger

Customs fee for the first shipment. Only applicable for dynamic shipping.

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments. Only applicable for dynamic shipping.

Defaults to 0.

balance_changeBalanceChange
statusstring

Possible values: initialized, expired, completed.

created_atstring

Format: date-time.

updated_atstring

Format: date-time.

idstring

Format: uuid.

customer_idinteger
customerCustomerData
attachedboolean
shop_idinteger
coupon_codestring | null
couponCoupon | null

Expandable link to the coupon

gift_card_codestring | null

Format: uuid.

gift_cardGiftCard | null

Expandable link to the gift card

referral_idinteger | null
currency_codestring
base_currency_codestring
shipping_method_idinteger
onboarding_template_idinteger | null
shipping_methodShippingMethod | null

Shipping method object

shipping_carrier_idinteger | null
shipping_carrierShippingCarrier | null

Expandable link to the shipping carrier. Only present for dynamic shipping methods.

shipping_carrier_servicestring | null
shipping_address_idinteger | null
shipping_addressAddress | PickupInfo | null

Shipping address or pickup point object

billing_address_idinteger
billing_addressAddress | null

Billing address object

payment_method_idinteger
payment_methodPaymentMethod | null

Expandable link to the payment method

gift_infoGiftData

Gift details. On GET /cart/{cart_id}, a starts_at that is no longer available is moved to the earliest available gifting date.

starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen. On GET /cart/{cart_id}, a selected start that is no longer available is cleared, so the earliest available start date is returned.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger

Total after discounts, with tax. Tax is added on top when prices are tax-exclusive and is already part of the price when prices are tax-inclusive.

sub_totalinteger

Sum of item prices multiplied by quantity, before discounts. It does not include tax when prices are tax-exclusive and includes tax when prices are tax-inclusive.

discount_totalinteger
tax_totalinteger
tax_ratenumber
totalsCartTotals

Cart totals split by charge phase: now is charged at checkout, future is charged with the next billing cycle.

breakdownCartBreakdown

Cart amounts split by item group. The groups products, setup_fee, surveys and shipping partition the cart items, so their totals add up to the cart total.

discountsCartDiscount[]
metadataEntityMetadata[]
adjustmentnumber
customs_feeinteger

Customs fee for the first shipment. Only applicable for dynamic shipping.

Defaults to 0.

future_customs_feeinteger

Customs fee for recurring shipments. Only applicable for dynamic shipping.

Defaults to 0.

balance_changeBalanceChange
statusstring

Possible values: initialized, expired, completed.

created_atstring

Format: date-time.

updated_atstring

Format: date-time.