---
title: "Create customer"
method: POST
path: "/screening/trlink/customers"
tags: ["TRLink"]
---

# Create customer

`POST /screening/trlink/customers`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/screening/trlink/customers`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/screening/trlink/customers/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new customer (legal entity/VASP) for TRSupport Travel Rule compliance operations. The customer represents your organization in the Travel Rule network and contains IVMS101-compliant identity information.

## Headers

- `Idempotency-Key` string

## Request body

- TRLinkCreateCustomerRequest
  - `discoverable` 'anonymous' | 'hidden' | 'discoverable', nullable: Customer discoverability status in the Travel Rule network
  - `shortName` string, required: Short display name (required)
  - `fullLegalName` string, nullable: Full legal entity name
  - `geographicAddress` TRLinkGeographicAddressRequest, nullable: Geographic address following IVMS101 standard
    - `addressLine` string[], nullable: Address lines (max 3, each up to 70 characters)
    - `streetName` string, nullable: Street name (required if buildingNumber is provided)
    - `buildingNumber` string, nullable: Building number
    - `floor` string, nullable: Floor number
    - `postBox` string, nullable: Post box number
    - `postCode` string, nullable: Postal code (required if townName is provided)
    - `townName` string, nullable: City or town name (required if postCode is provided)
    - `districtName` string, nullable: District name
    - `countrySubDivision` string, nullable: State or province (validated against country)
    - `country` string, nullable: ISO 3166-1 alpha-2 country code (required if town, district, or sub-division provided)
  - `countryOfRegistration` string, nullable: ISO 3166-1 alpha-2 country code where the entity is registered
  - `nationalIdentification` string, nullable: National identification, sent as a JSON-encoded string. The server normalizes input into a compact JSON with these optional keys: `nationalIdentifier`, `nationalIdentifierType` (e.g. `LEIX` for an LEI), `countryOfIssue` (ISO 3166-1 alpha-2), `registrationAuthority`. If the input is not a JSON object, it is wrapped as `{"nationalIdentifier":"<value>"}`; if the value matches the LEI format, `nationalIdentifierType` is set to `LEIX` automatically and `countryOfIssue` defaults to this request's `countryOfRegistration` if not provided. The compacted JSON must be 240 characters or fewer. On read, the value is returned exactly as stored.
  - `dateOfIncorporation` string, date, nullable: Date of entity incorporation (ISO 8601 format: YYYY-MM-DD)
  - `vaults` integer[], nullable: Associated Fireblocks vault account IDs
  - `trPrimaryPurpose` string: Primary Travel Rule role for this customer; determines how the customer's Travel Rule messages are routed. Valid values: `notabene`, `trlink`.

## Response `201`

Customer created successfully

- TRLinkCustomerResponse
  - `id` string, uuid, required: Customer unique identifier
  - `discoverable` 'anonymous' | 'hidden' | 'discoverable', nullable, required: Customer discoverability status in the Travel Rule network
  - `shortName` string, required: Short display name
  - `fullLegalName` string, required: Full legal entity name
  - `geographicAddress` TRLinkGeographicAddressRequest, nullable: Geographic address following IVMS101 standard
    - `addressLine` string[], nullable: Address lines (max 3, each up to 70 characters)
    - `streetName` string, nullable: Street name (required if buildingNumber is provided)
    - `buildingNumber` string, nullable: Building number
    - `floor` string, nullable: Floor number
    - `postBox` string, nullable: Post box number
    - `postCode` string, nullable: Postal code (required if townName is provided)
    - `townName` string, nullable: City or town name (required if postCode is provided)
    - `districtName` string, nullable: District name
    - `countrySubDivision` string, nullable: State or province (validated against country)
    - `country` string, nullable: ISO 3166-1 alpha-2 country code (required if town, district, or sub-division provided)
  - `countryOfRegistration` string, required: ISO 3166-1 alpha-2 country code where the entity is registered
  - `nationalIdentification` string, nullable: National identification, returned exactly as stored: a compact, whitespace-free JSON-encoded string with these optional keys (in this order): `nationalIdentifier`, `nationalIdentifierType` (e.g. `LEIX` for an LEI), `countryOfIssue` (ISO 3166-1 alpha-2), `registrationAuthority`. Maximum length is 240 characters.
  - `dateOfIncorporation` string, date, nullable: Date of entity incorporation (ISO 8601 format)
  - `vaults` integer[], nullable: Associated Fireblocks vault account IDs
  - `trPrimaryPurpose` string, required: Primary Travel Rule role for this customer; determines how the customer's Travel Rule messages are routed. Valid values: `notabene`, `trlink`.
  - `createDate` string, date-time, required: Timestamp when the customer was created (ISO 8601 format)
  - `lastUpdate` string, date-time, required: Timestamp when the customer was last updated (ISO 8601 format)

## Other responses

- `default`: Error Response

---

[API](https://skmtc.dev/fireblocks/apis/fireblocks-api.md) - [All operations](https://skmtc.dev/fireblocks/apis/fireblocks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireblocks/apis/fireblocks-api/revisions/4eba9965659a?raw)
