Skip to content

Conversation

@thomasjsk
Copy link

Summary

Adds an optional transactionValue field to the Transfer message, allowing the initiating agent to
communicate the fiat equivalent value of a virtual asset transfer.

Motivation

When a transfer involves a virtual asset that is not widely traded or not yet listed on major
exchanges, receiving agents may not be able to resolve its fiat value independently. This creates
problems for:

  • Travel Rule threshold determination — agents need the fiat value to decide whether Travel Rule
    obligations apply
  • Amount-based policy evaluation — compliance policies often reference fiat thresholds
  • Record-keeping — regulatory reporting typically requires fiat equivalents

The transactionValue field allows the originating agent to provide this value upfront, so receiving
agents don't have to rely solely on their own asset pricing services.

Changes

  • TAIP-3 specification (TAIPs/taip-3.md) — Added transactionValue to the message body
    definition with amount (decimal string) and currency (ISO 4217 code). Added a test case example
    showing a transfer of a custom token with a EUR equivalent.
  • JSON Schema (schemas/messages/transfer.json) — Added transactionValue object property
    referencing existing amount and iso4217CurrencyCode base types.
  • TypeScript types (packages/typescript/src/tap.ts) — Added optional transactionValue field
    to the Transfer interface.

Example

{
  "asset": "eip155:1/erc20:0x1234...",
  "amount": "500",
  "transactionValue": {
    "amount": "1250.00",
    "currency": "EUR"
  }
}

Backward Compatibility

The field is fully optional. Existing implementations that do not include or handle transactionValue
are unaffected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants