business entities are supported today.
Creating an entity also requires the business’s acceptance of the Melio terms of service, which you attest to in the request. See Terms acceptance.
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 exceptexternalId, metadata, website, and description is required on create.
Tax info
typeis one ofein,ssn.einis accepted for every business type;ssnis accepted only forsole-proprietorshipandtrust.identifieris a 9-digit tax id, optionally dash-separated. It is write-only: responses return onlytaxInfo.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.
Terms acceptance
An entity cannot be created unless the business has accepted the Melio terms of service. You own the screen where the business accepts, sotermsAcceptance is your attestation that the business was shown the terms and accepted them.
acceptedAt must:
- Carry a UTC offset, such as
Zor+09:00, so it identifies one unambiguous instant. A timestamp without an offset is rejected. Any timezone is fine. - Be within the last 90 days.
- Be no more than 14 hours ahead of Melio’s clock, which allows for a skewed clock on your side.
termsAcceptance:
acceptedAt.
Creating an entity
201 with the entity, including its id (ent_<uuid>) and the recorded termsAcceptance. 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 /entitiesreturns409 conflict_error/DUPLICATE_ENTITY. - A platform partner can create as many entities as it needs, one per business it serves. Each business must accept the terms, so send a
termsAcceptancefor every entity you create.
Validation errors
A missing or invalidtermsAcceptance returns 400 VALIDATION_ERROR and no entity is created.
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.
termsAcceptance is recorded when the entity is created and isn’t part of PATCH.
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 withGET /limitations:
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:
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.
Related
- Limitations - per-operation eligibility and reasons.
- External IDs - correlate entities with your own records.
- Idempotency - safe entity creation.