# Customer Article Numbers

**Customer article numbers** map the number one of your customers uses for an
article on their orders (`customer_article_number`) to your own
`article_number`. When an order arrives that cites the customer's number,
Mercura resolves it straight to your catalogue article.
You can:
- **`POST /articles/customer-article-numbers`** — bulk-upsert up to 100,000
mappings in a single call. Async — returns a `JobAck`; poll
`GET /jobs/{job_id}` for status.
- **`GET /articles/customer-article-numbers`** — cursor-paginated list of your
mappings. Filter by `customer_id`, `customer_article_number` or
`article_number`, or pass `modified_since` on the first page to fetch only
what changed.

 - [Keys](https://docs.mercura.ai/openapi/customer-article-numbers/keys.md): ### Keys A mapping is identified by **`customer_id` + `customer_article_number`**. Re-sending a pair with a different `article_number` re-points it to that article. `customer_id` is the same id you se
 - [Replacing a customer's list](https://docs.mercura.ai/openapi/customer-article-numbers/replacing-a-customer's-list.md): ### Replacing a customer's list By default the call only adds and updates. To remove mappings a customer no longer uses, send that customer's **complete** list with `"replace_customers": true`: for ev
 - [POST /articles/customer-article-numbers](https://docs.mercura.ai/openapi/customer-article-numbers/public_customer_article_numbers_bulk_upsert.md): Bulk-upsert customer article numbers (async). Accepts up to 100,000 rows per call. A mapping is keyed by `(customer_id, customer_article_number)`; re-sending a key with a different `article_number` re
 - [GET /articles/customer-article-numbers](https://docs.mercura.ai/openapi/customer-article-numbers/public_customer_article_numbers_list.md): Cursor-paginated list of customer-article-number mappings.
