# Submit Cart

Submit a `Cart` given its `cart_id`. This submits carts to any relevant E-Commerce platforms.

***

### Submission Response Scenarios

The following sample responses are meant to prepare you for the possible success or failure scenarios.

<details>

<summary>All Bags Succeed</summary>

```json
{
  "id": 10000,
  "token": "fz8x7gksdjsy2p9fdlonw7k9svwjso4b",
  "user_id": 10000,
  "app_id": 10000,
  "developer_id": 10000,
  "customer": {
    "user_id": 10000,
    "first_name": "Super",
    "last_name": "Mario",
    "email": "super@mar.io",
    "name": "Super Mario"
  },
  "bags": [
    {
      "id": 11111,
      "order_id": 10000,
      "merchant_id": 10000,
      "app_id": 10000,
      "status": "ACCEPTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "PAID",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10000,
          "app_id": 10000,
          "sku_id": 99999,
          "external_id": "1234567890",
          "name": "Nintendo Entertainment System",
          "brand": "Nintendo",
          "quantity": 2,
          "price": 9999,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 19998
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "07d19139fc0f4558687c1900c696f071",
        "label": "Priority Mail",
        "price": 644
      },
      "sub_total": 19998,
      "shipping_total": 644,
      "tax_total": 2070,
      "discount_total": 0,
      "total": 22712,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22222,
      "bag_status": "ACCEPTED",
      "merchant_name": "Legacy Games"
    },
    {
      "id": 22223,
      "order_id": 10000,
      "merchant_id": 10001,
      "app_id": 10000,
      "status": "ACCEPTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "PAID",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10001,
          "app_id": 10000,
          "sku_id": 99998,
          "external_id": "1234567890",
          "name": "He-Man And The Masters Of The Universe – Castle Grayskull",
          "brand": "Mattel",
          "quantity": 1,
          "price": 10000,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 10000
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "ground-shipping",
        "label": "Ground Shipping",
        "price": 0
      },
      "sub_total": 10000,
      "shipping_total": 0,
      "tax_total": 900,
      "discount_total": 0,
      "total": 10900,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22223,
      "bag_status": "ACCEPTED",
      "merchant_name": "Retro Toys"
    }
  ],
  "shipping_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "SHIPPING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "billing_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "BILLING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "sub_total": 29998,
  "shipping_total": 644,
  "tax_total": 2970,
  "discount_total": 0,
  "total": 33612,
  "status": "COMPLETED",
  "currency": "USD",
  "channel": "APP",
  "currency_symbol": "$",
  "payment_transactions": [
    {
      "amount": 33612,
      "currency": "USD",
      "capture_status": "CAPTURED",
      "status": "CAPTURED"
    }
  ],
  "guest": true,
  "order_id": 10000
}
```

</details>

<details>

<summary>Some Bags Fail</summary>

```json
{
  "id": 10000,
  "token": "fz8x7gksdjsy2p9fdlonw7k9svwjso4b",
  "user_id": 10000,
  "app_id": 10000,
  "developer_id": 10000,
  "customer": {
    "user_id": 10000,
    "first_name": "Super",
    "last_name": "Mario",
    "email": "super@mar.io",
    "name": "Super Mario"
  },
  "bags": [
    {
      "id": 11111,
      "order_id": 10000,
      "merchant_id": 10000,
      "app_id": 10000,
      "status": "ACCEPTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "PAID",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10000,
          "app_id": 10000,
          "sku_id": 99999,
          "external_id": "1234567890",
          "name": "Nintendo Entertainment System",
          "brand": "Nintendo",
          "quantity": 2,
          "price": 9999,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 19998
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "07d19139fc0f4558687c1900c696f071",
        "label": "Priority Mail",
        "price": 644
      },
      "sub_total": 19998,
      "shipping_total": 644,
      "tax_total": 2070,
      "discount_total": 0,
      "total": 22712,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22222,
      "bag_status": "ACCEPTED",
      "merchant_name": "Legacy Games"
    },
    {
      "id": 22223,
      "order_id": 10000,
      "merchant_id": 10001,
      "app_id": 10000,
      "status": "REJECTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "VOIDED",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10001,
          "app_id": 10000,
          "sku_id": 99998,
          "external_id": "1234567890",
          "name": "He-Man And The Masters Of The Universe – Castle Grayskull",
          "brand": "Mattel",
          "quantity": 1,
          "price": 10000,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 10000
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "ground-shipping",
        "label": "Ground Shipping",
        "price": 0
      },
      "sub_total": 10000,
      "shipping_total": 0,
      "tax_total": 900,
      "discount_total": 0,
      "total": 10900,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22223,
      "bag_status": "REJECTED",
      "merchant_name": "Retro Toys"
    }
  ],
  "shipping_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "SHIPPING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "billing_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "BILLING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "sub_total": 19998,
  "shipping_total": 644,
  "tax_total": 2070,
  "discount_total": 0,
  "total": 22712,
  "status": "COMPLETED",
  "currency": "USD",
  "channel": "APP",
  "currency_symbol": "$",
  "payment_transactions": [
    {
      "amount": 22712,
      "currency": "USD",
      "capture_status": "CAPTURED",
      "status": "CAPTURED"
    }
  ],
  "guest": true,
  "order_id": 10000
}
```

</details>

<details>

<summary>All Bags Fail</summary>

