# Map your fields to GETS

Match the fields in your sample invoice to GETS so your source data can be read as an invoice. You need an integration with a country, document type and representative sample payload.

> **Before you start**
>
> Follow [Create an integration](https://docs.complyance.io/one-platform/developer-portal/integration-engine/create/) through **Payload Selection**, or open an existing integration and choose **Edit GETS mapping**. GETS is the Complyance standard invoice format. Keep the source payload in your system’s format; the mapping connects your source fields to GETS fields.

## How the mapping screen works

**Field Mapping** has four tabs:

| Tab | What it holds |
| - | - |
| **Core Mapping** | The GETS fields every invoice uses: header, seller, buyer, lines, payment, totals |
| **Regional Mapping** | Fields for the network or region the country belongs to, such as Peppol IDs |
| **Country Mapping** | Fields only the selected country asks for. See [Map country fields](https://docs.complyance.io/one-platform/developer-portal/integration-engine/country-mapping/). |
| **Custom Fields** | Fields you add with **Add Custom Field** |

Each tab is a table with one row per GETS field:

| Column | What it shows |
| - | - |
| The GETS field | Its name, with **M** for mandatory, **CM** for conditionally mandatory, or **CF** for a custom field |
| **Source Header** | The field from your payload that fills it. Choose it from **Select header**. |
| **Reference Value** | The value of that field in your sample, so you can check the match |
| **Format Alignment** | How to read the value, for dates, times and amounts. See [Choose a format](https://docs.complyance.io/one-platform/developer-portal/integration-engine/gets-mapping/#choose-a-format). |

Your payload’s fields appear in **Select header** as paths: `invoice.no` for a field inside an object, `lines[].qty` for a field in each item of a list. Type in the search box to find one. Choose **None (Unmap field)** to clear a row.

When the payload is loaded, the Integration engine suggests matches for many fields automatically. Check each suggestion against **Reference Value** before you continue. **Re-run AI Mapping** suggests them again.

## A worked example

Your billing system sends this invoice:

```json title="Sample payload from your system"
{
  "invoice": {
    "no": "INV-2026-0142",
    "date": "09/10/2026",
    "currency": "AED"
  },
  "customer": {
    "name": "Gulf Retail LLC"
  },
  "lines": [
    {
      "desc": "Office chair",
      "qty": 4,
      "price": "1,250.00"
    }
  ]
}
```

In **Core Mapping**, you match the rows like this:

| GETS field | Source Header | Reference Value | Format Alignment |
| - | - | - | - |
| `header.documentNumber` | `invoice.no` | `INV-2026-0142` | |
| `header.issueDate` | `invoice.date` | `09/10/2026` | `DD/MM/YYYY` |
| `header.currency` | `invoice.currency` | `AED` | |
| `parties.buyer.name` | `customer.name` | `Gulf Retail LLC` | |
| `lineItems[].description` | `lines[].desc` | `Office chair` | |
| `lineItems[].quantity` | `lines[].qty` | `4` | |
| `lineItems[].price.amount` | `lines[].price` | `1,250.00` | `#,##0.00` |

Because `lines` is a list, each of its items becomes one invoice line. `09/10/2026` could be 9 October or 10 September, so the format tells GETS which: here, day first.

A real invoice needs more fields than this, such as the seller, tax details and totals. Work through every row marked **M**, then the **CM** rows that apply to your invoices.

## Match the fields

1. Open **Field Mapping** on the **Core Mapping** tab.
2. For each GETS field, choose the matching field from **Select header**. Map the field that carries the value, such as `invoice.no`, not a value typed in.
3. Choose a format for date, time and amount fields if the suggested one does not match your data.
4. Filter to **Unmapped only** to find what is left. The bar above the table shows **Pending Mandatory**: the mandatory fields that still have no source.
5. Repeat on **Regional Mapping** and **Country Mapping**, then choose **Next**. **Next** stays unavailable until every mandatory field is mapped.

**Mapped** means a field has a source. It does not prove your sample’s value passes every country rule. Run the test before using the integration.

For field definitions and requirements, use the [GETS field reference](https://docs.complyance.io/api-reference/gets/fields/). Select your country and document type there; do not copy a field list from another country or document type into this mapping.

## Choose a format

A format tells GETS how to read a value that can be written in more than one way. **Format Alignment** offers one for date, time and amount fields, once the field is mapped. If you do not choose, the format is worked out from the sample value; check it.

| Kind of value | Examples of the formats offered |
| - | - |
| Date | `YYYY-MM-DD`, `DD/MM/YYYY`, `MM/DD/YYYY`, `DD.MM.YYYY`, `YYYYMMDD`, `DD MMM YYYY` |
| Time | `HH:mm`, `HH:mm:ss`, `hh:mm A`, `HH:mm:ss[Z]` |
| Amount | `0.00`, `#,##0.00`, `#.##0,00` (comma as the decimal mark), `round-half-up:2`, `truncate:2` |

Type in **Type to search formats…** to find one. Choose the format your system actually writes, not the one the country uses: GETS converts it.

## If something goes wrong

**A required field has no matching source:** add it to the invoice data your system supplies, then use a sample that contains it. Selecting an unrelated field only hides the gap.

**`Please map this field first to select a format`:** choose the **Source Header** before the format.

**The mapping looks right but validation fails:** compare the reported field and message with the sample value in [Test your mapping](https://docs.complyance.io/one-platform/developer-portal/integration-engine/test/). A wrong format is a common cause for dates and amounts.

Next, [map country fields](https://docs.complyance.io/one-platform/developer-portal/integration-engine/country-mapping/) for this invoice.

Source: https://docs.complyance.io/one-platform/developer-portal/integration-engine/gets-mapping/
