Skip to main content
An entity is a business you onboard and operate on behalf of: its profile, compliance details, and per-operation limitations. It combines an organization and its owner into a single record that Melio screens against KYC and compliance requirements. A business must clear those requirements before it can send payments. Only business entities are supported today.

Endpoints

{entityId} is an entity id (ent_<uuid>) or the sentinel me, which resolves to the partner’s sole entity. The same value is accepted in the Melio-Entity-Id header used by other resources.

Entity fields

Supplied when you create an entity. Every field below except externalId, metadata, website, and description is required on create.

Tax info

  • type is one of ein, ssn, or itin. ein is accepted for every business type; ssn is accepted only for sole-proprietorship and trust. itin is retained for backward compatibility but is no longer accepted for any business type.
  • identifier is a 9-digit tax id, optionally dash-separated. It is write-only: responses return only taxInfo.identifierLast4.

Address

line1, city, state (two-letter US code), and postalCode are required; line2, aptNumber, and countryCode (defaults to US) are optional. The physical address may not be a PO box.

Owner

firstName, lastName, email, and dateOfBirth are required and are collected for sanctions screening; phoneNumber is optional. The owner must be between 18 and 120 years old, and stricter date-of-birth validation applies when taxInfo.type is ssn.

Creating an entity

A successful create returns 201 with the entity, including its id (ent_<uuid>). Send an Idempotency-Key so retries are safe. See Idempotency.

Direct vs. platform partners

  • A direct partner manages a single entity, its own business. A second POST /entities returns 409 conflict_error / DUPLICATE_ENTITY.
  • A platform partner can create as many entities as it needs, one per business it serves.

Conflicts

On DUPLICATE_EXTERNAL_ID you can recover by fetching the existing entity with GET /entities?externalId=<yourId> and reusing it, which makes queued retries safe once the idempotency-key window has elapsed.

Updating an entity

PATCH /entities/{entityId} changes only the fields you send.
legalName, legalAddress, and taxInfo are fixed once the entity is created. Including any of them in a PATCH returns 400 VALIDATION_ERROR.

Payment eligibility

Creating an entity does not clear it to transact. Melio screens the profile against KYC and compliance requirements, and the result is exposed as per-operation limitations. Check them with GET /limitations:
Each capability reports whether an operation (for example payment.domestic:write) is allowed, and if not, the reasons why. A MissingInformation reason lists the entity fields that still need to be supplied in missingFields:
Resolve each missingFields entry with a PATCH /entities/{entityId}, then re-check. Rather than polling, subscribe to the api.limitation.updated webhook event and re-fetch when it fires. See Limitations for the full model, and Errors for the BUSINESS_NOT_ELIGIBLE response returned when you attempt a blocked operation.