---
title: "Import Breeding Contracts and Shipments from an EXCEL file"
url: "https://documentation.crioonline.com/en/article/import-breeding-contracts-and-shipments-from-an-excel-file"
language: "en"
last_updated: "2026-08-30T12:19:21.737Z"
---

# Import Breeding Contracts and Shipments from an EXCEL file

Using a template Excel file, you can import all your breeding contracts and shipment records.

## `Contracts` Sheet

The `Contracts` sheet is required. Column headers must remain exactly as shown below.

| Column | Required value? | Description |
| --- | --- | --- |
| `SALE_REF` | Conditional | Workbook reference used to connect a sale with its shipments. It is required and must be unique when the `Shipments` sheet contains records. It may be omitted when there are no shipments. Example: `S001`. |
| `STALLION_ID` | Conditional | Internal CRIO stallion ID. Required when `STALLION_NAME` is not provided. If both fields are provided, the ID takes precedence. |
| `STALLION_NAME` | Conditional | Name of an existing stallion in CRIO. Required when `STALLION_ID` is not provided. |
| `OWNER_NAME` | Yes | Name of the contract buyer or owner. It is used to find or create the contact. |
| `OWNER_ID` | No | Owner identification or document number. It is used first when searching for an existing contact. |
| `OWNER_PHONE` | No | Owner’s primary telephone number. |
| `OWNER_EMAIL` | No | Owner’s email address. |
| `OWNER_CITY` | No | Owner’s city and country. |
| `OWNER_ADDRESS` | No | Owner’s address. |
| `DATE` | Yes | Date of the breeding sale or contract. |
| `CONTRACT` | No | Contract number. When provided, it is used to detect duplicate sales. |
| `INVOICE` | No | Invoice number associated with the sale. |
| `CURRENCY` | Conditional | Currency configured in CRIO. When `AMOUNT` is greater than zero and currency is empty, the account’s preferred currency is used. |
| `AMOUNT` | No | Sale amount. When greater than zero, the corresponding accounting entry is created. It cannot be negative. |
| `COMMENTS` | No | Additional comments about the sale. |
| `MARE_NAME` | No | Name of the mare receiving the semen. |
| `MARE_ID` | No | Mare identification or registration number. |
| `MARE_MICROCHIP` | No | Mare microchip number. |
| `MARE_INSEMINATION_DATE` | No | Mare insemination date. |

> Even when some values are optional, all headers listed above must remain in the `Contracts` sheet, except `SALE_REF` when no shipments are being imported.

## `Shipments` Sheet

The `Shipments` sheet is optional. It may contain multiple shipments associated with the same sale.

| Column | Required value? | Description |
| --- | --- | --- |
| `SALE_REF` | Yes | Sale reference defined in the `Contracts` sheet. It must exactly match a valid reference in that sheet. |
| `SHIPMENT_DATE` | Yes | Date on which the shipment was made. |
| `SENDER` | No | Person, company, or facility sending the semen. |
| `RECIPIENT` | No | Person, clinic, or facility receiving the semen. |
| `PHONE` | No | Recipient’s contact telephone number. |
| `ADDRESS` | No | Delivery address. |
| `CARRIER` | No | Shipping or courier company used for the shipment. |
| `TRACKING_NUMBER` | No | Shipment tracking number. |
| `COMMENTS` | No | Additional comments about the shipment. |

> When the `Shipments` sheet contains records, all its headers must exist, even when optional values are left blank.

## NOTES AND BUSINESS RULES

1.  Sheet names must be exactly `Contracts` and `Shipments`.
2.  The `Contracts` sheet is required. The `Shipments` sheet is optional and may be omitted.
3.  If `Shipments` does not exist or contains no records, `SALE_REF` column is not required in `Contracts`.
4.  If `Shipments` contains records:
5.  -   Every sale/contract must have a `SALE_REF`.
    -   Each reference must be unique within `Contracts`.
    -   Every shipment must contain an existing `SALE_REF`.
    -   One sale may have multiple shipments.
6.  `STALLION_ID` takes precedence over `STALLION_NAME`.
7.  When the ID is not provided, the stallion is matched by name within your the account:
8.  -   Matching ignores capitalization, accents, and repeated spaces.
    -   There must be exactly one match.
    -   The importer does not automatically create stallions.
    -   If no stallion is found or multiple stallions share the same name, the row is rejected.
9.  The owner is matched first by `OWNER_ID` and then by `OWNER_NAME`. If no contact exists, a new contact of type customer is created.
10.  A sale/contract is considered a duplicate:
11.  -   By `CONTRACT` when a contract number is provided.
     -   By owner, stallion, and date when no contract number is provided.
12.  An existing sale is not created again, but it may still be used to associate shipments listed in `Shipments`.
13.  Every imported shipment:
14.  -   Is connected to the sale identified by `SALE_REF`.
     -   Inherits the stallion and customer from the sale.
     -   Is created with `Shipped` status.
     -   Is recorded as non-frozen semen, thus it does not consume semen from a tank.
     -   Does not send email notifications.
15.  When a shipment is imported, a sale in its initial state is changed to shipped status.
16.  Duplicate shipments are detected using:
17.  -   Sale, shipment date, and tracking number; or
     -   Sale, shipment date, recipient, and address when no tracking number is provided.
18.  Accepted date formats include native Excel dates and formats such as `YYYY-MM-DD`, `DD/MM/YYYY`, and `MM/DD/YYYY`.
19.  Valid rows are imported, while invalid rows are reported individually when the import finishes.
