Pinch Payments Contacts API

The Contacts API from Pinch Payments — 2 operation(s) for contacts.

Operations 4

DELETE /contacts/{id} Delete Contact #
GET /contacts/{id} Get Contact #
GET /contacts Get Contacts #
POST /contacts Create or Update Contact #

Documentation

Specifications

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/pinch-payments-contacts-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

pinch-payments-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: pinch-api Contacts API
  version: '2020.1'
servers:
- url: https://api.getpinch.com.au/test
security:
- sec0: []
tags:
- name: Contacts
paths:
  /contacts/{id}:
    delete:
      summary: Delete Contact
      description: Deletes a contact by ID.
      operationId: delete-contact
      parameters:
      - name: id
        in: path
        description: The contact identifier
        schema:
          type: string
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: ''
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "[\n    {\n        \"propertyName\": \"contactId\",\n        \"errorMessage\": \"Contact with id: con_XXXXXXXXXXXXXX not found\",\n        \"attemptedValue\": null,\n        \"customState\": null,\n        \"severity\": 0,\n        \"errorCode\": null,\n        \"formattedMessageArguments\": null,\n        \"formattedMessagePlaceholderValues\": null,\n        \"resourceName\": null\n    }\n]"
              schema:
                type: array
                items:
                  type: object
                  properties:
                    propertyName:
                      type: string
                      example: contactId
                    errorMessage:
                      type: string
                      example: 'Contact with id: con_XXXXXXXXXXXXXX not found'
                    attemptedValue: {}
                    customState: {}
                    severity:
                      type: integer
                      example: 0
                      default: 0
                    errorCode: {}
                    formattedMessageArguments: {}
                    formattedMessagePlaceholderValues: {}
                    resourceName: {}
      deprecated: false
      tags:
      - Contacts
    get:
      summary: Get Contact
      description: Retrieves a single contact by ID.
      operationId: get-contact
      parameters:
      - name: id
        in: path
        description: The contact identifier (string identifier starting with `con_`)
        schema:
          type: string
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"id\": \"con_XXXXXXXXXXXXXX\",\n    \"isPrimaryContact\": true,\n    \"isUbo\": true,\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\",\n    \"fullName\": \"John Smith\",\n    \"email\": \"john.smith@example.com\",\n    \"phone\": \"0412345678\",\n    \"streetAddress\": \"123 Business St\",\n    \"suburb\": \"Sydney\",\n    \"postcode\": \"2000\",\n    \"state\": \"NSW\",\n    \"country\": \"Australia\",\n    \"dob\": \"1980-05-15\",\n    \"governmentNumberSupplied\": false,\n    \"driversLicenseSupplied\": true,\n    \"passportNumberSupplied\": false,\n    \"contactType\": \"owner\",\n    \"ownership\": 50.0,\n    \"jobTitle\": \"CEO\"\n}"
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: con_XXXXXXXXXXXXXX
                  isPrimaryContact:
                    type: boolean
                    example: true
                  isUbo:
                    type: boolean
                    example: true
                  firstName:
                    type: string
                    example: John
                  lastName:
                    type: string
                    example: Smith
                  fullName:
                    type: string
                    example: John Smith
                  email:
                    type: string
                    example: john.smith@example.com
                  phone:
                    type: string
                    example: 0412345678
                  streetAddress:
                    type: string
                    example: 123 Business St
                  suburb:
                    type: string
                    example: Sydney
                  postcode:
                    type: string
                    example: '2000'
                  state:
                    type: string
                    example: NSW
                  country:
                    type: string
                    example: Australia
                  dob:
                    type: string
                    example: '1980-05-15'
                  governmentNumberSupplied:
                    type: boolean
                    example: false
                  driversLicenseSupplied:
                    type: boolean
                    example: true
                  passportNumberSupplied:
                    type: boolean
                    example: false
                  contactType:
                    type: string
                    example: owner
                    enum:
                    - owner
                    - director
                    - shareholder
                    - executive
                  ownership:
                    type: number
                    format: double
                    example: 50
                    nullable: true
                  jobTitle:
                    type: string
                    example: CEO
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "[\n    {\n        \"propertyName\": \"id\",\n        \"errorMessage\": \"Contact with id: con_XXXXXXXXXXXXXX not found\",\n        \"attemptedValue\": null,\n        \"customState\": null,\n        \"severity\": 0,\n        \"errorCode\": null,\n        \"formattedMessageArguments\": null,\n        \"formattedMessagePlaceholderValues\": null,\n        \"resourceName\": null\n    }\n]"
              schema:
                type: array
                items:
                  type: object
                  properties:
                    propertyName:
                      type: string
                      example: id
                    errorMessage:
                      type: string
                      example: 'Contact with id: con_XXXXXXXXXXXXXX not found'
                    attemptedValue: {}
                    customState: {}
                    severity:
                      type: integer
                      example: 0
                      default: 0
                    errorCode: {}
                    formattedMessageArguments: {}
                    formattedMessagePlaceholderValues: {}
                    resourceName: {}
      deprecated: false
      tags:
      - Contacts
  /contacts:
    get:
      summary: Get Contacts
      description: Retrieves a paginated list of contacts for the authenticated merchant.
      operationId: get-contacts
      parameters:
      - name: page
        in: query
        description: Page number for pagination
        schema:
          type: integer
          format: int32
          default: 1
      - name: pageSize
        in: query
        description: Number of items per page (max 500)
        schema:
          type: integer
          format: int32
          default: 50
      - name: filter
        in: query
        description: Search filter
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"page\": 1,\n    \"pageSize\": 50,\n    \"totalPages\": 1,\n    \"totalItems\": 2,\n    \"data\": [\n        {\n            \"id\": \"con_XXXXXXXXXXXXXX\",\n            \"isPrimaryContact\": true,\n            \"isUbo\": true,\n            \"firstName\": \"John\",\n            \"lastName\": \"Smith\",\n            \"fullName\": \"John Smith\",\n            \"email\": \"john.smith@example.com\",\n            \"phone\": \"0412345678\",\n            \"streetAddress\": \"123 Business St\",\n            \"suburb\": \"Sydney\",\n            \"postcode\": \"2000\",\n            \"state\": \"NSW\",\n            \"country\": \"Australia\",\n            \"dob\": \"1980-05-15\",\n            \"governmentNumberSupplied\": false,\n            \"driversLicenseSupplied\": true,\n            \"passportNumberSupplied\": false,\n            \"contactType\": \"owner\",\n            \"ownership\": 50.0,\n            \"jobTitle\": \"CEO\"\n        },\n        {\n            \"id\": \"con_XXXXXXXXXXXXXX\",\n            \"isPrimaryContact\": false,\n            \"isUbo\": false,\n            \"firstName\": \"Jane\",\n            \"lastName\": \"Doe\",\n            \"fullName\": \"Jane Doe\",\n            \"email\": \"jane.doe@example.com\",\n            \"phone\": \"0412345679\",\n            \"streetAddress\": \"456 Corporate Ave\",\n            \"suburb\": \"Melbourne\",\n            \"postcode\": \"3000\",\n            \"state\": \"VIC\",\n            \"country\": \"Australia\",\n            \"dob\": \"1985-08-20\",\n            \"governmentNumberSupplied\": false,\n            \"driversLicenseSupplied\": true,\n            \"passportNumberSupplied\": false,\n            \"contactType\": \"director\",\n            \"ownership\": null,\n            \"jobTitle\": \"CFO\"\n        }\n    ]\n}"
              schema:
                type: object
                properties:
                  page:
                    type: integer
                    example: 1
                  pageSize:
                    type: integer
                    example: 50
                  totalPages:
                    type: integer
                    example: 1
                  totalItems:
                    type: integer
                    example: 2
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: con_XXXXXXXXXXXXXX
                        isPrimaryContact:
                          type: boolean
                          example: true
                        isUbo:
                          type: boolean
                          example: true
                        firstName:
                          type: string
                          example: John
                        lastName:
                          type: string
                          example: Smith
                        fullName:
                          type: string
                          example: John Smith
                        email:
                          type: string
                          example: john.smith@example.com
                        phone:
                          type: string
                          example: 0412345678
                        streetAddress:
                          type: string
                          example: 123 Business St
                        suburb:
                          type: string
                          example: Sydney
                        postcode:
                          type: string
                          example: '2000'
                        state:
                          type: string
                          example: NSW
                        country:
                          type: string
                          example: Australia
                        dob:
                          type: string
                          example: '1980-05-15'
                        governmentNumberSupplied:
                          type: boolean
                          example: false
                        driversLicenseSupplied:
                          type: boolean
                          example: true
                        passportNumberSupplied:
                          type: boolean
                          example: false
                        contactType:
                          type: string
                          example: owner
                          enum:
                          - owner
                          - director
                          - shareholder
                          - executive
                        ownership:
                          type: number
                          format: double
                          example: 50
                          nullable: true
                        jobTitle:
                          type: string
                          example: CEO
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "[\n    {\n        \"propertyName\": \"page\",\n        \"errorMessage\": \"Page must be greater than 0.\",\n        \"attemptedValue\": \"0\",\n        \"customState\": null,\n        \"severity\": 0,\n        \"errorCode\": \"GreaterThanValidator\",\n        \"formattedMessageArguments\": [],\n        \"formattedMessagePlaceholderValues\": {\n            \"PropertyName\": \"page\",\n            \"PropertyValue\": \"0\"\n        },\n        \"resourceName\": \"GreaterThanValidator\"\n    }\n]"
              schema:
                type: array
                items:
                  type: object
                  properties:
                    propertyName:
                      type: string
                      example: page
                    errorMessage:
                      type: string
                      example: Page must be greater than 0.
                    attemptedValue:
                      type: string
                      example: '0'
                    customState: {}
                    severity:
                      type: integer
                      example: 0
                      default: 0
                    errorCode:
                      type: string
                      example: GreaterThanValidator
                    formattedMessageArguments:
                      type: array
                    formattedMessagePlaceholderValues:
                      type: object
                      properties:
                        PropertyName:
                          type: string
                          example: page
                        PropertyValue:
                          type: string
                          example: '0'
                    resourceName:
                      type: string
                      example: GreaterThanValidator
      deprecated: false
      tags:
      - Contacts
    post:
      summary: Create or Update Contact
      description: Creates a new contact or updates an existing one. If an `id` is provided in the request body, the contact will be updated; otherwise a new contact will be created.
      operationId: save-contact
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - contactType
              properties:
                id:
                  type: string
                  description: If provided, updates existing contact
                isPrimaryContact:
                  type: boolean
                  description: Whether this is the primary contact
                firstName:
                  type: string
                  description: First name
                lastName:
                  type: string
                  description: Last name
                email:
                  type: string
                  description: Email address
                phone:
                  type: string
                  description: Phone number
                streetAddress:
                  type: string
                  description: Street address
                suburb:
                  type: string
                  description: Suburb
                postcode:
                  type: string
                  description: Postcode
                state:
                  type: string
                  description: State
                country:
                  type: string
                  description: Country
                dob:
                  type: string
                  format: date
                  description: Date of birth in yyyy-MM-dd format
                governmentNumber:
                  type: string
                  description: Use passportNumber or driversLicenseNumber instead
                  deprecated: true
                passportNumber:
                  type: string
                  description: Passport number
                passportCountryCode:
                  type: string
                  description: Passport country code
                driversLicenseNumber:
                  type: string
                  description: Driver's license number
                driversLicenseState:
                  type: string
                  description: Driver's license state
                driversLicenseCountryCode:
                  type: string
                  description: Driver's license country code
                driversLicenseCardNumber:
                  type: string
                  description: Driver's license card number
                driversLicenseExpiryDate:
                  type: string
                  format: date
                  description: Driver's license expiry date
                contactType:
                  type: string
                  description: The type of contact. Owner = a major shareholder and director; Director = any director; Shareholder = any shareholder; Executive = Any decision maker.
                  enum:
                  - owner
                  - director
                  - shareholder
                  - executive
                ownership:
                  type: number
                  format: double
                  description: Ownership percentage
                  nullable: true
                jobTitle:
                  type: string
                  description: Job title
            examples:
              Request Example:
                value:
                  firstName: John
                  lastName: Smith
                  email: john.smith@example.com
                  phone: 0412345678
                  streetAddress: 123 Business St
                  suburb: Sydney
                  postcode: '2000'
                  state: NSW
                  country: Australia
                  dob: '1980-05-15'
                  isPrimaryContact: true
                  contactType: owner
                  ownership: 50
                  jobTitle: CEO
                  driversLicenseNumber: '12345678'
                  driversLicenseState: NSW
                  driversLicenseCountryCode: AU
                  driversLicenseExpiryDate: '2025-12-31'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"id\": \"con_XXXXXXXXXXXXXX\",\n    \"isPrimaryContact\": true,\n    \"isUbo\": true,\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\",\n    \"fullName\": \"John Smith\",\n    \"email\": \"john.smith@example.com\",\n    \"phone\": \"0412345678\",\n    \"streetAddress\": \"123 Business St\",\n    \"suburb\": \"Sydney\",\n    \"postcode\": \"2000\",\n    \"state\": \"NSW\",\n    \"country\": \"Australia\",\n    \"dob\": \"1980-05-15\",\n    \"governmentNumberSupplied\": false,\n    \"driversLicenseSupplied\": true,\n    \"passportNumberSupplied\": false,\n    \"contactType\": \"owner\",\n    \"ownership\": 50.0,\n    \"jobTitle\": \"CEO\"\n}"
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: con_XXXXXXXXXXXXXX
                  isPrimaryContact:
                    type: boolean
                    example: true
                  isUbo:
                    type: boolean
                    example: true
                  firstName:
                    type: string
                    example: John
                  lastName:
                    type: string
                    example: Smith
                  fullName:
                    type: string
                    example: John Smith
                  email:
                    type: string
                    example: john.smith@example.com
                  phone:
                    type: string
                    example: 0412345678
                  streetAddress:
                    type: string
                    example: 123 Business St
                  suburb:
                    type: string
                    example: Sydney
                  postcode:
                    type: string
                    example: '2000'
                  state:
                    type: string
                    example: NSW
                  country:
                    type: string
                    example: Australia
                  dob:
                    type: string
                    example: '1980-05-15'
                  governmentNumberSupplied:
                    type: boolean
                    example: false
                  driversLicenseSupplied:
                    type: boolean
                    example: true
                  passportNumberSupplied:
                    type: boolean
                    example: false
                  contactType:
                    type: string
                    example: owner
                    enum:
                    - owner
                    - director
                    - shareholder
                    - executive
                  ownership:
                    type: number
                    format: double
                    example: 50
                    nullable: true
                  jobTitle:
                    type: string
                    example: CEO
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "[\n    {\n        \"propertyName\": \"ContactType\",\n        \"errorMessage\": \"'Contact Type' must not be empty.\",\n        \"attemptedValue\": null,\n        \"customState\": null,\n        \"severity\": 0,\n        \"errorCode\": \"NotEmptyValidator\",\n        \"formattedMessageArguments\": [],\n        \"formattedMessagePlaceholderValues\": {\n            \"PropertyName\": \"Contact Type\",\n            \"PropertyValue\": null\n        },\n        \"resourceName\": \"NotEmptyValidator\"\n    }\n]"
              schema:
                type: array
                items:
                  type: object
                  properties:
                    propertyName:
                      type: string
                      example: ContactType
                    errorMessage:
                      type: string
                      example: '''Contact Type'' must not be empty.'
                    attemptedValue: {}
                    customState: {}
                    severity:
                      type: integer
                      example: 0
                      default: 0
                    errorCode:
                      type: string
                      example: NotEmptyValidator
                    formattedMessageArguments:
                      type: array
                    formattedMessagePlaceholderValues:
                      type: object
                      properties:
                        PropertyName:
                          type: string
                          example: Contact Type
                        PropertyValue: {}
                    resourceName:
                      type: string
                      example: NotEmptyValidator
      deprecated: false
      tags:
      - Contacts
components:
  securitySchemes:
    sec0:
      type: oauth2
      flows: {}
x-readme:
  headers:
  - key: pinch-version
    value: '2020.1'
  explorer-enabled: true
  proxy-enabled: true