Users

Create user

POSThttps://api.firstleeward.com/v0/users

Creates a new user with the provided details. Phone number must be unique within the project, as is externalId when supplied. In CORPORATE mode, companyId is required. On corporate employee projects there is no KYC and the user is created already approved. The company must be active with card issuance enabled. The email's domain is checked against the company's validated domains when a card is created.

Authorizations

Authorizationstring · headerrequired

API key as Bearer token, e.g. Bearer YOUR_API_KEY

Headers

Leeward-Versionenum<string>required

API version (YYYY-MM-DD). Available option: 2026-09-18

Body

application/json

externalIdstring

Your own identifier for this user (1-255 characters). Must be unique among your active users; a deleted user releases its value for reuse. Use it to look the user up later via the externalId filter on List users.

emailstring<email>required

User email address (max 50 characters)

phoneNumberstringrequired

Phone number in E.164 format (e.g., +14155552671)

firstNamestring

User first name (1-100 characters). Required on corporate employee projects, where cards are issued to a company's employees without KYC. Optional on other projects - if omitted, it is filled from the verified KYC identity when the application is approved.

lastNamestring

User last name (1-100 characters). Required on corporate employee projects. Optional on other projects - if omitted, it is filled from the verified KYC identity when the application is approved.

companyIdstring<uuid>

Company ID (required in CORPORATE program mode)

dateOfBirthstring<date>

Date of birth (YYYY-MM-DD). The employee must be at least 18 years old. Used only on corporate employee projects. Ignored on other projects, where it is filled from the verified KYC identity.

nationalitystring

Nationality (ISO 3166-1 alpha-2). Used only on corporate employee projects. Ignored on other projects, where it is filled from the verified KYC identity.

countrystring

Country of residence (ISO 3166-1 alpha-2). Used only on corporate employee projects. Ignored on other projects, where it is filled from the verified KYC identity.

Response

200User resource
idstring<uuid>required

Unique user identifier

externalIdstring | nullrequired

Your own identifier for this user, as supplied at creation. Null if none was provided.

emailstring<email>required

User email address

phoneNumberstringrequired

Phone number in E.164 format

firstNamestring | nullrequired

User first name. Null until provided by the client or backfilled from the verified KYC identity on approval.

lastNamestring | nullrequired

User last name. Null until provided by the client or backfilled from the verified KYC identity on approval.

countrystring | nullrequired

ISO 3166-1 alpha-2 country code

dateOfBirthstring | nullrequired

Date of birth (YYYY-MM-DD). Filled from the verified KYC identity, or as sent at creation on corporate employee projects.

nationalitystring | nullrequired

Nationality (ISO 3166-1 alpha-2) as sent at creation on corporate employee projects. Null on other projects.

companyIdstring<uuid> | nullrequired

Company ID (set in CORPORATE program mode)

applicationobjectrequired

KYC application status

Show child attributes
statusstringrequired

Current KYC application status

Available options:NOT_STARTEDAWAITING_DOCUMENTSIN_REVIEWAPPROVEDREJECTEDRETRY_REQUIRED
rejectionReasonstring | nullrequired

Human-readable reason for rejection. Set when status is REJECTED or RETRY_REQUIRED, null otherwise.

rejectionLabelsstring[] | nullrequired

Machine-readable reject codes from the compliance review (for example FORGERY, SELFIE_MISMATCH, EXPIRATION_DATE). Set when status is REJECTED or RETRY_REQUIRED, null otherwise. The set of codes is open-ended - handle unknown values. For your internal use only - do not display these codes to the end user.

documentsobject[] | nullrequired

Supporting documents and their per-document review state. Null for applications with no supporting documents.

Show child attributes
typestringrequired

Supporting document category

Available options:IDENTITYPROOF_OF_ADDRESSCURP
statusstringrequired

Review state of this document

Available options:PENDINGUPLOADEDRETRY_REQUIREDREJECTED
createdAtstringrequired

ISO 8601 timestamp of creation

updatedAtstringrequired

ISO 8601 timestamp of last update

400Response for status 400
Option 1 · PhoneNumberAlreadyExistsError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 2 · ExternalIdAlreadyExistsError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 3 · InvalidPhoneNumberError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 4 · InvalidEmailDomainError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 5 · CompanyIdRequiredError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 6 · CompanyIdNotAllowedError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 7 · UserCompanyNotFoundError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 8 · InvalidUserDetailsError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 9 · CompanyNotReadyForCardIssuanceError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
409The maximum number of users allowed for this project has been reached
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired