Merchants
Operations related to merchants and merchant onboarding
All endpoints require a JWT Bearer token in the Authorization header; most also require an API key in the X-API-KEY header.
GET /v1/merchants
Get a list of merchants with pagination
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
| query |
| Yes | Maximum number of records to return. Starts from 1 to 1000. |
| query |
| Yes | Page number to retrieve, starting from 0. |
| query |
| No | Choose specific fields to include in the response (comma-separated). If provided, excludeFields will be ignored. |
| query |
| No | Exclude specific fields from the response (comma-separated). |
| query |
| No | Filter merchants using MongoDB Query Language (MQL) format. |
| query |
| No | Sort merchants using MongoDB Query Language (MQL) format. |
| query |
| No | Include related data in query results using a JSON object. |
Responses
Status | Description |
|---|---|
| Successfully retrieved a paginated list of merchants. |
GET /v1/merchants/{id}
Get a specific merchant by ID
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
| path |
| Yes | The uuid field |
| query |
| No | Include payment processor account and details in the response |
| query |
| No | Choose specific fields to include in the response (comma-separated). If provided, excludeFields will be ignored. |
| query |
| No | Exclude specific fields from the response (comma-separated). |
| query |
| No | Include related data in query results using a JSON object. |
Responses
Status | Description |
|---|---|
| Merchant details retrieved successfully |
The following endpoint is served from https://onboarding.valpay.com and accepts either a JWT Bearer token in the Authorization header or an API key in the X-API-KEY header.
POST /v1/adyen/merchants
Create a merchant
Creates a merchant with one or more stores and triggers Adyen KYC.
On success, the merchant receives:
a KYC verification link (Adyen Hosted Onboarding Page) via email,
a contract via email from each recipient address.
Authentication: Bearer token or API key in the X-API-KEY header.
Legal entity model
Every merchant needs a legalEntity of one of three types.
| Required blocks | Describes |
|---|---|---|
|
| A company (private, non-profit, etc.) |
|
| A natural person |
| both | A business owned by one person. Adyen models this as two linked legal entities — we create both and associate them in a single request on your behalf. |
Supported countries
Code | Country |
|---|---|
| United States |
| Canada |
| United Kingdom |
| Australia |
| New Zealand |
| Hong Kong |
| Ireland |
| Austria |
| Belgium |
| Switzerland |
| Germany |
| France |
| Italy |
| Luxembourg |
| Netherlands |
| Portugal |
Terms & Conditions
The contract.tcDocument filename must match the legal entity's country region.
Region | Countries | Example filename |
|---|---|---|
US | US |
|
CA | CA |
|
AU | AU, NZ, HK |
|
UK | GB |
|
EU | AT, BE, CH, DE, FR, IE, IT, LU, NL, PT |
|
Rates and fees
Enter all rates as decimal percentages: 0.05 means 5%, 0.0105 means 1.05%. Up to 4 decimal places.
Tier | Countries | Chargeback / ACH return |
|---|---|---|
1 | US, GB, EU countries | 10–50 |
2 | CA, AU, NZ | 10–100 |
3 | HK | 50–500 (ACH must be |
ACH is also disabled (must be 0) in AT, BE, CH, DE, FR, IT, LU, NL, PT.
Industry codes
The industryCode field (on both businessLine and stores[].businessLine) must be one of the 251 supported codes listed in the API spec at https://onboarding.valpay.com/api-docs/. If the brand you're onboarding under has a restricted list, only those codes are accepted.
Request body (required)
Field | Type | Required | Description |
|---|---|---|---|
|
| Yes | Legal entity information. The block(s) required depend on |
|
| Yes | |
|
| Yes | |
|
| Yes | Gross Merchandise Volume (annual). Must be a positive integer. |
|
| Yes | Primary contact email for the merchant |
|
| Yes | Brand the merchant belongs to |
|
| Yes | Merchant acquisition type One of: |
|
| Yes | |
|
| Yes | One or more stores to create for this merchant |
|
| No | Merchant-level language preference used to localize the Adyen-hosted onboarding page. Optional; when omitted, the generated kycUrl falls back to the brand's default locale. One of: |
Responses
Status | Description |
|---|---|
| Merchant created successfully. The response |
| Invalid request — one or more fields failed validation |
| Authentication failed — missing or invalid credentials |
| Conflict — a merchant with the same legal name already exists |
| Rate limit exceeded |
Response schema (2xx)
Field | Type | Required | Description |
|---|---|---|---|
|
| No | |
|
| No | The created merchant record |
|
| No |
Examples
GET /v1/merchants
Response 200 (illustrative):
GET /v1/merchants/{id}
Response 200: the merchant object, enriched with payment processor account details.
POST /v1/adyen/merchants
Create an organization merchant with one store (abbreviated body):
Response 201: the created merchant record plus the agreements array to sign via the Agreements endpoints.