---
title: "POST /api/v3/orders"
method: POST
path: "/api/v3/orders"
tags: ["orders"]
---

# POST /api/v3/orders

`POST /api/v3/orders`

Create orders.

## Request body

- Order — Order serializer
  - `id` string, required
  - `shipments` Shipment[], required
    - `sender` Sender, required — Person who will receive the shipment.
      - `firstName` string, required — Name of the person receiving or sending the shipment.
      - `lastName` string, required — Last name of the person receiving or sending the shipment.
      - `phone` string, required — Phone of the person receiving or sending the shipment. Must include the international code (+52, +51)
      - `email` string, email, required — Email of the person receiving or sending the shipment.
    - `recipient` Recipient, required — Person who will receive the shipment.
      - `firstName` string, required — Name of the person receiving or sending the shipment.
      - `lastName` string, required — Last name of the person receiving or sending the shipment.
      - `phone` string, required — Phone of the person receiving or sending the shipment. Must include the international code (+52, +51)
      - `email` string, email, required — Email of the person receiving or sending the shipment.
    - `origin` Location, required — Location where the package is picked up. Depending on the flow you choose, you must send different parameters. A location is a geographical point that can be taken as the origin and/or destination of a shipment. There are 3 ways in which you can define a location, feel free to choose the one that best suits your business rules. Each one is described below. 1. Coords-based It is the option with the best precision to define an origin or destination. Latitude and longitude are taken to define the location 2. LocationId-based A LocationId is a uuid that identifies a single geographic point. The locationId is generated by this API (check out the Get Location id request in Locations folder). By using locationId, no further data needs to be passed. It is useful when you have the same point in several shipments since you can reuse the locationId. 3. Address string-based In this option the client sends only the address. We will process the address to obtain the other data. However, if the address does not contain information necessary to locate it, the system will return a 400 error and the order will not be created, so you must handle the error. It is important to emphasize that in the two previous flows there is no possibility to reject an order for the location
      - `locationId` string, uuid — LocationId is a uuid that identifies a single geographic point.
      - `lat` number, double — Longitude coordinates
      - `lng` number, double — Lattitude coordinates
      - `address` string — Text sentence that references the location. This address will be printed on the labels.
      - `country` 'MEX' | 'COL' | 'CHL' | 'PER'
      - `reference` string — Any other text that enrich the address of the location such apartment, Suite, Box number, Tower, etc.
      - `zipcode` string, nullable — Location zipcode. If it is not included we will try to extract the zipcode from the address. So if your address does not include zipcode, you must include it in this field
      - `city` string — Text that reference the city of the location
    - `destination` Location, required — Location where the package is picked up. Depending on the flow you choose, you must send different parameters. A location is a geographical point that can be taken as the origin and/or destination of a shipment. There are 3 ways in which you can define a location, feel free to choose the one that best suits your business rules. Each one is described below. 1. Coords-based It is the option with the best precision to define an origin or destination. Latitude and longitude are taken to define the location 2. LocationId-based A LocationId is a uuid that identifies a single geographic point. The locationId is generated by this API (check out the Get Location id request in Locations folder). By using locationId, no further data needs to be passed. It is useful when you have the same point in several shipments since you can reuse the locationId. 3. Address string-based In this option the client sends only the address. We will process the address to obtain the other data. However, if the address does not contain information necessary to locate it, the system will return a 400 error and the order will not be created, so you must handle the error. It is important to emphasize that in the two previous flows there is no possibility to reject an order for the location
      - `locationId` string, uuid — LocationId is a uuid that identifies a single geographic point.
      - `lat` number, double — Longitude coordinates
      - `lng` number, double — Lattitude coordinates
      - `address` string — Text sentence that references the location. This address will be printed on the labels.
      - `country` 'MEX' | 'COL' | 'CHL' | 'PER'
      - `reference` string — Any other text that enrich the address of the location such apartment, Suite, Box number, Tower, etc.
      - `zipcode` string, nullable — Location zipcode. If it is not included we will try to extract the zipcode from the address. So if your address does not include zipcode, you must include it in this field
      - `city` string — Text that reference the city of the location
    - `payments` Payment — Payment options are included in this section
      - `insured` boolean
      - `insuredValue` number, double — Amount in local currency for which the shipment will be insured. The shipment will be insured in case of damage, loss, theft. Extra fees could be applied, check with your support agent.
      - `cashOnDelivery` Embedded — Serializer for EmbeddedDocuments. Skips id field and uniqueness validation. When saving, skips calling instance.save
        - `amount` number, double, required
        - `currency` 'COP' | 'MXN' | 'CLP' | 'PEN' | 'ARP', required
    - `options` Option, required — Options to customize the shipment.
      - `pickUpAfter` string, date-time — Date time from which the shipment is available for pickup
      - `deliveryBetween` object
      - `requiresIdentification` boolean
      - `requiresSignature` boolean
      - `twoFactorAuth` boolean — Code is required to mark the order as delivered. Needs to be activated previously
      - `notes` string — Notes that will be displayed on the label
    - `items` Item[], required
      - `id` string, uuid, nullable, required
      - `size` 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'unknown' | '-', required
      - `description` string
      - `weight` integer, required — Measurement in grams of weight
      - `length` integer — Horizontal measurement in centimeters take from one end to the other of the longer or longest side of an object
      - `width` integer — Horizontal measurement in centimeters taken from one end to the other of theshorter or shortest side of an object
      - `height` integer — Vertical measure in centimeters of distance from base to top
    - `id` string, required
    - `internalKey` string, nullable — Unique shipment identifier. You can use this field to store your unique identifier of the shipment. All of our tracking systems support searching by internalKey. We strongly suggest you always use this field and make sure it is unique.If its not given we will assign an uuid for this field.
    - `deliveryType` 'SMD' | 'SPT' | '99M' | 'CO2F' | 'RET' | 'NAL' | 'TLM' | 'P2P', required — Indicate the Delivery Type which can be SameDay(SMD), Sprint (SPT), 99minutos(99M), Co2Free (CO2F), Reverse(RET) Tailor made (TLM), PuntoaPunto (P2P). Be careful submitting accepted abbreviations.
    - `trackingId` integer, required
  - `account` object, required
  - `billId` integer, required
  - `transactionId` integer, required
  - `channelId` integer, required
  - `draft` boolean — Indicates if an order is not yet finalized. The order is only processed when is confirmed. By default it's false.
  - `deactivated` boolean, required
  - `createdAt` string, date-time, required
  - `expiresAt` string, date-time, required
  - `migratedBy` 'stream' | 'batch', required

