> For the complete documentation index, see [llms.txt](https://help.openloyalty.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.openloyalty.io/main-features/transactions/matching-transactions.md).

# Matching Transactions with Members

The **Matching Transactions with Members** process connects each transaction with the correct loyalty program member.\
This step ensures that members receive loyalty units, rewards, and achievements based on their purchases.

Matching can happen automatically (during import or via API) or manually (from the Admin Panel).\
If a transaction is not matched, it will appear in the list with the status **Not matched**.

{% hint style="warning" %}
Matching is crucial for calculating points and triggering campaign or achievement rules.
{% endhint %}

***

#### How matching works

When a transaction is added or imported, the system looks for an existing member using defined identifiers such as:

* **Email address**
* **Phone number**
* **Loyalty card number**
* **Custom identifiers** (if configured)

If a match is found → the transaction is linked automatically.\
If not → it remains unmatched until linked manually or via import.

{% hint style="info" %}
You can define which member identifier should be used for mapping.

To find out more, please refer to [Configuration](/main-features/members/configuration.md)
{% endhint %}

***

#### Automatic matching

Automatic matching happens when:

* The transaction file or API payload contains valid member identifiers.
* The corresponding member exists in the system.
* No conflicts (e.g., duplicate identifiers) are detected.

If all conditions are met, the transaction is automatically linked, and any active campaign or achievement rules are triggered.

***

#### Manual matching

You can manually match a transaction that was not linked automatically.

**To match manually:**

1. Go to **Transactions → List of Transactions**
2. Locate a transaction with the status **Not matched**
3. Click **⋯ (three dots)** and select **Match transaction with a member**
4. Choose how to search for the member:
   * Email address
   * Phone number
   * Loyalty card number
5. Confirm your selection

If a match is successful, the status will change to **Matched**, and loyalty units will be added to the member’s wallet if applicable.

***

### 📎 Import matches

If you have a file containing transaction–member pairs, use this option to match them in bulk.

| Required columns            | Example             |
| --------------------------- | ------------------- |
| Transaction document number | 6lkgwm0qzb          |
| Member email                | <example@email.com> |

To find out more about the import file and how to create an import file, please refer to the article below:

{% content-ref url="/pages/-MZBtStiJdMqbAd-5BMa" %}
[Broken mention](broken://pages/-MZBtStiJdMqbAd-5BMa)
{% endcontent-ref %}

#### Steps

1. Click **Import matches**
2. Upload your file (XML)
3. Confirm import

Matched transactions will update automatically, and new points will be calculated if applicable.

***

#### Troubleshooting unmatched transactions

If some transactions remain unmatched:

* Verify that the identifiers used in the transaction (email, phone, card number) exist in the member database.
* Check for typos or mismatched formats.
* Ensure the identifier field used for matching is active in your tenant configuration.
* Confirm that you have access to the Members module — restricted access can also result in seeing “Not matched” status.

***

#### Best practices

* Use **consistent identifiers** across all systems (POS, eCommerce, CRM).
* Avoid duplicate member profiles with the same email or card number.
* Regularly export unmatched transactions to review and fix manually.
* When possible, automate matching via API to reduce manual work.

***

#### Next steps

You’ve completed the Transactions module documentation ✅\
You can now continue with related areas, such as [**Campaigns**](/main-features/campaigns.md) or [**Rewards**](/main-features/rewards.md), to understand how transactions affect loyalty logic.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.openloyalty.io/main-features/transactions/matching-transactions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
