> For the complete documentation index, see [llms.txt](https://docs.harmony.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.harmony.io/integrations/saas-applications/navan.md).

# Navan

Connect Navan to sync expense spend per vendor, surfacing software paid by card or reimbursed as contracts in Harmony

Navan is a travel and expense management platform. Connecting Navan to Harmony turns your expense spend into vendor contracts: every vendor your team pays through Navan, on a Navan card, a linked corporate card or an approved reimbursement, appears in the Contracts page with its recent charges and the people who pay for it. Scope the sync to your software GL codes and Navan becomes a clear view of software bought outside procurement.

#### What the Navan integration enables

| Capability                 | Description                                                                                                     |
| -------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Expense spend as contracts | One contract per vendor, built from the last 59 days of expenses, refreshed daily                               |
| Software-only scoping      | Sync only expenses booked to the GL codes you use for software, so travel and meals stay out                    |
| Catalog matching           | Optionally keep only vendors that match Harmony's application catalog                                           |
| Links to your applications | A Navan contract links to the matching application already in Harmony                                           |
| Who pays                   | Each charge names the card holder or claimant, and the most frequent one becomes the contract's billing contact |

***

#### Prerequisites

1. **Navan Expense.** Harmony reads spend from Navan's Expense API, so a travel-only Navan account has nothing to sync.
2. **API access enabled by Navan.** Navan turns on API access per company; see Step 1.
3. **A Navan admin** who can create API credentials.
4. **A Harmony account** with admin privileges.

***

#### Connect Navan to Harmony

**Step 1: Ask Navan to enable API access**

Contact Navan support or your Navan account manager and ask them to enable the **Public API** for your company with **Expense API (transaction) access**. For example:

> We're connecting Navan to Harmony and need API access. Please enable the Public API for our company and turn on Expense API (transaction) access, so an API credential can read our expense transactions.

{% hint style="warning" %}
Do this first. Until Navan enables it, Harmony cannot read your expenses, and saving the connection fails with a message saying Expense API access is not enabled.
{% endhint %}

**Step 2: Create an API credential in Navan**

1. Log in to Navan as an admin and go to **Admin** > **Settings** > **Integrations** > **Navan API Credentials**
2. Click **Create New** and enter a description, for example `Harmony`
3. Leave **Allowed IP Addresses** empty. If your policy requires an allowlist, contact Harmony Support for the addresses Harmony connects from.
4. Click **Create** and copy the **Client ID** and **Secret Key**. The secret is shown once; if you lose it, rotate it in Navan and reconnect.

**Step 3: Connect in Harmony**

1. Log in to your Harmony dashboard
2. Navigate to **Settings** > **Integrations**
3. Find **Navan** under **SaaS Procurement** and click **Connect**
4. Set **Region** to **United States** or **Europe**, matching your Navan account
5. Paste the **Client ID** and the **Secret Key** (into **Client Secret**)
6. Under **Included GL codes**, enter the GL code numbers you use for software, comma-separated, for example `6100, 6105`. Recommended; see below.
7. Click **Save**

Harmony validates the connection immediately: it requests a token from Navan and reads a page of your expenses. Wrong credentials, a mismatched region or Expense API access that Navan has not enabled fail the save with a message naming the fix.

{% hint style="info" %}
**Set GL codes.** Without them Harmony considers every expense in Navan, and with **Only sync contracts matching the application catalog** on (the default), vendors that are also apps, such as Uber, Lyft, Airbnb or DoorDash, still sync as contracts. Listing your software GL codes keeps the sync to software spend. Both settings can be changed after connecting and take effect from the next daily sync.
{% endhint %}

***

#### Disconnect Navan from Harmony

1. Navigate to **Settings** > **Integrations**
2. Find **Navan** under **SaaS Procurement** and click the integration card
3. Click **Disconnect** and confirm

Harmony stops syncing from Navan. Contracts already synced remain in Harmony.

***

#### What Harmony syncs from Navan

| Data                | Description                                   | Refresh |
| ------------------- | --------------------------------------------- | ------- |
| Navan card charges  | Charges on Navan-issued cards                 | Daily   |
| Linked card charges | Charges on corporate cards connected to Navan | Daily   |
| Reimbursed expenses | Out-of-pocket expenses, once approved         | Daily   |

Expenses are grouped by vendor name into one contract per vendor, with each expense as a line item: amount, currency, date, approval status, vendor category, GL code and the card holder or claimant.

**How the contract value is computed.** Navan's API only exposes about two months of expense history, so Harmony reads a fixed window of the last 59 days. A contract's value is the net of its expenses in that window; refunds subtract. Navan does not record billing cycles, so Navan contracts have no billing cycle or renewal date. Line items from earlier syncs are kept, so a contract's item history grows over time even though its value always reflects the last 59 days.

**What counts as spend**

* Reimbursements count once approved. Rejected and pending claims are left out.
* The part of an expense an approver rejected, and any part marked personal, is subtracted.
* Expenses marked entirely personal are left out.
* Repayments, Navan fees, rebates, disputes, adjustments and statement payments are not vendor spend and are not synced.

**What is deliberately not synced**

* Travel bookings, receipts and policy details
* Users. The Navan integration syncs spend only
* Card numbers or any payment credential

**Limits worth knowing**

* Spend older than about two months is not available from Navan. An annual subscription appears once it is next charged.
* Navan contracts do not create new applications in Harmony. They link to applications already in your inventory, because an unscoped expense feed is mostly travel vendors that would otherwise be added as apps.
* Navan gives no vendor ID, so vendors are matched by name. A vendor that appears under two different names becomes two contracts.
* For a vendor with more than 300 expenses in the window, the contract keeps the 300 most recent as line items. The contract value still covers every expense.
* Contracts synced from Navan are read-only in Harmony; every sync overwrites their fields.

***

#### Permissions explained

Navan API credentials are read-only unless an admin grants write access. Harmony only reads expense transactions and never creates, edits or deletes anything in Navan.

***

#### Use cases

* **Find software paid on a card or reimbursed.** A tool expensed by an employee shows up as a contract under its vendor, linked to the application if it is already in your inventory.
* **Reconcile with procurement.** Compare Navan spend against NetSuite, ZipHQ or Ramp contracts for the same vendor to spot tools paid twice or outside policy.
* **See who is buying.** The card holder or claimant on each expense shows which teams pay for which tools.

***

#### Troubleshooting

**"Navan rejected these credentials"** The Client ID or Secret Key is wrong or has been rotated, or **Region** does not match your Navan account. Check the credential under **Admin** > **Settings** > **Integrations** > **Navan API Credentials**. If the credential has **Allowed IP Addresses** set, Navan may reject Harmony's requests; remove the restriction or contact Harmony Support.

**"Navan has not enabled Expense API access for your company"** The credentials are valid, but API access is not on yet. Ask Navan support to enable it (Step 1), then save again.

**"Could not reach Navan"** A transient network error. Retry in a moment.

**Travel or meal vendors appear as contracts** No GL codes are set, so every expense is considered. Add your software GL codes under **Included GL codes**; the next daily sync applies them.

**The connection worked, then syncing stopped** The credential was rotated or deleted in Navan, or Navan removed API access. Fix it in Navan and contact Harmony Support to resume syncing.

***

#### Data & privacy

* Harmony stores the Client ID and Secret Key encrypted and uses them only to request short-lived access tokens from Navan. Tokens are not persisted.
* Access is read-only. Harmony only reads expense transactions.
* Harmony never receives card numbers.
* Expenses are stored with amount, currency, date, vendor, vendor category, GL code, description and card holder or claimant. Receipts and travel bookings are not fetched.
* Disconnecting stops all synchronization immediately. Data already synced remains in Harmony until removed.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.harmony.io/integrations/saas-applications/navan.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
