# Resolver fields

Most writable endpoints let you point at a related record by *your* external key (or another natural key) instead of the Business Central number, so you never have to look the Business Central value first.

A resolver is a convenience column that works in both directions. On a write you send it; the endpoint finds the target record and sets the underlying foreign key for you. If it cannot find a match it errors, so SmartConnect is notified of a bad key. On a read the column returns the related record's Integration Id, so the same column maps cleanly whether SmartConnect is pushing data in or reading it back out.

## The common resolvers

| Column | Resolves | Seen on |
| --- | --- | --- |
| `customerIntegrationId` | Customer by its Integration Id | Sales documents, Contacts, Customer Payments |
| `vendorIntegrationId` | Vendor by its Integration Id | Purchase documents, Contacts, Vendor Payments |
| `itemIntegrationId` | Item by its Integration Id | Pricing lines, inventory adjustment lines |
| `itemNumber` | Sets `Type = Item` and the item No. in one shot | All document lines |
| `transferFrom/ToLocationIntegrationId` | Location by its Integration Id | Transfer Orders |
| `appliesToInvoiceIntegrationId` | Posted invoice by its Integration Id | Credit Memos, Payments |
| `balancingAccountNumber` | Bank *or* G/L account (polymorphic by type) | Journals, Payments |

> **Note:** Every resolver has a plain-number sibling (e.g. `customerNumber`). Send whichever key you hold.

## Where they show up

- [Sales Orders](https://eonesolutions.github.io/eone-bc-integration/core-salesOrders.md) and the other document endpoints to resolve the customer, item, and location on the header and its lines.
- [Customer Payments](https://eonesolutions.github.io/eone-bc-integration/core-customerPayments.md): settle a posted invoice by your own key with `appliesToInvoiceIntegrationId`.
- [The Integration Id](https://eonesolutions.github.io/eone-bc-integration/integration-id.md): the external-key contract these fields resolve against.
- [Working with SmartConnect](https://eonesolutions.github.io/eone-bc-integration/smartconnect.md): where resolver fields sit in a SmartConnect target map.
