---
title: "Create a Commercial Invoice"
method: POST
path: "/ship/commercial-invoice"
tags: ["Commercial Invoice"]
---

# Create a Commercial Invoice

`POST /ship/commercial-invoice`

Generate a commercial invoice document for an international shipment, detailing the goods, their value, and customs information required for cross-border clearance.

**When to use:** Call this endpoint when shipping internationally and the carrier or destination country requires a commercial invoice. This is typically needed alongside or after label generation.

**Prerequisites:**
- Valid JWT authentication token (Bearer)
- Complete origin and destination addresses (including country)
- Shipment details with carrier and tracking number
- Package contents: item descriptions, quantities, unit values, weight, and HS codes

**Key behaviors:**
- Returns a downloadable commercial invoice PDF URL
- USD is the recommended currency to avoid issues during customs inspections
- Each item should include an HS code for proper tariff classification (use `/utils/classify-hscode` if needed)
- The invoice is attached to the shipment and can be uploaded to the carrier via `/ship/uploadDocuments`

## Request body

- object
  - `origin` object, required — Origin address information
    - `name` string, required — Name of the person
    - `company` string — Name of the company or business
    - `email` string, email — Email address
    - `phone_code` string — Country phone code
    - `phone` string, required — Phone number
    - `street` string, required — Street address
    - `number` string — Street number
    - `district` string — District or neighborhood
    - `city` string, required — City name
    - `state` string, required — State or province code (e.g., NL, TX, QC)
    - `country` string, required — ISO 3166-1 alpha-2 country code (e.g., MX, US, CO)
    - `postalCode` string, required — Zipcode value
    - `reference` string — Reference information for delivery
    - `address_id` integer — Unique identifier of a previously saved address in your Envia account. When provided, the saved address data is used and you can omit the other address fields. Retrieve saved address IDs from the Queries API (Get All Addresses).
    - `identificationNumber` string — Tax identification number
    - `category` integer — Address category
  - `destination` object, required — Destination address information
    - `name` string, required — Name of the person
    - `company` string — Name of the company or business
    - `email` string, email — Email address
    - `phone_code` string — Country phone code
    - `phone` string, required — Phone number
    - `street` string, required — Street address
    - `number` string — Street number
    - `district` string — District or neighborhood
    - `city` string, required — City name
    - `state` string, required — State or province code (e.g., NL, TX, QC). Retrieve valid codes from the Queries API (Get States by Country).
    - `country` string, required — ISO 3166-1 alpha-2 country code (e.g., MX, US, CO)
    - `postalCode` string, required — Zipcode value
    - `reference` string — Reference information for delivery
    - `address_id` integer — Unique identifier of a previously saved address in your Envia account. When provided, the saved address data is used and you can omit the other address fields. Retrieve saved address IDs from the Queries API (Get All Addresses).
    - `identificationNumber` string — Tax identification number
    - `category` integer — Address category
  - `shipment` object, required — Shipment information
    - `carrier` string, required — Carrier name
    - `trackingNumber` string, required — Tracking number generated when making the shipment
  - `packages` object[], required — List of packages
    - `items` object[], required — List of items in the package
      - `description` string, required — Description of the item
      - `productCode` string, required — HS Code of the item
      - `countryOfManufacture` string — Country where item was manufactured (ISO 3166-1 alpha-2 country code)
      - `quantity` integer, required — Quantity of the items
      - `price` number, required — Unit price of the item
  - `customsSettings` object, required — Customs settings for international shipments
    - `dutiesPaymentEntity` 'sender' | 'recipient', required — Payer of duties (Sender or Recipient)
    - `exportReason` 'sale' | 'gift' | 'sample' | 'return' | 'personal_effects' — Export type reason (Sale, Gift, Sample, Return, Personal effects)

## Response `200`

Commercial invoice created successfully

- object
  - `meta` string
  - `data` object
    - `carrier` string — Carrier code that generated the commercial invoice document
    - `trackingNumber` string — Associated tracking number
    - `billOfLading` string — URL to download the generated commercial invoice PDF

---

[API](https://skmtc.net/envia/apis/envia-shipping-api-complete-documentation.md) · [All operations](https://skmtc.net/envia/apis/envia-shipping-api-complete-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/envia/envia-shipping-api-complete-documentation/revisions/39f9208959d6/schema)
