PPRO Merchants API

Merchant management

Operations 8

POST /v1/merchants Create a Merchant #
GET /v1/merchants/{merchant-id} Get Merchant Details #
PATCH /v1/merchants/{merchant-id} Update a Merchant #
PUT /v1/merchants/{merchant-id} Replace a Merchant #
DELETE /v1/merchants/{merchant-id} Deactivate a Merchant #
GET /v1/merchants/{merchant-id}/people List People for Merchant #
POST /v1/merchants/{merchant-id}/people Associate a person with a Merchant #
DELETE /v1/merchants/{merchant-id}/people/{person-id} Dissociate a person from a Merchant #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ppro-merchants-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ppro-merchants-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ppro Merchants API
  version: 1.0.0
  license:
    name: Proprietary
    identifier: Proprietary
  description: 'Operations tagged Merchants across 2 of this provider''s published API definitions: ppro-onboarding-openapi.yml, ppro-openapi-boarding-v2.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.sandbox.eu.ppro.com
  description: Production
security: []
tags:
- name: Merchants
  description: Merchant management
paths:
  /v1/merchants:
    post:
      summary: Create a Merchant
      operationId: createMerchant
      tags:
      - Merchants
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMerchantRequest'
      responses:
        '201':
          description: Merchant created successfully
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMerchantResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    servers:
    - url: https://api.sandbox.eu.ppro.com
      description: Production
  /v1/merchants/{merchant-id}:
    get:
      summary: Get Merchant Details
      operationId: getMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      responses:
        '200':
          description: Merchant details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerchantDetails'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    patch:
      summary: Update a Merchant
      operationId: updateMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMerchantRequest'
      responses:
        '200':
          description: Merchant updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerchantDetails'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    put:
      summary: Replace a Merchant
      operationId: replaceMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplaceMerchantRequest'
      responses:
        '200':
          description: Merchant replaced successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerchantDetails'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    delete:
      summary: Deactivate a Merchant
      operationId: deactivateMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      responses:
        '204':
          description: Merchant deactivated or already deactivated.
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    servers:
    - url: https://api.sandbox.eu.ppro.com
      description: Production
  /v1/merchants/{merchant-id}/people:
    get:
      summary: List People for Merchant
      operationId: listMerchantPeople
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      responses:
        '200':
          description: List of People associated with the merchant
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MerchantPersonDetails'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    post:
      summary: Associate a person with a Merchant
      operationId: associatePersonWithMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonLinkRequest'
      responses:
        '201':
          description: Person associated with merchant successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    servers:
    - url: https://api.sandbox.eu.ppro.com
      description: Production
  /v1/merchants/{merchant-id}/people/{person-id}:
    delete:
      summary: Dissociate a person from a Merchant
      operationId: dissociatePersonFromMerchant
      tags:
      - Merchants
      parameters:
      - $ref: '#/components/parameters/merchant-id'
      - $ref: '#/components/parameters/person-id'
      responses:
        '204':
          description: Person dissociated from merchant successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
    servers:
    - url: https://api.sandbox.eu.ppro.com
      description: Production
