ACTIVE.
Prerequisites
Before you implement onboarding, decide:- whether your integration is
SINGLE_USERorMULTI_USER - whether the current request is using partner HMAC authentication or a Meridian JWT bearer token
- Choose your integration model
- Authentication overview
- Server-to-server authentication with HMAC
- Client-server authentication with JWT
How Meridian account onboarding works
Your integration is responsible for choosing the correct program for the customer. Once you create an access token in that program context, you can begin the enrollment orchestration for that customer. The Meridian user identity and the program enrollment are separate concerns. A customer may already have a MeridianuserId but still need a new enrollment in the program you selected for the current flow.
At a high level, the onboarding flow is:
Select the program
Determine which Meridian program the customer should be enrolled into. The
program defines the context in which the Meridian Account will exist.
Create an access token
Call
POST /v1/auth/token to create an access token for the customer in the
selected program context.Check the enrollment
Call
GET /v1/enrollment to determine whether the customer already has an
enrollment for that program.Activate enrollment when needed
If the returned enrollment status is
INACTIVE, call
POST /v1/enrollment/activate to activate or resume the enrollment for that
program.Complete the Information Request
Meridian creates an Information Request, which is a schema-driven
information collection system. Your integration should present and complete
the latest Information Request until it is ready for submission.
Enrollment is the program-level record
Think of the enrollment as the record that connects a Meridian user to a specific program. The same customer may exist in your system independently of Meridian. A Meridian Account is not ready until that customer has an active enrollment in the target program.GET /v1/enrollment always returns the enrollment state for the current program context. If the status is INACTIVE, the customer still needs enrollment activation and/or onboarding completion before you can use the account.
First-time enrollment flow
Use this sequence for a customer who is entering the program for the first time:- Create an access token with
POST /v1/auth/token. - Call
GET /v1/enrollment. - If the enrollment status is
INACTIVE, callPOST /v1/enrollment/activate. - Read the returned enrollment state and
latestInformationRequestdetails. - Use the Information Request endpoints to collect the required customer information.
- Submit the Information Request for review.
- Listen for webhook updates until the enrollment becomes
ACTIVE.
INACTIVE with a latestInformationRequest while onboarding is still in progress. The enrollment exists, but the customer still has required information to complete before the account can be used.
Understanding the Information Request
In Meridian Accounts, an Information Request is the mechanism used to collect the information and documentation required to complete enrollment. The Information Request is schema-driven, which means your integration should use the structure returned by the API to determine:- which steps to show
- which fields are required
- whether documents must be uploaded
- whether the Information Request is complete and ready to submit
Information Request lifecycle
Use the Information Request endpoints to drive onboarding from the current Meridian state instead of hardcoding your own form flow.1. Find the active Information Request
After you activate an enrollment, check the enrollment response forlatestInformationRequest. If the customer already has an in-progress onboarding flow, use that Information Request ID to continue from the existing state.
You can also call GET /v1/information-requests to list Information Requests in the current program context, then call GET /v1/information-requests/{informationRequestId} to load the full schema for the latest Information Request.
2. Render the Information Request from the schema
UseGET /v1/information-requests/{informationRequestId} to load the current Information Request definition.
The response is organized into steps and requirements. Use that response to determine:
- which sections to show
- which fields belong to each section
- whether a requirement has a single entry or repeated entries
- how each field must be collected
- whether each step, requirement, or field is currently
MISSING,INVALID, orVALID
3. Use the two collection modes
Each Information Request item tells you how Meridian expects that field to be collected by usingcollectionMode.
The two collection modes are:
DIRECT_INPUT: collect a value directly in your UI and send it withPATCH /v1/information-requests/{informationRequestId}FILE_UPLOAD: collect one or more files and upload them withPOST /v1/information-requests/{informationRequestId}/file-uploads
DIRECT_INPUT items, use the directInput schema on the item to understand the expected value shape. Meridian uses the JSON Schema standard for this definition. A direct-input item may represent a single value, or a structured object whose data fields you must collect together.
For FILE_UPLOAD items, use the fileUpload configuration on the item to enforce Meridian’s file requirements, including:
- minimum and maximum file count
- allowed MIME types
- allowed file extensions
- maximum file size
DIRECT_INPUT, do not treat it as a document upload. If it is marked FILE_UPLOAD, do not try to satisfy it with a text field.
4. Handle single and repeated requirements
Each requirement also tells you whether it isSINGLE or MULTIPLE.
SINGLEmeans the requirement has one set of valuesMULTIPLEmeans the customer may need to provide repeated entries, such as multiple beneficial owners
MULTIPLE requirements, use the metadata returned by the API to guide the experience:
addInstanceLabelto label the add actioninstanceHeaderPrefixto label each repeated entryminInstanceCountandmaxInstanceCountto control how many entries are allowedinstancesto render the values already collected
instanceIndex in each patch item so Meridian can associate the value with the correct entry.
5. Save values and re-read validation
UsePATCH /v1/information-requests/{informationRequestId} to save direct-input values as the customer progresses through onboarding.
Each patch item identifies:
requirementKeyfor the requirement being updateditemKeyfor the specific fieldvaluefor the field valueinstanceIndexwhen the requirement supports multiple entries
- step-level
validationStatusshows whether the section is complete - requirement-level
validationStatusshows whether that requirement is satisfied - field-level validation on current values shows whether an individual value is missing, invalid, or valid
- which errors to show
- which sections still need attention
- whether the customer can continue
- whether the Information Request is ready to submit
6. Submit for review
When the Information Request is complete, callPOST /v1/information-requests/{informationRequestId}/submit to send it for review.
A submitted Information Request does not mean the customer is fully onboarded yet. After submission, the Information Request may move through review before the enrollment becomes ACTIVE.
7. Wait for status updates
After submission, continue monitoring both enrollment and Information Request state. Your integration should:- consume
information_request_status_updatedwebhooks to detect review progress - consume
enrollment_status_updatedwebhooks to know when onboarding is complete - treat enrollment
ACTIVEas the final signal that the Meridian Account is ready to use
When the account is ready
The Meridian Account is ready for use only after the enrollment reachesACTIVE. Until then, the customer is still in onboarding even if Meridian has created the enrollment record.
Once the enrollment becomes ACTIVE:
- the required onboarding flow is complete
- Meridian sends an enrollment webhook
- your integration can treat the Meridian Account as ready for use
Recommended integration behavior
Your integration should:- store the program context used for onboarding
- treat enrollment status
INACTIVEas the condition for callingPOST /v1/enrollment/activate - drive the onboarding UI from the latest Information Request schema
- treat enrollment status
ACTIVEas the final ready-for-use signal, andINACTIVEas the activation or onboarding-in-progress state - wait for enrollment
ACTIVEbefore enabling account functionality - consume enrollment and Information Request webhooks so your system stays synchronized with Meridian state