---
search:
  tags:
    - customers
    - POST
seo:
  description: >-
    Join Vortex merchant-statement analysis (measured… Reference for the POST
    /workspaces/{organizationId}/intake/vortex-merchants/sync endpoint in the
    Pile API.
sidebar:
  label: Create intake vortex merchant sync
  badge: POST
title: Create intake vortex merchant sync
type: openapi-operation
---
Join Vortex merchant-statement analysis (measured card volume, fees, effective rate — first-party TPV) onto Pile customers. Matches on explicit customerId, customFields.externalMerchantRef, externalId "vortex-merchant:&lt;ref>", contact email, or case-insensitive business name; creates a customer when nothing matches. Writes the measured figures to customFields (incl. the canonical monthly_card_volume_cents), stamps the join key on the merchant's intake document when one exists, records a high-confidence revenue_estimate signal, and re-ranks. Pass merchants inline or an operator key to pull /v1/operator/merchant-statements.

`POST /workspaces/{organizationId}/intake/vortex-merchants/sync`

**Request body** (`application/json`)

- `merchants` (object[])
- `vortexOperatorKey` (string)

Request body example:

```json
{
  "merchants": [
    {
      "externalMerchantRef": "string",
      "customerId": "string",
      "businessName": "string",
      "contactEmail": "string",
      "monthlyVolumeCents": 0,
      "totalFeesCents": 0,
      "effectiveRateBps": 0,
      "transactionCount": 0,
      "avgTicketCents": 0,
      "statementPeriod": "string",
      "processor": "string"
    }
  ],
  "vortexOperatorKey": "string"
}
```

**Responses**

- `200` — Vortex merchants synced
- `400` — Invalid request
- `502` — Vortex API fetch failed

Response example, 200:

```json
{
  "synced": 0,
  "created": 0,
  "updated": 0,
  "customers": [
    {
      "id": "string",
      "name": "string",
      "externalMerchantRef": "string",
      "measuredMonthlyVolumeCents": 0,
      "effectiveRateBps": 0,
      "score": 0
    }
  ]
}
```
