# Create a TravelRule message for a transfer

Endpoint: POST /v1/domains/{domainId}/compliance/travel-rule/providers/{provider}/messages
Security: httpAuth

## Path parameters:

  - `domainId` (string, required)

  - `provider` (string, required)
    Enum: "NOTABENE"

## Request fields (application/json):

  - `originator` (object, required)
    Identifier for a party in a transfer

  - `originator.@id` (string, required)
    DID or identifier for the party

  - `beneficiary` (object, required)
    Identifier for a party in a transfer

  - `asset` (string, required)
    Asset identifier (e.g., bip122:000000000019d6689c085ae165831e93/slip44:0)

  - `amount` (string, required)
    Transfer amount

  - `ref` (string, required)
    Reference identifier for the transfer

  - `agents` (array, required)
    Agents involved in the transfer (e.g., VASP, SourceAddress, SettlementAddress)

  - `agents.@id` (string, required)
    The DID identifier of the agent

  - `agents.for` (string)
    The party this agent is acting for

  - `agents.role` (string, required)
    The role of the agent
    Enum: "VASP", "Custodian", "SettlementAddress", "SourceAddress", "Gateway", "Unknown"

  - `settlementId` (string)
    Settlement identifier for the transfer

  - `transactionValue` (object)
    The fiat value of the transaction

  - `transactionValue.amount` (string, required)
    The fiat amount
    Example: "150.75"

  - `transactionValue.currency` (string, required)
    The currency code (e.g., USD)
    Example: "USD"

  - `blockchainAnalyticsAlias` (string)
    Optional analytics alias
    Example: "My Wallet"

## Response 200 fields (application/json):

  - `createTransfer201Response` (object)
    Direct response from the travel rule provider when creating a transfer

  - `createTransfer201Response.transfer` (object)
    Travel rule transfer details from the provider

  - `createTransfer201Response.transfer.@id` (string)
    The ID of the transfer

  - `createTransfer201Response.transfer.id` (string)
    The ID of the transfer (alternative field name)

  - `createTransfer201Response.transfer.status` (string)
    The status of the transfer
    Enum: "OUTGOING", "INCOMING", "REJECTED", "AUTHORIZED", "FLAGGED", "SETTLED", "FLAGGED-SETTLEMENT", "RETURNED", "FROZEN", "CLEARED"

  - `createTransfer201Response.transfer.direction` (string)
    The direction of the transfer
    Enum: "INCOMING", "OUTGOING"

  - `createTransfer201Response.transfer.ref` (string)
    The reference provided in the request

  - `createTransfer201Response.transfer.asset` (string)
    The asset being transferred

  - `createTransfer201Response.transfer.amount` (string)
    The amount being transferred

  - `createTransfer201Response.transfer.originator` (object)
    Party information in a transfer

  - `createTransfer201Response.transfer.originator.@id` (string)
    The DID identifier of the party

  - `createTransfer201Response.transfer.originator.accountNumber` (string)
    The account number of the party

  - `createTransfer201Response.transfer.originator.name` (string)
    The name of the party

  - `createTransfer201Response.transfer.beneficiary` (object)
    Party information in a transfer

  - `createTransfer201Response.transfer.agents` (array)

  - `createTransfer201Response.transfer.settlementId` (string)
    The transaction id of the settlement transaction

  - `createTransfer201Response.transfer.isTravelRule` (boolean)
    Whether the transfer requires travel rule compliance

  - `createTransfer201Response.transfer.presentationDefinitionUrl` (string)
    URL for the presentation definition

  - `createTransfer201Response.transfer.createdAt` (string)
    When the transfer was created

  - `createTransfer201Response.transfer.updatedAt` (string)
    When the transfer was last updated

  - `createTransfer201Response.transfer.settledAt` (string)
    When the transfer was settled

  - `createTransfer201Response.transfer.rejectedAt` (string)
    When the transfer was rejected

  - `createTransfer201Response.transfer.rejectionReason` (string)
    Reason for rejection if the transfer was rejected

  - `suggestedIntentId` (string)
    The intentId the client needs to initiate the intent with

  - `complianceTravelRuleId` (string)
    The id associated with this travel rule record on Compliance side

## Response 400 fields (*/*):

  - `reason` (string, required)

  - `message` (string)


