Individual API Reference
- Endpoints for Online Onboarding for individuals
- 1. Create an individual Account
- 2. Trigger an Onboarding
- 3. Resume an in-process Onboarding
- 4. Manage Onboarding
- 5. Get Documents
ImportantAs a reminder, the following uniqueness criteria must be respected when creating Accounts:
- Individuals: first name, last name, date of birth, country of birth
- Legal Entities: name, registration number (company only), registration country, registration date
- Legal Representatives: same rules as for individuals
Please ensure that real and accurate data is always provided. Random or placeholder data must not be used, even if the information might later be updated during online onboarding.
Endpoints for Online Onboarding for individuals
NoteWhen passing the token in the header for Online Onboarding, make sure to use "Bearer" with a capital B. Using Authorization: bearer (with a lowercase "b") will result in a 403 Forbidden error.
Operations | Endpoints | Description |
---|---|---|
Create an Account | POST /accounts/individual | Provision a new individual account. |
Trigger Onboarding | POST /onboardings/individual | If the account’s profile status is awaiting_information , start the onboarding flow. |
Resume Onboarding | GET /onboardings/{onboardingId}/resume | Resume a previously-started, in-progress onboarding. |
List All Accounts | GET /accounts | Retrieve a list of all individual (and/or corporate) accounts. |
Retrieve Specific Account | GET /accounts/{id} | Fetch details for a single account by its unique ID. |
Get Documents | GET /accounts/{accountid}/documents/{documentName} | Retrieve a list of all individual (and/or corporate) documents. |
1. Create an individual Account
Description: Creates a new individual Lemonway account for onboarding a new user. If the individual already has a Lemonway account,
but requires full onboarding, use POST /onboardings/individual
and provide the user’s unique accountId.
Request Body: An account object containing an individual field with the individuals details.
Endpoint: POST /accounts/individual
Resource: account (subtype: individual)
1.1 Payload
When you submit the following example JSON payload, the API will:
- Validates you’ve provided all required fields.
- Creates an account record of type “individual.”
- Associate a new wallet entry using the walletId.
- Returns a populated account object (including a server-assigned Id) so you can pass it into subsequent onboarding calls.
Important: In the Response a unique Id is created. This Id corresponds to the accountId field in the endpoint POST /onboardings/individual.
{
"individual": {
"firstName": "Jonathan",
"lastName": "Lamary",
"birthDate": "1973-06-01",
"email": "[email protected]",
"address": {
"country": "FR"
},
"birthCountry": "FR",
"nationalities": [
"FR",
"GB"
]
},
"profile": "DONOR",
"walletId": "6768992",
}
1.2 Response
{
"id": "ee928147-d51e-4f22-a26c-d2c2a2sebd8d", <-- Lemonway autogenerated account identifier, string, uuid
"status": "CREATED", <-- "global" status for the account, string
"profileStatus": "AWAITING_INFORMATION" <-- profile showing the progress of the onboarding process, string
}
1.3 Parameters
User’s activity profile (only one). Other options: DONOR, INVESTOR, LENDER, BUYER, MERCHANT, CREDITOR, OPERATOR, CONTENT_EDITOR, OTHER_OPERATOR.
2. Trigger an Onboarding
Description: If the new account’s profile status is awaiting information
, begin the online onboarding flow by calling the endpoint.
Request Body: An Account object containing an individual field with the person’s details.
Endpoint: POST /onboardings/individual
Resource: onboardings (subtype: individual)
To initiate the Online Onboarding process using the POST/onboardings/individual
endpoint, you need to submit the same data you used for account creation, along with the accountId
we provided. All other data are optional to initiate an Online Onboarding and will be collected directly from the end-user, ensuring compliance with KYC requirements without additional data input from your side.
NoteSome end-user personal information may be pre-filled when they open onboarding page for the first time, notably the name, email and contact details. We use the initial end-user data you sent us to inject into online onboarding page.
2.1 Payload
When you submit the following example JSON payload, the API will:
- Identifies the account and link this KYC process to it.
- All mandatory personal, contact, and address data for identity checks.
- Assesses AML/PEP risk via political exposure, financial profile, and source of funds.
- Verifies legal eligibility (age, capacity).
- Understands the user’s business intent (FAREWELL project) and downstream beneficiary.
- Redirects the user back to your specified redirectUrl once all steps succeed (or fail).
{
"accountId": "b3b5a4e0-6a2e-4a0e-9e4d-4c6b0c5f7a21",
"redirectUrl": "https://www.lemonway.com/",
"individual": {
"firstName": "Giulia",
"lastName": "Romanelli",
"birthDate": "1990-05-14",
"email": "[email protected]",
"birthCity": "Torino",
"birthCountry": "IT",
"phoneNumber": "+33675869559",
"nationalities": [
"IT"
],
"taxCode": "235 6376",//Italian Residents only
"address": {
"street": "Via Roma 12",
"complementaryStreetInfo": "bis",
"city": "Torino",
"postalCode": "10121",
"country": "IT",
"province": "AL"
},
"politicalExposure": {
"position": "OTHER",
"otherPosition": "Member of Parliament"
"startDate": "2015-01-01",
"endDate": "2017-12-31",
"status": "YES"
},
"financialSituation": {
"annualRevenue": "50K € - 75K €",
"estimatedWealth": "100K € - 150K €",
"hasIFItax": true, //French Residents only
},
"legalCapacity": {
"type": "EmancipatedAdult"
},
"professionalSituation": {
"activity": "69"
}
},
"project": {
"type": "Crowdfunding",
"beneficiary": {
"firstName": "Luca",
"lastName": "Rossi",
"birthDate": "1992-09-21"
}
}
}
WEDDING:
"project": {
"type": "WEDDING",
"weddingRelation": "BRIDE_GROOM"
"weddingPartnerFirstName": "Hector",
"weddingPartnerLastName": "EMPEREUR",
"weddingPartnerBirthDate": "1996-01-09"
}
"project": {
"type": "WEDDING",
"weddingRelation": "OTHER"
"beneficiary": {
"firstName": "John",
"lastName": "Doe",
"birthDate": "1951-01-09"
}
}
FAREWELL: || BIRTHDAY: || NEW_BORN: ///Each are seperate business types
"project": {
"type": "FAREWELL"
"beneficiary": {
"firstName": "John",
"lastName": "Doe",
"birthDate": "1951-01-09"
}
CHARTIY: || OTHER: ///Each are seperate business types
"project": {
"type": "CHARITY",
"description": "lorem ipsum",
"website": "loremipsum.com"
}
2.2 Response
{
"id": "cc8c6dc8-cb1e-4edc-aae1-3652cc7b5228", <-- Lemonway autogenerated Onboarding identifier, string, uuid
"url": "https://onboarding.sandbox.lemonway.com/d6795600-e957-457f-83fc-dd1c03775c08/welcome" <-- url to redirect the end-user to, string
}
Important: In the Response a unique id is created. This Id corresponds to the onboardingId required in the path pareameters of the endpoint
GET /onboardings/{onboardingId}/resume
. This required if a user decides to not complete the onboarding in one session.
2.3 Parameters
YYYY-MM-DD
.no | yes | close
.POLITICAL_LEADER, POLITICAL_REPRESENTATIVE, JUDICIAL_OFFICIAL, FINANCIAL_AUDITOR, BANK_EXECUTIVE, DIPLOMATIC_REPRESENTATIVE, MILITARY_LEADER, ADMINISTRATIVE_OFFICIAL, ORGANIZATIONAL_OFFICIAL, OTHER
.YYYY-MM-DD
.YYYY-MM-DD
. Not required if unknown.PARTNER, CHILD, PARENT
.Three broad categories: professional activity, non-professional activity, retired. Full PCS2020 list available via PCS2020 Codes (PDF).
Tiers: FIRST_TIER ... SIXTH_TIER
mapping to ranges:
0–10K €, >10K–25K €, >25K–50K €, >50K–75K €, >75K–100K €, >100K €.
Tiers: FIRST_TIER ... SEVENTH_TIER
mapping to ranges:
0–50K €, 50K–100K €, 100K–150K €, 150K–200K €, 200K–500K €, 500K–1M €, >1M €.
Options include: INCOME, REAL_ESTATE_PROPERTIES, SAVINGS_ACCUMULATED_OVER_SEVERAL_YEARS, DONATION_OR_INHERITANCE, SALE_OF_A_STOCK_PORTFOLIO, TRANSFER_OF_COMPANY_SHARES, WINNING_FROM_GAMES_OR_CONTESTS, SURRENDER_OF_A_CAPITALIZATION_CONTRACT_OR_LIFE_INSURANCE_POLICY, SALE_OF_MOVABLE_ASSETS_GOODWILL_INTELLECTUAL_PROPERTY_RIGHTS, SALE_OF_CURRENCY_GOLD_OR_CRYPTOCURRENCIES, FINANCIAL_INVESTMENTS, OTHER_OPERATIONS
.
Legal capacity: LEGAL_AGE_AND_CAPACITY, PROTECTED_ADULT, MINOR_EMANCIPATED, MINOR_NOT_EMANCIPATED
.
See Protection types (XLSX):
SAFEGUARDING_OF_JUSTICE, CURATORSHIP, GUARDIANSHIP, OTHER
.
2.4 Project-Specific Parameters (For Project Holder Profile)
WEDDING
.YYYY-MM-DD
.2.5 Visa Application Account Parameters (For Visa Applicants)
STUDENT | JOB_SEEKER
.MOTHER_FATHER, RELATIVES, SIBLINGS, GRAND_PARENTS, HUSBAND_WIFE, LIFE_PARTNER, OTHER
.FIRST_TIER ... SIXTH_TIER
.FIRST_TIER ... SEVENTH_TIER
.One or more sources used to finance the trip. Options include:
INCOME, REAL_ESTATE_PROPERTIES, SAVINGS_ACCUMULATED_OVER_SEVERAL_YEARS, DONATION_OR_INHERITANCE, SALE_OF_A_STOCK_PORTFOLIO, TRANSFER_OF_COMPANY_SHARES, WINNING_FROM_GAMES_OR_CONTESTS, SURRENDER_OF_A_CAPITALIZATION_CONTRACT_OR_LIFE_INSURANCE_POLICY, SALE_OF_MOVABLE_ASSETS_GOODWILL_INTELLECTUAL_PROPERTY_RIGHTS, SALE_OF_CURRENCY_GOLD_OR_CRYPTOCURRENCIES, FINANCIAL_INVESTMENTS, OTHER_OPERATIONS
.
2.5.1 Payloads
"financialSupport": {
"visaApplicantRole": "STUDENT",
"isPayer": false,
"payerRelationship": {
"link": "MOTHER_FATHER"
}
"financialSupport": {
"visaApplicantRole": "JOB_SEEKER",
"isPayer": true,
"financialSituation": {
"annualRevenue": "FIRST_TIER",
"estimatedWealth": "FIRST_TIER",
"originOfFunds": {
"sources": [
"SAVINGS_ACCUMULATED_OVER_SEVERAL_YEARS"
],
"other": "test"
}
}
For the Payer profile (isPayer), only a POST /accounts/individual
is necessary. A Payer is a USER profile that does not require an Online Onboarding.
{
"individual": {
"firstName": "Claire",
"lastName": "Dubois",
"birthDate": "1995-06-01",
"email": "[email protected]",
"address": {
"country": "FR"
},
"birthCountry": "FR",
"nationalities": [
"FR"
]
},
"activity": "VISA_ACCOUNT_APPLICATION",
"profile": "PAYER",
"walletId": "d5a3b2f1-78a4-4c7f-9e9b-98f0e4a0fef3"
}
3. Resume an in-process Onboarding
Description: This endpoint is used when an end-user saves their progress and returns to the onboarding page at a later time. Request Parameter: onboardingId must be provided in the path to identify the onboarding session.
Endpoint: GET /onboardings/{onboardingId}/resume
Resource: onboardings resume
3.1 Response
{
"url": "https://onboarding.sandbox.lemonway.com/e6795620-e917-452f-83fc-dd1c03775c08/welcome" <-- url to redirect the end-user to, string
}
4. Manage Onboarding
Description: Retrieve a list of all accounts associated with your organization. Request Parameter:
Endpoint: GET /accounts
Resource: accounts
Example: GET /accounts?$filter=status eq 'active'&$size=50&$orderBy=createdAt&$sort=desc
This would return the 50 most recently created active accounts.
Filter accounts by criteria. Useful for narrowing large datasets. Supports expressions like field eq 'value'
.
Page size (items per page). If unset, a system default (e.g., 50 or 100) may apply.
Field used for ordering results. Works with $sort
.
Token for fetching the next/previous page. Reuse the token returned by the prior response.
Direction for pagination when $skipToken
is provided.
Restrict returned fields to reduce payload. Allowed: createdAt
, type
, id
,
externalAccountId
, status
, profiles
.
Sort order used with $orderBy
.
4.1 Response
{
"data": [
{
"id": "fc2096f6-8bcb-4d58-b041-1516b1f013ff",
"onboardingId": "758b1ca1-c066-458b-af15-7c724ce3bcc1",
"identity": {
"firstName": "Rachael",
"lastName": "Gerlach",
"email": "[email protected]",
"birthDate": "2019-06-01",
"birthCountry": "FR",
"residenceCountry": "FR",
"nationalities": [
"FR"
]
},
"status": "CREATED",
"profiles": [
{
"id": "70f848da-7693-44ea-8d35-2c6d68dcb531",
"type": "PROJECT_HOLDER",
"status": {
"type": "INFORMATION_COLLECTION_IN_PROGRESS",
"subStatus": null
},
"wallets": [
{
"id": "098e1f05-c68b-4fcc-b6ce-ddd870d33d10",
"internalId": "",
"type": "PAYMENT_ACCOUNT"
}
]
}
],
"type": "INDIVIDUAL",
"updatedAt": "2025-05-12T15:05:28.324Z",
"createdAt": "2025-05-12T15:05:10.370Z"
},
{
"id": "691cc8b5-9b4f-4580-b659-f39aa5e08669",
"onboardingId": "ea754721-786d-40cb-8d2d-78d310f5dadf",
"identity": {
"name": "Gorczany Group",
"type": "ASSOCIATION",
"registrationNumber": "788totam",
"registrationCountry": "FR",
"registrationDate": "2023-03-21"
},
"status": "CREATED",
"profiles": [
{
"id": "9276794f-9813-445c-ae76-079383da089c",
"type": "PROJECT_HOLDER",
"status": {
"type": "IDENTITY_VERIFICATION_IN_PROGRESS",
"subStatus": null
},
"wallets": [
{
"id": "436b3cc8-e2c4-44d6-aac3-da69b7100f52",
"internalId": "",
"type": "PAYMENT_ACCOUNT"
}
]
}
],
"type": "LEGAL_ENTITY",
"updatedAt": "2025-05-12T18:13:18.583Z",
"createdAt": "2025-05-12T18:12:37.605Z"
},
{
"id": "79b3d214-2a4d-4483-9ab1-47a2907a5c20",
"onboardingId": null,
"identity": {
"firstName": "Florent",
"lastName": "Valmy",
"email": "[email protected]",
"birthDate": "2002-03-09",
"birthCountry": "FR",
"residenceCountry": "FR",
"nationalities": [
"FR"
]
},
"status": "ACCEPTED",
"profiles": [
{
"id": "a16bab26-d39d-4f1f-9017-b2e11dee41a7",
"type": "DONOR",
"status": {
"type": "ACCEPTED",
"subStatus": null
},
"wallets": [
{
"id": "325423243",
"internalId": 568071,
"type": "TECHNICAL"
}
]
}
],
"type": "INDIVIDUAL",
"updatedAt": "2025-05-12T14:36:27.552Z",
"createdAt": "2025-05-12T14:36:07.535Z"
},
{
"id": "4d44607a-8ecd-4e07-91b0-3328c9007f87",
"onboardingId": null,
"identity": {
"name": "Kassulke Group CORP",
"type": "COMPANY",
"registrationNumber": "49recusandae",
"registrationCountry": "ES",
"registrationDate": "2024-05-17"
},
"status": "ACCEPTED",
"profiles": [
{
"id": "a409abf8-db79-4f59-9dd4-c19b39dcc374",
"type": "PROJECT_HOLDER",
"status": {
"type": "ACCEPTED",
"subStatus": null
},
"wallets": [
{
"id": "878c0ae2-bdc4-42a7-a671-38cf24c8a2e2",
"internalId": 568070,
"type": "PAYMENT_ACCOUNT"
}
]
}
],
"type": "LEGAL_ENTITY",
"updatedAt": "2025-05-12T09:51:52.895Z",
"createdAt": "2025-05-12T09:45:47.252Z"
}
],
"nextLink": "/accounts/?&$skipToken=1747042500653&$skipDirection=next",
"prevLink": ""
}
Description: Retrieve detailed information for a specific account using its unique identifier. Request Parameter: id must be provided in the path to identify the account.
Endpoint: GET /accounts/{id}
Resource: accounts
4.2 Response
The when endpoint is called the following information is provided:
- Provides account information (id, identity, status)
- Provides the Onboarding status
- Profiles linked to this account
- Wallets linked to this profile
{
"id": "f9137a42-20ca-40b0-8492-07b4eb45907b",
"onboardingId": "39e940a5-357f-4863-a549-7605183a4d44",
"identity": {
"firstName": "Kellie",
"lastName": "Hoeger",
"email": "[email protected]",
"birthDate": "1956-06-01",
"birthCountry": "FR",
"residenceCountry": "IT",
"nationalities": [
"FR"
]
},
"status": "ACCEPTED",
"profiles": [
{
"id": "a7289388-c9ed-4d81-b493-c434a9914250",
"type": "PROJECT_HOLDER",
"status": {
"type": "ACCEPTED",
"subStatus": null
},
"wallets": [
{
"id": "599797b6-33d8-4d0a-bdf8-f811c2846727",
"internalId": 568068,
"type": "PAYMENT_ACCOUNT"
}
]
}
],
"information": {
"firstName": "Kellie",
"lastName": "Hoeger",
"birthDate": "1956-06-01T00:00:00.000Z",
"birthCity": "Lake Vern",
"birthCountry": "FR",
"nationalities": [
"FR"
],
"email": "[email protected]",
"phone": "+33675869559",
"city": "South Leslie",
"country": "IT",
"street": "44450 Quigley Underpass",
"streetComplementaryInfo": "bis",
"postalCode": "101",
"pep": {
"startDate": "2025-03-03T00:00:00.000Z",
"endDate": "2025-04-30T00:00:00.000Z",
"position": "MILITARY_LEADER"
},
"legalCapacity": {
"type": "OF_CAPACITY"
},
"professionalSituation": {
"activity": "69"
},
"financialSituation": {
"annualRevenue": "FIRST_TIER",
"estimatedWealth": "FIRST_TIER",
"isIFITax": true
},
"projects": [
{
"projectType": "FAREWELL",
"beneficiaryFirstName": "Laurel",
"beneficiaryLastName": "Sanford",
"beneficiaryBirthDate": "1951-01-09"
}
]
},
"type": "INDIVIDUAL",
"documents": [
{
"status": "VALIDATION_NOT_REQUIRED",
"type": "ONBOARDING_QUESTIONNAIRE",
"name": "403b2929-0451-4ce3-96bc-a3cdd439875a.pdf",
"downloadUrl": "https://account.dev.lemonway.com/accounts/f9137a42-20ca-40b0-8492-07b4eb45907b/documents/403b2929-0451-4ce3-96bc-a3cdd439875a.pdf"
},
{
"status": "PENDING_VERIFICATION",
"type": "PASSPORT",
"name": "feb9a94a-317b-4530-bdb8-8ac6363ee291.pdf",
"downloadUrl": "https://account.dev.lemonway.com/accounts/f9137a42-20ca-40b0-8492-07b4eb45907b/documents/feb9a94a-317b-4530-bdb8-8ac6363ee291.pdf"
},
{
"status": "VALIDATION_NOT_REQUIRED",
"type": "APPLICATION_FORM",
"name": "fb52b3e2-44cd-4187-8790-134347ba44d8.pdf",
"downloadUrl": "https://account.dev.lemonway.com/accounts/f9137a42-20ca-40b0-8492-07b4eb45907b/documents/fb52b3e2-44cd-4187-8790-134347ba44d8.pdf"
},
{
"status": "VALIDATION_NOT_REQUIRED",
"type": "SIGNED_DOCUMENT",
"name": "28e5b59b-51ec-4e08-963b-1d4a9f2285aa.pdf",
"downloadUrl": "https://account.dev.lemonway.com/accounts/f9137a42-20ca-40b0-8492-07b4eb45907b/documents/28e5b59b-51ec-4e08-963b-1d4a9f2285aa.pdf"
},
{
"status": "VALIDATION_NOT_REQUIRED",
"type": "MOTION_CAPTURE",
"name": "2e83dcf1-7698-472c-bac5-0bdfe182f254.pdf",
"downloadUrl": "https://account.dev.lemonway.com/accounts/f9137a42-20ca-40b0-8492-07b4eb45907b/documents/2e83dcf1-7698-472c-bac5-0bdfe182f254.pdf"
}
],
"createdAt": "2025-05-07T16:16:53.879Z"
}
NoteWhen account details are retrieved using GET /accounts/{:id}, only the basic information submitted during account creation (POST /accounts) is returned if the end-user is still in the onboarding process. The full data set, including any submitted documents, becomes accessible once the onboarding is complete—meaning the account status is either ACCEPTED or DENIED.
Important: In the Response when you create an account using POST /accounts/individual a unique Id is created. Us this for this call to get account information on a specific individual account.
5. Get Documents
Description: This endpoint allows you to retrieve a document that was uploaded for a given account, using the account's UUID and a document name or logical identifier.Retrieve a previously uploaded document for a specific account. Only valid if a user has been fully Onboarded and accepted.
Path Parameters:
DocumentType
).Endpoint: GET /accounts/{accountid}/documents/{documentName}
Resource: documents
Document Types (type enum values)
- ARTICLES_OF_ASSOCIATION
- BOARD_MEMBERS_INFORMATION
- BROCHURE
- COMPANY_REGISTRY
- DRIVING_LICENSE
- FAMILY_DOCUMENT
- LEGAL_CAPACITY_DOCUMENT
- LEGAL_REPRESENTATIVE_DOCUMENT
- NATIONAL_IDENTITY_CARD
- OFFICIAL_NOTICE
- OTHER
- PASSPORT
- PROOF_OF_ADDRESS
- PROOF_OF_BANK_INFORMATION
- PUBLICATION_EXCERPT
- RESIDENCE_PERMIT
- SHAREHOLDING_STRUCTURE_DOCUMENTATION
- TAX_NOTICE
- UBO_DOCUMENT
5.1 HTTPs Responses:
Status Code | Description | Content-Type |
---|---|---|
200 | Document retrieved successfully | application/octet-stream |
400 | Invalid parameters | — |
401 | Unauthorized (missing or invalid API key or JWT token) | — |
403 | Forbidden | — |
404 | Document not found | — |
500 | Internal server error | — |