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 cancellationUpdate subscription payment methodGet shipping methodsGet local pickupsCreate a subscription itemShow a subscription itemUpdate a subscription itemRemove a subscription itemUpdate a subscription item's preferencesUpdate a subscription item's bundle
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

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-d701748fc92", "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }, "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": "g290f1ee-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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "summary_items": [ { "item_id": "g290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }

Get cart by ID

GET /cart/{cart_id}

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

Path parameters

cart_idRequiredstring

Cart ID

ReturnsCart

Cart object response

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-d701748fc92", "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }, "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": "g290f1ee-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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "summary_items": [ { "item_id": "g290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }

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

ReturnsCart

Cart object response

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" } ] } ] }'
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-d701748fc92", "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }, "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": "g290f1ee-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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "summary_items": [ { "item_id": "g290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }

Get cart gifting dates

GET /cart/{cart_id}/gifting_dates

Available gifting dates.

Path parameters

cart_idRequiredstring

Cart ID

ReturnsStartDates

Gifting dates object

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

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

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

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

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-d701748fc92", "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }, "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": "g290f1ee-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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "summary_items": [ { "item_id": "g290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }

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

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-d701748fc92", "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }, "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": "g290f1ee-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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "summary_items": [ { "item_id": "g290f1ee-6c54-4b01-90e6-d701748f0589", "type": "one_time", "product_id": 8, "quantity": 2, "price": 799, "total": 1458, "sub_total": 1458, "tax_amount": 160, "tax_rate": 0.01, "tax_inclusive": false, "discount": 300, "bundle": {}, "discounts": [ {} ], "charge_now": true, "subscription": {}, "created_at": "2022-04-01 00:00:00", "updated_at": "2022-04-01 00:00:00" } ], "total": 1458, "sub_total": 1558, "discount_total": 300, "tax_total": 16, "tax_rate": 0.1, "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-01 00:00:00", "updated_at": "2022-04-01 00:00:00" }
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
starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger
sub_totalinteger
discount_totalinteger
tax_totalinteger
tax_ratenumber
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
starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger
sub_totalinteger
discount_totalinteger
tax_totalinteger
tax_ratenumber
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

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
starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger
sub_totalinteger
discount_totalinteger
tax_totalinteger
tax_ratenumber
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
starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger
sub_totalinteger
discount_totalinteger
tax_totalinteger
tax_ratenumber
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
starts_atstring

Subscription start date (Y-m-d); the customer-selected start, or the earliest available start date when none was chosen.

Format: date.

itemsCartItem[]
summary_itemsSummaryCartItem[]
totalinteger
sub_totalinteger
discount_totalinteger
tax_totalinteger
tax_ratenumber
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.