> ## Documentation Index
> Fetch the complete documentation index at: https://docs.camo.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Land Sales Import

> For customers with this module, we support a bulk sales import via CSV. The import expects each parcel within a sale to be represented as its own row, despite certain sales data being duplicated across rows in the case of a multi-parcel transaction.

Currently, the import focuses on recorded sales and thus must contain recorder document numbers (see below for reference).

***Required fields***

* **assessor\_parcel\_number** (String) - Parcel ID (APN, PIN, etc.); the county assessor parcel id for the parcel
* **county\_geoid** (String) - 5-digit County FIPs (ANSI) code for the county; the first 2 are the state FIPS code and the last 3 are the county identifier
* **sale\_date** (Date - YYYY-MM-DD) 
  * Example: 2024-05-01
* **sale\_price** (Decimal)
* **sale\_type** (String) - One of 'listing', 'private\_sale', 'other', 'auction'

Though each document field is optional by itself, at least one of **document\_book\_number, document\_page\_number,** or **document\_number** must be provided.

* **document\_book\_number** (String) - County recorder document book number (if applicable)
* **document\_page\_number** (String) - County recorder document page number (if applicable)
* **document\_number** (String) - County recorder document number (if applicable)

***Optional fields***

* **external\_id** (String) - Unique identifier for the transaction
* **improvements** (Boolean) - Valid values are true or false; indicates whether or not a parcel has improvements
* **legal\_description** (String) - Legal Description of parcel
* **mls\_number** (String) - MLS Listing #
* **comments** (String) - Any comments associated with this sale
* Buyers (1-4)
  * **buyer\_1\_full\_name** - (String) - Buyer one full name
  * **buyer\_1\_address** - (String) - Buyer one address, if not broken down by address components
  * Example: 220 N Smith St., Palatine, IL 60067
  * **buyer\_1\_address\_line\_1**
  * **buyer\_1\_address\_line\_2**
  * **buyer\_1\_address\_city**
  * **buyer\_1\_address\_state**
  * **buyer\_1\_address\_zipcode**
* Sellers (1-4)
  * **seller\_1\_full\_name** - (String) - Seller one full name
  * **seller\_1\_address** - (String) - Seller one address, if not broken down by address components
  * Example: 220 N Smith St., Palatine, IL 60067
  * **seller\_1\_address\_line\_1**
  * **seller\_1\_address\_line\_2**
  * **seller\_1\_address\_city**
  * **seller\_1\_address\_state**
  * **seller\_1\_address\_zipcode**
* Acreage - all default to 0 unless otherwise provided; each is a decimal value. If none of these are provided as granular acreage, the parcel boundary acreage will be used
  * **crp\_acres**
  * **dryland\_acres**
  * **irrigated\_acres**
  * **non\_production\_acres**
  * **pasture\_acres**
  * **site\_acres**
  * **wetland\_acres**
  * **woodland\_acres**
  * **wrp\_acres**

There are two sample files attached below for reference. One is a blank CSV that can be used as a template, containing all possible CSV headers supported by the import. Another shows an example of a single multi-parcel transaction and a sample of headers that might be included representing a subset of all.

* [Camo\_Sale\_multi\_apn\_sample.csv](/hc/en-us/article_attachments/28330470563351)
  (616 Bytes)
* [Camo\_Sale\_blank\_sample.csv](/hc/en-us/article_attachments/28330470568215)
  (1 KB)