components:
  responses:
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    MethodNotAllowed:
      description: Method not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: Resource conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    GatewayTimeout:
      description: Gateway Timeout
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    UpdateMerchantRequest:
      title: UpdateMerchantRequest
      type: object
      properties:
        legalEntityName:
          $ref: '#/components/schemas/LegalEntityName'
        legalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        tradeName:
          allOf:
          - $ref: '#/components/schemas/MerchantTradeName'
        registrationNumber:
          allOf:
          - $ref: '#/components/schemas/LegalEntityRegistrationNumber'
        incorporationDate:
          allOf:
          - $ref: '#/components/schemas/IncorporationDate'
        address:
          $ref: '#/components/schemas/Address'
        phoneNumber:
          allOf:
          - $ref: '#/components/schemas/PhoneNumber'
        simpleApiWebhooksUrl:
          allOf:
          - $ref: '#/components/schemas/SimpleApiWebhooksUrl'
        url:
          allOf:
          - $ref: '#/components/schemas/WebsiteUrl'
        mcc:
          $ref: '#/components/schemas/MerchantCategoryCode'
        averageTransactionValue:
          allOf:
          - $ref: '#/components/schemas/AverageTransactionValue'
        monthlyTransactionCount:
          allOf:
          - $ref: '#/components/schemas/MonthlyTransactionCount'
        currency:
          allOf:
          - $ref: '#/components/schemas/Currency'
        paymentDescriptor:
          allOf:
          - $ref: '#/components/schemas/PaymentDescriptor'
    LegalEntityType:
      type: string
      enum:
      - COMPANY
      - PARTNERSHIP
      - SOLE_TRADER
      - INDIVIDUAL
      - NON_PROFIT
      description: 'Classification of the business structure. Allowed values: COMPANY, PARTNERSHIP, SOLE_TRADER, INDIVIDUAL, NON_PROFIT.'
      example: COMPANY
    ExternalReference:
      type: string
      pattern: ^[A-Z0-9]{1,32}$
      description: Unique reference, assigned by external client.
      example: ENTITY1234567890
    PaymentDescriptor:
      title: PaymentDescriptor
      type: string
      pattern: ^[A-Za-z0-9.',& /+\-]{0,255}$
      description: The text customers see on their bank statement for transactions from this store.
      example: Example LLC Store
    CreatedAt:
      type: string
      format: date-time
      description: Timestamp when the resource was created. UTC timezone. Format YYYY-MM-DDTHH:MM:SS.ssssssZ
    PhoneNumber:
      type: string
      pattern: ^[\+]?[0-9\s\-\(\)]{7,20}$
      example: +1 234-567-8900
    WebsiteUrl:
      type: string
      format: uri
      maxLength: 255
      description: An e-commerce website or public-facing digital storefront.
      example: https://www.example.com
    LegalEntityRegistrationNumber:
      type: string
      pattern: ^[A-Za-z0-9]{1,255}$
      description: A unique identifier assigned to the business upon incorporation by a government or regulatory authority.
    PlatformId:
      type: string
      pattern: ^([A-Z0-9]{5,32}|platform_[a-zA-Z0-9-]{21})$
      description: Unique identifier for the platform
      example: PLATFORMID123456
    MerchantCategoryCode:
      type: string
      pattern: ^[0-9]{4}$
      description: Merchant Category Code assigned to the business, indicating the type of goods or services sold.
      example: '5411'
    MonthlyTransactionCount:
      type: integer
      format: int64
      description: The expected or historical number of transactions processed per month.
      example: 1000
    CreatePersonRequest:
      title: CreatePersonRequest
      type: object
      properties:
        externalPersonReference:
          $ref: '#/components/schemas/ExternalReference'
        firstName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: The legal given name of the person.
          example: John
        lastName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: The legal surname or family name of the person.
          example: Doe
        middleName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: An optional middle name of the person, if applicable.
          example: Michael
        nativeName:
          type: string
          pattern: ^[\p{L}\p{M}\p{Zs}'\-\.]{1,255}$
          description: The person’s name in their native script (e.g., Cyrillic, Kanji), if different from Latin characters.
          example: 道
        birthDate:
          type: string
          format: date
          description: The person’s birth date, in ISO-8601 format YYYY-MM-DD.
          example: '2000-01-01'
        address:
          $ref: '#/components/schemas/Address'
        email:
          $ref: '#/components/schemas/EmailAddress'
      required:
      - firstName
      - lastName
      - birthDate
      - address
      example:
        externalPersonReference: REF123
        firstName: John
        lastName: Doe
        middleName: Michael
        nativeName: 道
        birthDate: '2000-01-01'
        address:
          street: 123 Main St
          city: Anytown
          region: CA
          postalCode: '12345'
          country: US
        email: john.doe@example.com
    CreateMerchantResponse:
      title: CreateMerchantResponse
      description: Merchant created payload including initial people assignments.
      allOf:
      - $ref: '#/components/schemas/MerchantDetails'
      - type: object
        properties:
          people:
            type: array
            items:
              $ref: '#/components/schemas/MerchantPersonDetails'
    MerchantId:
      type: string
      pattern: ^([A-Z0-9]{5,32}|merchant_[a-zA-Z0-9-]{21})$
      description: Unique identifier for the merchant
      example: MERCHANTID456
    Error:
      $schema: https://json-schema.org/draft/2020-12/schema
      title: Error
      type: object
      properties:
        status:
          type: integer
          format: int32
          description: HTTP status code
        failureMessage:
          type: string
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the error occurred
      required:
      - status
      - failureMessage
      - timestamp
    MerchantDetails:
      title: MerchantDetails
      description: Merchant record as returned by Entity .
      allOf:
      - type: object
        properties:
          id:
            $ref: '#/components/schemas/MerchantId'
          pspId:
            $ref: '#/components/schemas/PspId'
          externalMerchantReference:
            description: Unique reference, assigned by external client. Note that the same reference cannot be used for both a Merchant and a Platform.
            $ref: '#/components/schemas/ExternalReference'
          legalEntityName:
            $ref: '#/components/schemas/LegalEntityName'
          legalEntityType:
            $ref: '#/components/schemas/LegalEntityType'
          tradeName:
            $ref: '#/components/schemas/MerchantTradeName'
          registrationNumber:
            $ref: '#/components/schemas/LegalEntityRegistrationNumber'
          incorporationDate:
            $ref: '#/components/schemas/IncorporationDate'
          address:
            $ref: '#/components/schemas/Address'
          phoneNumber:
            $ref: '#/components/schemas/PhoneNumber'
          email:
            $ref: '#/components/schemas/EmailAddress'
          simpleApiWebhooksUrl:
            $ref: '#/components/schemas/SimpleApiWebhooksUrl'
          platformId:
            $ref: '#/components/schemas/PlatformId'
          createdAt:
            $ref: '#/components/schemas/CreatedAt'
          updatedAt:
            $ref: '#/components/schemas/UpdatedAt'
          url:
            $ref: '#/components/schemas/WebsiteUrl'
          mcc:
            $ref: '#/components/schemas/MerchantCategoryCode'
          averageTransactionValue:
            $ref: '#/components/schemas/AverageTransactionValue'
          monthlyTransactionCount:
            $ref: '#/components/schemas/MonthlyTransactionCount'
          currency:
            $ref: '#/components/schemas/Currency'
          paymentDescriptor:
            $ref: '#/components/schemas/PaymentDescriptor'
        required:
        - id
        - externalMerchantReference
        - legalEntityName
        - legalEntityType
        - address
        - createdAt
        - updatedAt
        - url
        - mcc
    MerchantPersonDetails:
      title: MerchantPersonDetails
      type: object
      description: Person linked to a merchant with assigned relationship type.
      properties:
        relationshipType:
          $ref: '#/components/schemas/RelationshipType'
        person:
          $ref: '#/components/schemas/PersonDetails'
      required:
      - relationshipType
      - person
      example:
        relationshipType: ULTIMATE_BENEFICIAL_OWNER
        person:
          id: person_abcdefghijklmno123456
          externalPersonReference: REF123
          firstName: John
          lastName: Doe
          address:
            street: 123 Main St
            city: Anytown
            region: CA
            postalCode: '12345'
            country: US
          birthDate: '2000-01-01'
          email: john.doe@ppro.com
          createdAt: '2023-01-01T00:00:00Z'
          updatedAt: '2023-01-01T00:00:00Z'
    MerchantTradeName:
      type: string
      pattern: ^(?=.{1,255}$).*\S.*
      description: The name the business operates under in public-facing contexts. This is the "doing business as" (DBA) name and may differ from the legal name.
      example: Example LLC
    Address:
      title: Address
      type: object
      properties:
        street:
          type: string
          pattern: ^[0-9a-zA-Z\s\-\.,'/#]{1,255}$
          example: 123 Main St
        city:
          type: string
          pattern: ^[0-9a-zA-Z\s\-\.,'/#]{1,255}$
          example: Anytown
        region:
          type: string
          pattern: ^[0-9a-zA-Z\s\-\.,'/#]{1,255}$
          example: CA
        postalCode:
          type: string
          pattern: ^[0-9A-Z\s\-]{1,20}$
          description: 'Required for countries that use postal codes. This field can be omitted for the following country codes: AO,AI,AG,AW,BS,BZ,BJ,BM,BO,BQ,BW,CF,TD,KM,CG,CD,CK,CI,CW,DJ,DM,TL,GQ,ER,FJ,TF,GA,GM,GY,GD,HK,HM,IO,MO,MH,MS,NR,NU,NF,PW,PA,WS,KN,LC,VC,ST,SC,SL,SX,SB,SS,GS,SH,TC,TK,TO,TV,UG,AE,VA,VU,YE,ZW'
          example: '12345'
        country:
          $ref: '#/components/schemas/CountryCode'
      required:
      - street
      - city
      - country
      example:
        street: 123 Main St
        city: Anytown
        region: CA
        postalCode: '12345'
        country: US
    IncorporationDate:
      type: string
      format: date
      description: The date the business was legally registered or incorporated.
      example: '2020-01-01'
    PersonDetails:
      title: PersonDetails
      type: object
      description: Person record with audit timestamps aligned to Entity .
      properties:
        id:
          $ref: '#/components/schemas/PersonId'
        externalPersonReference:
          $ref: '#/components/schemas/ExternalReference'
        firstName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: The legal given name of the person.
          example: John
        lastName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: The legal surname or family name of the person.
          example: Doe
        middleName:
          type: string
          pattern: ^[\p{L}\p{M}\s'\-]{1,255}$
          description: An optional middle name of the person, if applicable.
        nativeName:
          type: string
          pattern: ^[\p{L}\p{M}\p{Zs}'\-\.]{1,255}$
          description: The person’s name in their native script (e.g., Cyrillic, Kanji), if different from Latin characters.
        birthDate:
          type: string
          format: date
          description: The person’s birth date, in ISO-8601 format YYYY-MM-DD.
        address:
          $ref: '#/components/schemas/Address'
        email:
          $ref: '#/components/schemas/EmailAddress'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        updatedAt:
          $ref: '#/components/schemas/UpdatedAt'
      required:
      - id
      - firstName
      - lastName
      - address
      - createdAt
      - updatedAt
      example:
        id: person_abcdefghijklmno123456
        externalPersonReference: REF123
        firstName: John
        lastName: Doe
        address:
          street: 123 Main St
          city: Anytown
          region: CA
          postalCode: '12345'
          country: US
        birthDate: '2000-01-01'
        email: john.doe@ppro.com
        createdAt: '2023-01-01T00:00:00Z'
        updatedAt: '2023-01-01T00:00:00Z'
    LegalEntityName:
      type: string
      pattern: ^(?=.{1,255}$).*\S.*
      description: The officially registered name of the business as recorded in legal or governmental registries.
      example: Example LLC
    EmailAddress:
      type: string
      format: email
      pattern: ^.{1,255}$
      description: An email address.
      example: john.doe@example.com
    CreateMerchantRequest:
      title: CreateMerchantRequest
      type: object
      properties:
        externalMerchantReference:
          description: Unique reference, assigned by external client. Note that the same reference cannot be used for both a Merchant and a Platform.
          $ref: '#/components/schemas/ExternalReference'
        legalEntityName:
          $ref: '#/components/schemas/LegalEntityName'
        legalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        tradeName:
          $ref: '#/components/schemas/MerchantTradeName'
        registrationNumber:
          $ref: '#/components/schemas/LegalEntityRegistrationNumber'
        incorporationDate:
          $ref: '#/components/schemas/IncorporationDate'
        address:
          $ref: '#/components/schemas/Address'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        people:
          type: array
          items:
            $ref: '#/components/schemas/CreateMerchantPersonRequest'
        simpleApiWebhooksUrl:
          $ref: '#/components/schemas/SimpleApiWebhooksUrl'
        platformId:
          description: Connect the merchant to a platform.
          $ref: '#/components/schemas/PlatformId'
        pspId:
          description: Connect the merchant to a PSP. Only for PSP customers.
          $ref: '#/components/schemas/PspId'
        url:
          $ref: '#/components/schemas/WebsiteUrl'
        mcc:
          $ref: '#/components/schemas/MerchantCategoryCode'
        averageTransactionValue:
          $ref: '#/components/schemas/AverageTransactionValue'
        monthlyTransactionCount:
          $ref: '#/components/schemas/MonthlyTransactionCount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentDescriptor:
          $ref: '#/components/schemas/PaymentDescriptor'
      required:
      - externalMerchantReference
      - legalEntityName
      - legalEntityType
      - address
      - url
      - mcc
    Currency:
      type: string
      pattern: ^[A-Z]{3}$
      description: ISO-4217 currency code (e.g., EUR, USD)
      example: EUR
    PersonId:
      type: string
      pattern: ^person_[a-zA-Z0-9-]{21}$
      description: Unique identifier for the person
      example: person_abcdefghijklmno123456
    RelationshipType:
      type: string
      enum:
      - DIRECTOR
      - ULTIMATE_BENEFICIAL_OWNER
      description: The relationship type of the person in relation to the business (e.g., DIRECTOR, ULTIMATE_BENEFICIAL_OWNER)
      example: DIRECTOR
    ReplaceMerchantRequest:
      title: ReplaceMerchantRequest
      type: object
      properties:
        legalEntityName:
          $ref: '#/components/schemas/LegalEntityName'
        legalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        tradeName:
          $ref: '#/components/schemas/MerchantTradeName'
        registrationNumber:
          $ref: '#/components/schemas/LegalEntityRegistrationNumber'
        incorporationDate:
          $ref: '#/components/schemas/IncorporationDate'
        address:
          $ref: '#/components/schemas/Address'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        simpleApiWebhooksUrl:
          $ref: '#/components/schemas/SimpleApiWebhooksUrl'
        url:
          $ref: '#/components/schemas/WebsiteUrl'
        mcc:
          $ref: '#/components/schemas/MerchantCategoryCode'
        averageTransactionValue:
          $ref: '#/components/schemas/AverageTransactionValue'
        monthlyTransactionCount:
          $ref: '#/components/schemas/MonthlyTransactionCount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentDescriptor:
          $ref: '#/components/schemas/PaymentDescriptor'
      required:
      - legalEntityName
      - legalEntityType
      - address
      - url
      - mcc
    PersonLinkRequest:
      title: PersonLinkRequest
      description: Request payload to associate an existing person with a merchant.
      type: object
      properties:
        personId:
          $ref: '#/components/schemas/PersonId'
        relationshipType:
          $ref: '#/components/schemas/RelationshipType'
      required:
      - personId
      - relationshipType
    AverageTransactionValue:
      type: number
      description: The typical value of a single transaction. Major units, example 50.00
      example: 50
    UpdatedAt:
      type: string
      format: date-time
      description: Timestamp when the resource was last updated. UTC timezone. Format YYYY-MM-DDTHH:MM:SS.ssssssZ
    PspId:
      type: string
      pattern: ^([a-zA-Z0-9]{3,41}|psp_[a-zA-Z0-9-]{21})$
      description: Unique identifier for the PSP
      example: psp_abcdefghijklmno123456
    CreateMerchantPersonRequest:
      title: CreateMerchantPersonRequest
      type: object
      properties:
        relationshipType:
          $ref: '#/components/schemas/RelationshipType'
        personId:
          $ref: '#/components/schemas/PersonId'
          description: Unique identifier for the existing person to assign. Do not provide if creating a new person and attach.
        person:
          $ref: '#/components/schemas/CreatePersonRequest'
          description: Object containing the details for the new person to create and attach. Do not provide if attaching an existing person."
      required:
      - relationshipType
      example:
        relationshipType: ULTIMATE_BENEFICIAL_OWNER
        person:
          externalPersonReference: REF123
          firstName: John
          lastName: Doe
          middleName: Michael
          nativeName: 道
          birthDate: '2000-01-01'
          address:
            street: 123 Main St
            city: Anytown
            region: CA
            postalCode: '12345'
            country: US
          email: john.doe@example.com
    SimpleApiWebhooksUrl:
      type: string
      format: uri
      maxLength: 255
      description: The endpoint where Simple API (v1) event webhooks should be sent.
      example: https://www.example.com/webhook
    CountryCode:
      type: string
      pattern: ^[A-Z]{2}$
      description: ISO 3166-1 alpha-2 Country Code
      example: US
  parameters:
    merchant-id:
      name: merchant-id
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/MerchantId'
    person-id:
      name: person-id
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/PersonId'
  headers:
    Location:
      description: Path of the created resource.
      schema:
        type: string
        format: uri-reference
        example: /api/merchants/ABC123XYZ
x-refined-from:
- ppro-onboarding-openapi.yml
- ppro-openapi-boarding-v2.yaml