Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: pinch-api Merchants API
version: '2020.1'
servers:
- url: https://api.getpinch.com.au/test
security:
- sec0: []
tags:
- name: Merchants
paths:
/merchants/managed:
post:
summary: Create Managed Merchant
description: ''
operationId: create-managed-merchant
requestBody:
content:
application/json:
schema:
type: object
required:
- companyName
- companyEmail
- bankAccountRoutingNumber
- bankAccountNumber
- contacts
- ipAddress
- userAgent
properties:
companyName:
type: string
description: Full company name
legalEntityName:
type: string
companyEmail:
type: string
description: Can be a general email for the company rather than a person
companyPhone:
type: string
description: General phone number for the company
companyWebsiteUrl:
type: string
companyRegistrationNumber:
type: string
bankAccountName:
type: string
description: Account Name for the disbursement account
bankAccountRoutingNumber:
type: string
description: BSB for the disbursement account. Should be 6 digits excluding spaces or dashes.
bankAccountNumber:
type: string
description: Account Number for the disbursement account. Should be between 3 and 9 digits excluding dashes and spaces.
streetAddress:
type: string
description: Primary address information
suburb:
type: string
description: Primary address information
state:
type: string
description: Primary address information
postcode:
type: string
description: Primary address information
country:
type: string
bankStatementLabel:
type: string
natureOfBusiness:
type: string
organisationType:
type: string
notes:
type: string
contacts:
type: array
description: At least 1 contact is required
items:
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
contactType:
type: string
enum:
- owner
- director
- shareholder
- executive
phone:
type: string
streetAddress:
type: string
suburb:
type: string
postcode:
type: string
state:
type: string
country:
type: string
dob:
type: string
description: Recommended ISO format (yyyy-mm-dd)
format: date
isPrimaryContact:
type: boolean
required:
- email
- contactType
- isPrimaryContact
type: object
ipAddress:
type: string
description: The external IP Address of the user creating the merchant
userAgent:
type: string
description: The User Agent of the user creating the merchant
merchantIdentifiers:
type: array
description: Optional list of Identifiers for the Merchant in external providers.
items:
properties:
merchantIdentifier:
type: string
description: The external identifier of the merchant
identityProvider:
type: string
description: The external provider where this identifier is from
enum:
- fiserv
- bnz
- cybersource
type: object
reportingIdentifier:
type: string
description: Identifier to be used on Daily/Monthly reporting
timeZone:
type: string
description: Merchant timezone in tz format (See [tz list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones))
examples:
Request Example:
value:
companyName: Test Managed Company
legalEntityName: null
companyEmail: test.managed.company@mailinator.com
companyPhone: null
companyWebsiteUrl: null
companyRegistrationNumber: null
bankAccountRoutingNumber: '000000'
bankAccountNumber: '000000000'
bankAccountName: Test Managed Account
streetAddress: null
suburb: null
state: null
postcode: null
country: AU
bankStatementLabel: ''
natureOfBusiness: null
organisationType: ''
notes: ''
contacts:
- isPrimaryContact: false
firstName: ''
lastName: ''
email: ''
phone: null
streetAddress: null
suburb: null
postcode: null
state: null
country: null
dob: null
governmentNumberSupplied: false
contactType: ''
ownership: null
jobTitle: null
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": \"mch_XXXXXXX\",\n \"testMerchantId\": \"mch_test_XXXXX\",\n \"testOnlyMerchant\": true,\n \"companyName\": \"Test Managed Company\",\n \"legalEntityName\": null,\n \"companyEmail\": \"test.managed.company@mailinator.com\",\n \"companyPhone\": null,\n \"companyWebsiteUrl\": null,\n \"companyRegistrationNumber\": null,\n \"bankAccountRoutingNumber\": \"000000\",\n \"bankAccountNumber\": \"000000000\",\n \"bankAccountName\": \"Test Managed Account\",\n \"streetAddress\": null,\n \"suburb\": null,\n \"state\": null,\n \"postcode\": null,\n \"country\": \"AU\",\n \"bankStatementLabel\": \"\",\n \"createdDateUtc\": \"2021-04-21T02:08:27.7128967Z\",\n \"natureOfBusiness\": null,\n \"organisationType\": \"\",\n \"compliance\": {\n \"merchantNotes\": \"New Merchant Created\",\n \"propertyErrors\": null,\n \"complianceOfficerNotes\": null,\n \"status\": \"new\",\n \"submissionDate\": \"2021-04-21T02:08:27.8146977Z\",\n \"decisionDate\": null,\n \"liveEnabled\": false,\n \"transactionsEnabled\": false,\n \"settlementsEnabled\": false\n },\n \"contacts\": [\n {\n \"id\": \"con_XXXXXXXXXXXXXX\",\n \"isPrimaryContact\": true,\n \"firstName\": \"\",\n \"lastName\": \"\",\n \"email\": \"\",\n \"phone\": null,\n \"streetAddress\": null,\n \"suburb\": null,\n \"postcode\": null,\n \"state\": null,\n \"country\": null,\n \"dob\": null,\n \"governmentNumberSupplied\": false,\n \"contactType\": \"owner\",\n \"ownership\": null,\n \"jobTitle\": null\n }\n ]\n}"
schema:
type: object
properties:
id:
type: string
example: mch_XXXXXXX
testMerchantId:
type: string
example: mch_test_XXXXX
testOnlyMerchant:
type: boolean
example: true
default: true
companyName:
type: string
example: Test Managed Company
legalEntityName: {}
companyEmail:
type: string
example: test.managed.company@mailinator.com
companyPhone: {}
companyWebsiteUrl: {}
companyRegistrationNumber: {}
bankAccountRoutingNumber:
type: string
example: '000000'
bankAccountNumber:
type: string
example: '000000000'
bankAccountName:
type: string
example: Test Managed Account
streetAddress: {}
suburb: {}
state: {}
postcode: {}
country:
type: string
example: AU
bankStatementLabel:
type: string
example: ''
createdDateUtc:
type: string
example: '2021-04-21T02:08:27.7128967Z'
natureOfBusiness: {}
organisationType:
type: string
example: ''
compliance:
type: object
properties:
merchantNotes:
type: string
example: New Merchant Created
propertyErrors: {}
complianceOfficerNotes: {}
status:
type: string
example: new
submissionDate:
type: string
example: '2021-04-21T02:08:27.8146977Z'
decisionDate: {}
liveEnabled:
type: boolean
example: false
default: true
transactionsEnabled:
type: boolean
example: false
default: true
settlementsEnabled:
type: boolean
example: false
default: true
contacts:
type: array
items:
type: object
properties:
id:
type: string
example: con_XXXXXXXXXXXXXX
isPrimaryContact:
type: boolean
example: true
default: true
firstName:
type: string
example: ''
lastName:
type: string
example: ''
email:
type: string
example: ''
phone: {}
streetAddress: {}
suburb: {}
postcode: {}
state: {}
country: {}
dob: {}
governmentNumberSupplied:
type: boolean
example: false
default: true
contactType:
type: string
example: owner
ownership: {}
jobTitle: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "[\n {\n \"propertyName\": \"CompanyName\",\n \"errorMessage\": \"'Company Name' must not be empty.\",\n \"attemptedValue\": \"\",\n \"customState\": null,\n \"severity\": 0,\n \"errorCode\": \"NotEmptyValidator\",\n \"formattedMessageArguments\": [],\n \"formattedMessagePlaceholderValues\": {\n \"PropertyName\": \"Company Name\",\n \"PropertyValue\": \"\"\n },\n \"resourceName\": \"NotEmptyValidator\"\n },\n {\n \"propertyName\": \"CompanyEmail\",\n \"errorMessage\": \"'Company Email' must not be empty.\",\n \"attemptedValue\": \"\",\n \"customState\": null,\n \"severity\": 0,\n \"errorCode\": \"NotEmptyValidator\",\n \"formattedMessageArguments\": [],\n \"formattedMessagePlaceholderValues\": {\n \"PropertyName\": \"Company Email\",\n \"PropertyValue\": \"\"\n },\n \"resourceName\": \"NotEmptyValidator\"\n },\n {\n \"propertyName\": \"CompanyEmail\",\n \"errorMessage\": \"'Company Email' is not a valid email address.\",\n \"attemptedValue\": \"\",\n \"customState\": null,\n \"severity\": 0,\n \"errorCode\": \"EmailValidator\",\n \"formattedMessageArguments\": [],\n \"formattedMessagePlaceholderValues\": {\n \"PropertyName\": \"Company Email\",\n \"PropertyValue\": \"\"\n },\n \"resourceName\": \"EmailValidator\"\n },\n {\n \"propertyName\": \"BankAccountRoutingNumber\",\n \"errorMessage\": \"'Bank Account Routing Number' must not be empty.\",\n \"attemptedValue\": \"\",\n \"customState\": null,\n \"severity\": 0,\n \"errorCode\": \"NotEmptyValidator\",\n \"formattedMessageArguments\": [],\n \"formattedMessagePlaceholderValues\": {\n \"PropertyName\": \"Bank Account Routing Number\",\n \"PropertyValue\": \"\"\n },\n \"resourceName\": \"NotEmptyValidator\"\n },\n {\n \"propertyName\": \"BankAccountNumber\",\n \"errorMessage\": \"'Bank Account Number' must not be empty.\",\n \"attemptedValue\": \"\",\n \"customState\": null,\n \"severity\": 0,\n \"errorCode\": \"NotEmptyValidator\",\n \"formattedMessageArguments\": [],\n \"formattedMessagePlaceholderValues\": {\n \"PropertyName\": \"Bank Account Number\",\n \"PropertyValue\": \"\"\n },\n \"resourceName\": \"NotEmptyValidator\"\n }\n]"
schema:
type: array
items:
type: object
properties:
propertyName:
type: string
example: CompanyName
errorMessage:
type: string
example: '''Company Name'' must not be empty.'
attemptedValue:
type: string
example: ''
customState: {}
severity:
type: integer
example: 0
default: 0
errorCode:
type: string
example: NotEmptyValidator
formattedMessageArguments:
type: array
formattedMessagePlaceholderValues:
type: object
properties:
PropertyName:
type: string
example: Company Name
PropertyValue:
type: string
example: ''
resourceName:
type: string
example: NotEmptyValidator
deprecated: false
x-readme:
code-samples:
- language: csharp
code: "var result = await api.Merchant.CreateManagedMerchant(new ManagedMerchantCreateOptions()\n{\n \tCompanyName = \"Ben's Whitelabling\",\n\t CompanyEmail = \"benwhitelabel@mailinator.com\",\n\t\tBsb = \"012-000\",\n\t\tAccountNumber = \"123456\",\n\t\tContactEmail = \"benwhitelabel@mailinator.com\",\n\t\tContactFirstName = \"Ben\",\n \tContactLastName = \"Whitelabel\"\n});"
samples-languages:
- csharp
tags:
- Merchants
get:
summary: List Managed Merchants
description: ''
operationId: list-managed-merchants
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "[\n {\n \"id\": \"mch_XXXXX\",\n \"testMerchantId\": \"mch_test_XXXX\",\n \"testOnlyMerchant\": true,\n \"companyName\": \"Test Managed Company\",\n \"legalEntityName\": null,\n \"companyEmail\": \"test.managed.company@mailinator.com\",\n \"companyPhone\": null,\n \"companyWebsiteUrl\": null,\n \"companyRegistrationNumber\": null,\n \"bankAccountRoutingNumber\": \"000000\",\n \"bankAccountNumber\": \"000000000\",\n \"bankAccountName\": \"Test Managed Account\",\n \"streetAddress\": null,\n \"suburb\": null,\n \"state\": null,\n \"postcode\": null,\n \"country\": \"AU\",\n \"bankStatementLabel\": \"\",\n \"createdDateUtc\": \"2021-04-21T02:08:27.7128967\",\n \"natureOfBusiness\": null,\n \"organisationType\": \"\",\n \"compliance\": {\n \"merchantNotes\": \"New Merchant Created\",\n \"propertyErrors\": null,\n \"complianceOfficerNotes\": null,\n \"status\": \"new\",\n \"submissionDate\": \"2021-04-21T02:08:27.8146977Z\",\n \"decisionDate\": null,\n \"liveEnabled\": false,\n \"transactionsEnabled\": false,\n \"settlementsEnabled\": false\n },\n \"contacts\": [\n {\n \"id\": \"con_XXXXX\",\n \"isPrimaryContact\": true,\n \"firstName\": \"\",\n \"lastName\": \"\",\n \"email\": \"\",\n \"phone\": null,\n \"streetAddress\": null,\n \"suburb\": null,\n \"postcode\": null,\n \"state\": null,\n \"country\": null,\n \"dob\": null,\n \"governmentNumberSupplied\": false,\n \"contactType\": \"owner\",\n \"ownership\": null,\n \"jobTitle\": null\n }\n ]\n }\n]"
schema:
type: array
items:
type: object
properties:
id:
type: string
example: mch_XXXXX
testMerchantId:
type: string
example: mch_test_XXXX
testOnlyMerchant:
type: boolean
example: true
default: true
companyName:
type: string
example: Test Managed Company
legalEntityName: {}
companyEmail:
type: string
example: test.managed.company@mailinator.com
companyPhone: {}
companyWebsiteUrl: {}
companyRegistrationNumber: {}
bankAccountRoutingNumber:
type: string
example: '000000'
bankAccountNumber:
type: string
example: '000000000'
bankAccountName:
type: string
example: Test Managed Account
streetAddress: {}
suburb: {}
state: {}
postcode: {}
country:
type: string
example: AU
bankStatementLabel:
type: string
example: ''
createdDateUtc:
type: string
example: '2021-04-21T02:08:27.7128967'
natureOfBusiness: {}
organisationType:
type: string
example: ''
compliance:
type: object
properties:
merchantNotes:
type: string
example: New Merchant Created
propertyErrors: {}
complianceOfficerNotes: {}
status:
type: string
example: new
submissionDate:
type: string
example: '2021-04-21T02:08:27.8146977Z'
decisionDate: {}
liveEnabled:
type: boolean
example: false
default: true
transactionsEnabled:
type: boolean
example: false
default: true
settlementsEnabled:
type: boolean
example: false
default: true
contacts:
type: array
items:
type: object
properties:
id:
type: string
example: con_XXXXX
isPrimaryContact:
type: boolean
example: true
default: true
firstName:
type: string
example: ''
lastName:
type: string
example: ''
email:
type: string
example: ''
phone: {}
streetAddress: {}
suburb: {}
postcode: {}
state: {}
country: {}
dob: {}
governmentNumberSupplied:
type: boolean
example: false
default: true
contactType:
type: string
example: owner
ownership: {}
jobTitle: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
tags:
- Merchants
/merchants/update:
post:
summary: Update Merchant
description: ''
operationId: update-merchant
requestBody:
content:
application/json:
schema:
type: object
properties:
companyName:
type: string
legalEntityName:
type: string
companyEmail:
type: string
companyPhone:
type: string
companyWebsiteUrl:
type: string
companyRegistrationNumber:
type: string
bankAccountRoutingNumber:
type: string
bankAccountNumber:
type: string
bankAccountName:
type: string
streetAddress:
type: string
suburb:
type: string
state:
type: string
postcode:
type: string
country:
type: string
bankStatementLabel:
type: string
natureOfBusiness:
type: string
organisationType:
type: string
notes:
type: string
contacts:
type: array
items:
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
contactType:
type: string
enum:
- owner
- director
- shareholder
- executive
phone:
type: string
streetAddress:
type: string
suburb:
type: string
postcode:
type: string
state:
type: string
country:
type: string
dob:
type: string
description: Recommended ISO format (yyyy-mm-dd)
format: date
isPrimaryContact:
type: boolean
required:
- email
- contactType
- isPrimaryContact
type: object
required:
- companyName
- companyEmail
examples:
Request Example:
value:
companyName: ''
legalEntityName: null
companyEmail: ''
companyPhone: null
companyWebsiteUrl: null
companyRegistrationNumber: null
bankAccountRoutingNumber: ''
bankAccountNumber: ''
bankAccountName: ''
streetAddress: null
suburb: null
state: null
postcode: null
country: AU
bankStatementLabel: ''
natureOfBusiness: null
organisationType: ''
notes: ''
contacts:
- id: con_
isPrimaryContact: false
firstName: ''
lastName: ''
email: ''
phone: null
streetAddress: null
suburb: null
postcode: null
state: null
country: null
dob: null
governmentNumberSupplied: false
contactType: ''
ownership: null
jobTitle: null
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": \"mch_XXXXXX\",\n \"testMerchantId\": \"mch_test_XXXXX\",\n \"testOnlyMerchant\": false,\n \"companyName\": \"Test Merchant 123\",\n \"legalEntityName\": null,\n \"companyEmail\": \"test.merchant@mailinator.com\",\n \"companyPhone\": null,\n \"companyWebsiteUrl\": null,\n \"companyRegistrationNumber\": null,\n \"bankAccountRoutingNumber\": \"000000\",\n \"bankAccountNumber\": \"000000000\",\n \"bankAccountName\": \"Test Bank Account\",\n \"streetAddress\": null,\n \"suburb\": null,\n \"state\": null,\n \"postcode\": null,\n \"country\": \"AU\",\n \"bankStatementLabel\": \"TEST MERCHANT\",\n \"createdDateUtc\": \"2021-04-14T00:30:18.226759\",\n \"logoUrl\": null,\n \"natureOfBusiness\": null,\n \"organisationType\": \"\",\n \"compliance\": {\n \"merchantNotes\": \"New Merchant Created\",\n \"propertyErrors\": null,\n \"complianceOfficerNotes\": null,\n \"status\": \"new\",\n \"submissionDate\": \"2021-04-14T00:30:18.8283947Z\",\n \"decisionDate\": null,\n \"liveEnabled\": false,\n \"transactionsEnabled\": false,\n \"settlementsEnabled\": false\n },\n \"contacts\": [\n {\n \"id\": \"con_XXXXXX\",\n \"isPrimaryContact\": true,\n \"firstName\": \"Test\",\n \"lastName\": \"Contact\",\n \"email\": \"test.contact@mailinator.com\",\n \"phone\": null,\n \"streetAddress\": null,\n \"suburb\": null,\n \"postcode\": null,\n \"state\": null,\n \"country\": null,\n \"dob\": null,\n \"governmentNumberSupplied\": false,\n \"contactType\": \"\",\n \"ownership\": null,\n \"jobTitle\": null\n }\n ]\n}"
schema:
type: object
properties:
id:
type: string
example: mch_XXXXXX
testMerchantId:
type: string
example: mch_test_XXXXX
testOnlyMerchant:
type: boolean
example: false
default: true
companyName:
type: string
example: Test Merchant 123
legalEntityName: {}
companyEmail:
type: string
example: test.merchant@mailinator.com
companyPhone: {}
companyWebsiteUrl: {}
companyRegistrationNumber: {}
bankAccountRoutingNumber:
type: string
example: '000000'
bankAccountNumber:
type: string
example: '000000000'
bankAccountName:
type: string
example: Test Bank Account
streetAddress: {}
suburb: {}
state: {}
postcode: {}
country:
type: string
example: AU
bankStatementLabel:
type: string
example: TEST MERCHANT
createdDateUtc:
type: string
example: '2021-04-14T00:30:18.226759'
logoUrl: {}
natureOfBusiness: {}
organisationType:
type: string
example: ''
compliance:
type: o
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinch-payments/refs/heads/main/openapi/pinch-payments-merchants-api-openapi.yml