Mercoa Entity API
The Entity API from Mercoa — 2 operation(s) for entity.
The Entity API from Mercoa — 2 operation(s) for entity.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/mercoa:mercoa-entity-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Reference Entity API
version: 1.0.0
servers:
- url: https://api.mercoa.com
description: Production
tags:
- name: Entity
paths:
/entity/{entityId}/onboarding:
get:
operationId: entity_getOnboardingLink
summary: Generate Onboarding Link
description: Generate an onboarding link for the entity.
tags:
- Entity
parameters:
- name: entityId
in: path
description: Entity ID or Entity ForeignID
required: true
schema:
$ref: '#/components/schemas/entityTypes_EntityId'
- name: type
in: query
description: The type of onboarding link to generate. If not provided, the default is payee. The onboarding options are determined by your organization's onboarding configuration.
required: true
schema:
$ref: '#/components/schemas/entityTypes_EntityOnboardingLinkType'
- name: expiresIn
in: query
description: Expressed in seconds or a string describing a time span. The default is 24h.
required: false
schema:
type: string
- name: connectedEntityId
in: query
description: The ID of the entity to connect to. If onboarding a payee, this should be the payor entity ID. If onboarding a payor, this should be the payee entity ID. If no connected entity ID is provided, the onboarding link will be for a standalone entity.
required: false
schema:
$ref: '#/components/schemas/entityTypes_EntityId'
- name: redirectToPortal
in: query
description: If true, the onboarding link will redirect to the vendor/customer portal if the entity is already onboarded. If false, the onboarding link will not redirect to the portal. The default is false.
required: false
schema:
type: boolean
- name: vendorPortalOptions
in: query
description: The options for the vendor portal.
required: false
schema:
$ref: '#/components/schemas/entityTypes_VendorPortalOptions'
responses:
'200':
description: Response with status 200
content:
application/json:
schema:
type: string
'400':
description: Error response with status 400
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- BadRequest
content:
type: string
required:
- errorName
- content
'401':
description: Error response with status 401
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unauthorized
content:
type: string
required:
- errorName
- content
'403':
description: Error response with status 403
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Forbidden
content:
type: string
required:
- errorName
- content
'404':
description: Error response with status 404
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- NotFound
content:
type: string
required:
- errorName
- content
'409':
description: Error response with status 409
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Conflict
content:
type: string
required:
- errorName
- content
'500':
description: Error response with status 500
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- InternalServerError
content:
type: string
required:
- errorName
- content
'501':
description: Error response with status 501
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unimplemented
content:
type: string
required:
- errorName
- content
security:
- default: []
post:
operationId: entity_sendOnboardingLink
summary: Send Onboarding Email
description: Send an email with a onboarding link to the entity. The email will be sent to the email address associated with the entity.
tags:
- Entity
parameters:
- name: entityId
in: path
description: Entity ID or Entity ForeignID
required: true
schema:
$ref: '#/components/schemas/entityTypes_EntityId'
- name: type
in: query
description: The type of onboarding link to generate. If not provided, the default is payee. The onboarding options are determined by your organization's onboarding configuration.
required: true
schema:
$ref: '#/components/schemas/entityTypes_EntityOnboardingLinkType'
- name: expiresIn
in: query
description: Expressed in seconds or a string describing a time span. The default is 7 days.
required: false
schema:
type: string
- name: connectedEntityId
in: query
description: The ID of the entity to connect to. If onboarding a payee, this should be the payor entity ID. If onboarding a payor, this should be the payee entity ID. If no connected entity ID is provided, the onboarding link will be for a standalone entity.
required: false
schema:
$ref: '#/components/schemas/entityTypes_EntityId'
- name: redirectToPortal
in: query
description: If true, the onboarding link will redirect to the vendor/customer portal if the entity is already onboarded. If false, the onboarding link will not redirect to the portal. The default is false.
required: false
schema:
type: boolean
- name: vendorPortalOptions
in: query
description: The options for the vendor portal.
required: false
schema:
$ref: '#/components/schemas/entityTypes_VendorPortalOptions'
responses:
'200':
description: Successful response
'400':
description: Error response with status 400
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- BadRequest
content:
type: string
required:
- errorName
- content
'401':
description: Error response with status 401
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unauthorized
content:
type: string
required:
- errorName
- content
'403':
description: Error response with status 403
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Forbidden
content:
type: string
required:
- errorName
- content
'404':
description: Error response with status 404
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- NotFound
content:
type: string
required:
- errorName
- content
'409':
description: Error response with status 409
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Conflict
content:
type: string
required:
- errorName
- content
'500':
description: Error response with status 500
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- InternalServerError
content:
type: string
required:
- errorName
- content
'501':
description: Error response with status 501
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unimplemented
content:
type: string
required:
- errorName
- content
security:
- default: []
/entity/{entityId}/events:
get:
operationId: entity_events
summary: Events
description: Get all events for an entity
tags:
- Entity
parameters:
- name: entityId
in: path
description: Entity ID or Entity ForeignID
required: true
schema:
$ref: '#/components/schemas/entityTypes_EntityId'
- name: startDate
in: query
description: Start date filter. If not provided, events from the start of time will be returned.
required: false
schema:
type: string
format: date-time
- name: endDate
in: query
description: End date filter. If not provided, events to the end of time will be returned.
required: false
schema:
type: string
format: date-time
- name: limit
in: query
description: Number of events to return. Limit can range between 1 and 100, and the default is 50.
required: false
schema:
type: integer
- name: startingAfter
in: query
description: The ID of the event to start after. If not provided, the first page of events will be returned.
required: false
schema:
$ref: '#/components/schemas/entityTypes_EntityEventId'
responses:
'200':
description: Response with status 200
content:
application/json:
schema:
$ref: '#/components/schemas/entityTypes_EntityEventsResponse'
'400':
description: Error response with status 400
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- BadRequest
content:
type: string
required:
- errorName
- content
'401':
description: Error response with status 401
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unauthorized
content:
type: string
required:
- errorName
- content
'403':
description: Error response with status 403
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Forbidden
content:
type: string
required:
- errorName
- content
'404':
description: Error response with status 404
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- NotFound
content:
type: string
required:
- errorName
- content
'409':
description: Error response with status 409
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Conflict
content:
type: string
required:
- errorName
- content
'500':
description: Error response with status 500
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- InternalServerError
content:
type: string
required:
- errorName
- content
'501':
description: Error response with status 501
content:
application/json:
schema:
type: object
properties:
errorName:
type: string
enum:
- Unimplemented
content:
type: string
required:
- errorName
- content
security:
- default: []
components:
schemas:
entityTypes_EntityStatus:
type: string
enum:
- unverified
- pending
- resubmit
- review
- verified
- failed
title: EntityStatus
entityTypes_EntityEventsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/entityTypes_EntityEvent'
count:
type: integer
hasMore:
type: boolean
required:
- data
- count
- hasMore
title: EntityEventsResponse
entityTypes_VendorPortalTab:
type: string
enum:
- HOME
- PROFILE
- INVOICES
- PAYMENT_METHODS
- VENDOR_CREDITS
title: VendorPortalTab
commons_Address:
type: object
properties:
addressLine1:
type: string
addressLine2:
type: string
city:
type: string
stateOrProvince:
type: string
description: State or province code. Must be in the format XX.
postalCode:
type: string
description: Postal code. Must be in the format XXXXX or XXXXX-XXXX.
country:
type: string
required:
- addressLine1
- city
- stateOrProvince
- postalCode
title: Address
entityTypes_EntityEvent:
type: object
properties:
id:
$ref: '#/components/schemas/entityTypes_EntityEventId'
description: The ID of the event
data:
$ref: '#/components/schemas/entityTypes_EntityResponse'
description: The payment method data at the time of the event
webhookIds:
type: array
items:
type: string
description: The list of webhook IDs associated with this event
userId:
$ref: '#/components/schemas/entityTypes_EntityUserId'
description: The ID of the user who triggered the event
updatedByEntityId:
$ref: '#/components/schemas/entityTypes_EntityId'
description: The ID of the entity that updated the payment method
createdAt:
type: string
format: date-time
description: The timestamp when the event was created
required:
- id
- data
- webhookIds
- createdAt
title: EntityEvent
entityTypes_BusinessType:
type: string
enum:
- soleProprietorship
- unincorporatedAssociation
- trust
- publicCorporation
- privateCorporation
- llc
- partnership
- unincorporatedNonProfit
- incorporatedNonProfit
title: BusinessType
entityTypes_TaxID:
type: object
properties:
ein:
$ref: '#/components/schemas/entityTypes_Ein'
required:
- ein
title: TaxID
entityTypes_BusinessProfileResponse:
type: object
properties:
email:
type: string
legalBusinessName:
type: string
businessType:
$ref: '#/components/schemas/entityTypes_BusinessType'
phone:
$ref: '#/components/schemas/commons_PhoneNumber'
doingBusinessAs:
type: string
website:
type: string
description:
type: string
address:
$ref: '#/components/schemas/commons_Address'
ownersProvided:
type: boolean
description: True if all representatives have been provided for this business.
taxIDProvided:
type: boolean
taxId:
$ref: '#/components/schemas/entityTypes_TaxID'
formationDate:
type: string
format: date-time
industryCodes:
$ref: '#/components/schemas/entityTypes_IndustryCodes'
averageMonthlyTransactionVolume:
type: number
format: double
averageTransactionSize:
type: number
format: double
maxTransactionSize:
type: number
format: double
required:
- legalBusinessName
- taxIDProvided
title: BusinessProfileResponse
entityTypes_IndividualProfileResponse:
type: object
properties:
email:
type: string
name:
$ref: '#/components/schemas/commons_FullName'
phone:
$ref: '#/components/schemas/commons_PhoneNumber'
address:
$ref: '#/components/schemas/commons_Address'
birthDateProvided:
type: boolean
governmentIDProvided:
type: boolean
required:
- name
- birthDateProvided
- governmentIDProvided
title: IndividualProfileResponse
entityTypes_EntityUserId:
type: string
title: EntityUserId
entityTypes_EntityEventId:
type: string
title: EntityEventId
entityTypes_Ein:
type: object
properties:
number:
type: string
description: Must be in the format XX-XXXXXXX.
required:
- number
title: Ein
commons_PhoneNumber:
type: object
properties:
countryCode:
type: string
number:
type: string
required:
- countryCode
- number
title: PhoneNumber
entityTypes_ProfileResponse:
type: object
properties:
business:
$ref: '#/components/schemas/entityTypes_BusinessProfileResponse'
description: Will be set if the entity is a business
individual:
$ref: '#/components/schemas/entityTypes_IndividualProfileResponse'
description: Will be set if the entity is a individual
title: ProfileResponse
commons_FullName:
type: object
properties:
firstName:
type: string
middleName:
type: string
lastName:
type: string
suffix:
type: string
required:
- firstName
- lastName
title: FullName
entityTypes_EntityOnboardingLinkType:
type: string
enum:
- PAYEE
- PAYOR
title: EntityOnboardingLinkType
entityTypes_IndustryCodes:
type: object
properties:
mcc:
type: string
title: IndustryCodes
entityTypes_EntityResponse:
type: object
properties:
id:
$ref: '#/components/schemas/entityTypes_EntityId'
name:
type: string
email:
type: string
foreignId:
type: string
description: The ID used to identify this entity in your system
emailTo:
type: string
description: Local-part/username of the email address to which to send invoices to be added to the Invoice Inbox.
emailToAlias:
type: array
items:
type: string
description: Email inbox alias addresses. Used when forwarding emails to the emailTo address from an alias.
isCustomer:
type: boolean
description: True if this entity has a direct relationship with your organization.
accountType:
$ref: '#/components/schemas/entityTypes_AccountType'
profile:
$ref: '#/components/schemas/entityTypes_ProfileResponse'
logo:
type: string
description: URL for the entity logo
status:
$ref: '#/components/schemas/entityTypes_EntityStatus'
oatfiStatus:
type: string
description: The OatFi status of this entity
oatfiUnderwritingResponse:
type: object
additionalProperties:
type: string
description: The OatFi underwriting response of this entity
acceptedTos:
type: boolean
description: True if this entity has accepted the terms of service.
isPayor:
type: boolean
description: True if this entity can pay invoices.
isPayee:
type: boolean
description: True if this entity can receive payments.
isNetworkPayor:
type: boolean
description: True if this entity is available as a payor to any entity on your platform. Otherwise this entity will only be available as a payor to entities that have a direct relationship with this entity.
isNetworkPayee:
type: boolean
description: True if this entity is available as a payee to any entity on your platform. Otherwise this entity will only be available as a payee to entities that have a direct relationship with this entity.
metadata:
type: object
additionalProperties:
type: string
description: Simple key/value metadata associated with this entity. For more complex metadata, use the Metadata API.
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- id
- name
- email
- isCustomer
- accountType
- profile
- status
- acceptedTos
- isPayor
- isPayee
- isNetworkPayor
- isNetworkPayee
- createdAt
- updatedAt
title: EntityResponse
entityTypes_EntityId:
type: string
title: EntityId
entityTypes_VendorPortalOptions:
type: object
properties:
tabs:
type: array
items:
$ref: '#/components/schemas/entityTypes_VendorPortalTab'
description: The tabs to display in the vendor portal. If not provided, all tabs will be displayed.
defaultTab:
$ref: '#/components/schemas/entityTypes_VendorPortalTab'
description: The default tab to display in the vendor portal. If not provided, the HOME tab will be displayed.
welcomeMessage:
type: string
description: The welcome message to display in the vendor portal. If not provided, no welcome message will be displayed.
title: VendorPortalOptions
entityTypes_AccountType:
type: string
enum:
- business
- individual
title: AccountType
securitySchemes:
default:
type: http
scheme: bearer