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
  • bankAccount
    Type: object
    required
  • entityType
    Type: string enum
    required
    values
    • BUSINESS
    • INDIVIDUAL
  • legalAddress
    Type: object
    required
  • originatorId
    Type: string Format: uuid
    required
  • companyName
    Type: string | null
    min length:  
    1
    max length:  
    100
  • email
    Type: string | null
    max length:  
    254
    Format: email
  • firstName
    Type: string
  • lastName
    Type: string
  • phoneNumber
    Type: string | null
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"
  }
}