## Response `201`

- Order — Order serializer
  - `id` string, required
  - `shipments` Shipment[], required
    - `sender` Sender, required — Person who will receive the shipment.
      - `firstName` string, required — Name of the person receiving or sending the shipment.
      - `lastName` string, required — Last name of the person receiving or sending the shipment.
      - `phone` string, required — Phone of the person receiving or sending the shipment. Must include the international code (+52, +51)
      - `email` string, email, required — Email of the person receiving or sending the shipment.
    - `recipient` Recipient, required — Person who will receive the shipment.
      - `firstName` string, required — Name of the person receiving or sending the shipment.
      - `lastName` string, required — Last name of the person receiving or sending the shipment.
      - `phone` string, required — Phone of the person receiving or sending the shipment. Must include the international code (+52, +51)
      - `email` string, email, required — Email of the person receiving or sending the shipment.
    - `origin` Location, required — Location where the package is picked up. Depending on the flow you choose, you must send different parameters. A location is a geographical point that can be taken as the origin and/or destination of a shipment. There are 3 ways in which you can define a location, feel free to choose the one that best suits your business rules. Each one is described below. 1. Coords-based It is the option with the best precision to define an origin or destination. Latitude and longitude are taken to define the location 2. LocationId-based A LocationId is a uuid that identifies a single geographic point. The locationId is generated by this API (check out the Get Location id request in Locations folder). By using locationId, no further data needs to be passed. It is useful when you have the same point in several shipments since you can reuse the locationId. 3. Address string-based In this option the client sends only the address. We will process the address to obtain the other data. However, if the address does not contain information necessary to locate it, the system will return a 400 error and the order will not be created, so you must handle the error. It is important to emphasize that in the two previous flows there is no possibility to reject an order for the location
      - `locationId` string, uuid — LocationId is a uuid that identifies a single geographic point.
      - `lat` number, double — Longitude coordinates
      - `lng` number, double — Lattitude coordinates
      - `address` string — Text sentence that references the location. This address will be printed on the labels.
      - `country` 'MEX' | 'COL' | 'CHL' | 'PER'
      - `reference` string — Any other text that enrich the address of the location such apartment, Suite, Box number, Tower, etc.
      - `zipcode` string, nullable — Location zipcode. If it is not included we will try to extract the zipcode from the address. So if your address does not include zipcode, you must include it in this field
      - `city` string — Text that reference the city of the location
    - `destination` Location, required — Location where the package is picked up. Depending on the flow you choose, you must send different parameters. A location is a geographical point that can be taken as the origin and/or destination of a shipment. There are 3 ways in which you can define a location, feel free to choose the one that best suits your business rules. Each one is described below. 1. Coords-based It is the option with the best precision to define an origin or destination. Latitude and longitude are taken to define the location 2. LocationId-based A LocationId is a uuid that identifies a single geographic point. The locationId is generated by this API (check out the Get Location id request in Locations folder). By using locationId, no further data needs to be passed. It is useful when you have the same point in several shipments since you can reuse the locationId. 3. Address string-based In this option the client sends only the address. We will process the address to obtain the other data. However, if the address does not contain information necessary to locate it, the system will return a 400 error and the order will not be created, so you must handle the error. It is important to emphasize that in the two previous flows there is no possibility to reject an order for the location
      - `locationId` string, uuid — LocationId is a uuid that identifies a single geographic point.
      - `lat` number, double — Longitude coordinates
      - `lng` number, double — Lattitude coordinates
      - `address` string — Text sentence that references the location. This address will be printed on the labels.
      - `country` 'MEX' | 'COL' | 'CHL' | 'PER'
      - `reference` string — Any other text that enrich the address of the location such apartment, Suite, Box number, Tower, etc.
      - `zipcode` string, nullable — Location zipcode. If it is not included we will try to extract the zipcode from the address. So if your address does not include zipcode, you must include it in this field
      - `city` string — Text that reference the city of the location
    - `payments` Payment — Payment options are included in this section
      - `insured` boolean
      - `insuredValue` number, double — Amount in local currency for which the shipment will be insured. The shipment will be insured in case of damage, loss, theft. Extra fees could be applied, check with your support agent.
      - `cashOnDelivery` Embedded — Serializer for EmbeddedDocuments. Skips id field and uniqueness validation. When saving, skips calling instance.save
        - `amount` number, double, required
        - `currency` 'COP' | 'MXN' | 'CLP' | 'PEN' | 'ARP', required
    - `options` Option, required — Options to customize the shipment.
      - `pickUpAfter` string, date-time — Date time from which the shipment is available for pickup
      - `deliveryBetween` object
      - `requiresIdentification` boolean
      - `requiresSignature` boolean
      - `twoFactorAuth` boolean — Code is required to mark the order as delivered. Needs to be activated previously
      - `notes` string — Notes that will be displayed on the label
    - `items` Item[], required
      - `id` string, uuid, nullable, required
      - `size` 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'unknown' | '-', required
      - `description` string
      - `weight` integer, required — Measurement in grams of weight
      - `length` integer — Horizontal measurement in centimeters take from one end to the other of the longer or longest side of an object
      - `width` integer — Horizontal measurement in centimeters taken from one end to the other of theshorter or shortest side of an object
      - `height` integer — Vertical measure in centimeters of distance from base to top
    - `id` string, required
    - `internalKey` string, nullable — Unique shipment identifier. You can use this field to store your unique identifier of the shipment. All of our tracking systems support searching by internalKey. We strongly suggest you always use this field and make sure it is unique.If its not given we will assign an uuid for this field.
    - `deliveryType` 'SMD' | 'SPT' | '99M' | 'CO2F' | 'RET' | 'NAL' | 'TLM' | 'P2P', required — Indicate the Delivery Type which can be SameDay(SMD), Sprint (SPT), 99minutos(99M), Co2Free (CO2F), Reverse(RET) Tailor made (TLM), PuntoaPunto (P2P). Be careful submitting accepted abbreviations.
    - `trackingId` integer, required
  - `account` object, required
  - `billId` integer, required
  - `transactionId` integer, required
  - `channelId` integer, required
  - `draft` boolean — Indicates if an order is not yet finalized. The order is only processed when is confirmed. By default it's false.
  - `deactivated` boolean, required
  - `createdAt` string, date-time, required
  - `expiresAt` string, date-time, required
  - `migratedBy` 'stream' | 'batch', required

## Other responses

- `202`
- `400`
- `401`
- `412`

---

[API](https://skmtc.net/99minutos/apis/api-version-3.md) · [All operations](https://skmtc.net/99minutos/apis/api-version-3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/99minutos/api-version-3/versions/3eca3996fd97/schema)