```json
{
  "id": 10000,
  "token": "fz8x7gksdjsy2p9fdlonw7k9svwjso4b",
  "user_id": 10000,
  "app_id": 10000,
  "developer_id": 10000,
  "customer": {
    "user_id": 10000,
    "first_name": "Super",
    "last_name": "Mario",
    "email": "super@mar.io",
    "name": "Super Mario"
  },
  "bags": [
    {
      "id": 11111,
      "order_id": 10000,
      "merchant_id": 10000,
      "app_id": 10000,
      "status": "REJECTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "VOIDED",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10000,
          "app_id": 10000,
          "sku_id": 99999,
          "external_id": "1234567890",
          "name": "Nintendo Entertainment System",
          "brand": "Nintendo",
          "quantity": 2,
          "price": 9999,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 19998
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "07d19139fc0f4558687c1900c696f071",
        "label": "Priority Mail",
        "price": 644
      },
      "sub_total": 19998,
      "shipping_total": 644,
      "tax_total": 2070,
      "discount_total": 0,
      "total": 22712,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22222,
      "bag_status": "REJECTED",
      "merchant_name": "Legacy Games"
    },
    {
      "id": 22223,
      "order_id": 10000,
      "merchant_id": 10001,
      "app_id": 10000,
      "status": "REJECTED",
      "fulfillment_status": "PROCESSING",
      "financial_status": "VOIDED",
      "skus": [
        {
          "id": 10000,
          "merchant_id": 10001,
          "app_id": 10000,
          "sku_id": 99998,
          "external_id": "1234567890",
          "name": "He-Man And The Masters Of The Universe – Castle Grayskull",
          "brand": "Mattel",
          "quantity": 1,
          "price": 10000,
          "weight": 1,
          "available": true,
          "status": "PROCESSING",
          "product_type": "PHYSICAL",
          "custom": false,
          "line_price": 10000
        }
      ],
      "shipping_method": {
        "carrier": "USPS",
        "shipping_method_id": "ground-shipping",
        "label": "Ground Shipping",
        "price": 0
      },
      "sub_total": 10000,
      "shipping_total": 0,
      "tax_total": 900,
      "discount_total": 0,
      "total": 10900,
      "currency": "USD",
      "external_currency": "USD",
      "channel": "APP",
      "platform": "SHOPIFY",
      "bag_id": 22223,
      "bag_status": "REJECTED",
      "merchant_name": "Retro Toys"
    }
  ],
  "shipping_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "SHIPPING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "billing_address": {
    "name": "Super Mario",
    "city": "Seattle",
    "state": "WA",
    "country": "US",
    "postal_code": "98121",
    "phone": "1234567890",
    "type": "BILLING",
    "address_1": "2815 Elliott Ave, Unit 100",
    "first_name": "Super",
    "last_name": "Mario"
  },
  "sub_total": 19998,
  "shipping_total": 644,
  "tax_total": 2070,
  "discount_total": 0,
  "total": 22712,
  "status": "IN_PROGRESS",
  "currency": "USD",
  "channel": "APP",
  "currency_symbol": "$",
  "payment_transactions": [
    {
      "amount": 22712,
      "currency": "USD",
      "capture_status": "CANCELLED"
    }
  ],
  "guest": true,
  "order_id": 10000
}
```

</details>

\---

### Handling Cart Submission Errors

While we strive to ensure that cart submission succeeds, there may occassionally be scenarios where cart submission fails in a way where it cannot be automatically reconciled. The following examples show what to expect when submission failure occurs for single-bag and multi-bag carts.

<details>

<summary>Single Bag Cart Submission Errors</summary>

When the submission of a Violet cart containing a single bag results in a failed sumission, the error will be surfaced as an API Exception in the response body. This error will typically be surface with a `400` or `422` HTTP status.

<sub>Example: Response when single-bag cart submission fails due to a Sku being out of stock in the external commerce platform.</sub>

```json
{
  "message": "Could not complete external cart: One or more items in the cart are no longer available for purchase.",
  "error": "external_cart_completion_error",
  "code": 2503,
  "data": {
    "skus": [
      {
        "message": "This item is no longer available for purchase.",
        "name": "Sample Product",
        "sku_id": 99999,
        "order_sku_id": 88888,
        "bag_id": 77777
      }
    ]
  }
}
```

</details>

<details>

<summary>Multi-Bag Cart Submission Errors</summary>

When the submission of a Violet cart containing multiple bags results in one or more failed submissions, any error(s) will be nested in the `"errors": []` array on the `Order` object.

<sub>Example: Response when mult-bag cart submission fails due to a Sku being out of stock in the external commerce platform. When the</sub> <sub>`entity_type`</sub> <sub>is</sub> <sub>`SKU`</sub><sub>, the</sub> <sub>`entity_id`</sub> <sub>property will map to the</sub> <sub>`sku_id`</sub> <sub>property on a Sku in the Cart.</sub>

```json
{
  ...
  "errors": [{
    "id": 55555,
    "order_id": 66666,
    "bag_id": 77777,
    "entity_id": "99999",
    "entity_type": "SKU",
    "type": "EXTERNAL_SUBMIT_CART",
    "message": "This item is no longer available for purchase.",
    "date_created": "2023-11-07T05:31:56Z",
    "platform": "SHOPIFY"
  }]
  ...
}
```

</details>

***

{% openapi src="/files/6wHrOR6auqy1RgLt3CZI" path="/checkout/cart/{cart\_id}/submit" method="post" expanded="true" %}
[order-service.yaml](https://3937396275-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8lXIp71Ct5qCUhXjko2q%2Fuploads%2Fgit-blob-b77a2b241ffb937bc7e7164b2dd2c53cb538ac3c%2Forder-service.yaml?alt=media)
{% endopenapi %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.violet.io/api-reference/orders-and-checkout/cart-completion/submit-cart.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
