Create contact
Creates a contact with address and bank account. firstName and lastName are required for INDIVIDUAL contacts and optional for BUSINESS contacts, which require companyName instead. email is optional. Validates ACH routing number against the Fed directory before persistence. Returns 400 VALIDATION_ERROR if the routing number is not found.
Body
required
application/json
- Type: objectbank
Account required - Type: string enumentity
Type requiredvalues- B
U S I N E S S - I
N D I V I D U A L
- Type: objectlegal
Address required - Type: string Format: uuidoriginator
Id required - Type: string | nullcompany
Name min length:1max length:100 - Type: string | nullemailmax length:254Format: email
- Type: stringfirst
Name - Type: stringlast
Name - Type: string | nullphone
Number
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
Request Example for post/v1/contacts/
curl https://staging.api.now.luqra.com/v1/contacts/ \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"bankAccount": {
"achAccountNumber": "",
"achRoutingNumber": "",
"subType": "CHECKING",
"swiftCode": null
},
"companyName": null,
"email": null,
"entityType": "BUSINESS",
"firstName": "",
"lastName": "",
"legalAddress": {
"addressLine1": "",
"addressLine2": null,
"city": "",
"countryCode": "",
"postalCode": "",
"state": ""
},
"originatorId": "",
"phoneNumber": null
}'
{
"data": {
"contactId": "123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-08-25T18:08:35.187Z"
},
"meta": {
"timestamp": "2026-08-25T18:08:35.187Z"
}
}