Changelog
All notable structural changes to the Transaction Authorization Protocol (TAP) are documented in this file.
This changelog focuses on:
- New TAIPs and their acceptance status
- Message format changes
- Protocol structural changes
- Breaking changes
[2025-08-18]
Added
- TypeScript Package v1.7.0: Released enhanced TypeScript library with comprehensive documentation and fixes
- Added comprehensive README.md with installation guide, quick start examples, and complete API reference
- Enhanced examples with current type definitions (Person, Organization, Agent, Party)
- Added nameHash examples for travel rule compliance with privacy-preserving name matching
- Updated participant type documentation to reflect current schema.org-based interfaces
- Added complete participant interfaces documentation (Person, Organization, Agent, Party)
- Enhanced travel rule compliance examples with IVMS101 data structures
- Improved developer experience with detailed usage examples and standards compliance information
Fixed
- Payment Message Type: Removed erroneous
defaultAddress
field from Payment interface- Fixed Payment interface to comply with TAIP-14 specification
- Settlement addresses should be provided by agents with SettlementAddress role, not as direct fields
- Maintained
fallbackSettlementAddresses
field as specified in TAIP-14 - Updated JSDoc examples to remove invalid
defaultAddress
references
- TAIP-12 Name Hashing Implementation: Added production-ready TypeScript implementation for privacy-preserving name matching
- Added
generateNameHash()
function with SHA-256 hashing using Web Crypto API and Node.js crypto fallback - Added
normalizeForHashing()
function for TAIP-12 compliant name normalization (uppercase, whitespace removal) - Cross-platform compatibility supporting browsers and Node.js environments without additional dependencies
- Comprehensive test suite with 19 test cases including TAIP-12 specification test vectors
- Support for non-Western names (Arabic, Chinese, Korean, Japanese scripts)
- Compatible with VerifyVASP and GTR networks per TAIP-12 specification
- Added Vitest testing framework for comprehensive validation
- Enhanced TypeScript package (@taprsvp/types) with new nameHash utilities
- Added
[2025-08-16]
Fixed
- Test Vector Issues: Fixed incorrect TAIP references and missing required fields in test vectors
- Fixed
authorization-required/valid-authorization-required.json
to reference correct TAIP-4 instead of TAIP-15 - Added required
settlementAddress
field tosettle/valid.json
test vector per TAIP-4 specification
- Fixed
- Test Vector Organization: Reorganized test vector file structure for better maintainability
- Moved top-level test vectors to appropriate subfolders based on message type
valid-authorize.json
→authorize/
subfoldervalid-payment*.json
→payment-request/
subfoldervalid-revert.json
→revert/
subfoldervalid-settle.json
→settle/
subfolder- Ensures consistent organization with existing test vector structure
[2025-08-13]
Changed
- Test Vectors: Updated test vectors to reflect recent protocol changes
- Updated AuthorizationRequired test vectors to reference TAIP-4 instead of TAIP-15
- Added test vectors for TAIP-17 Escrow messages with valid and invalid examples
- Added test vectors demonstrating PayTo URI support (RFC 8905) for traditional banking integration
- Added examples for Transfer messages with IBAN PayTo URIs
- Added Payment request examples with ACH/wire PayTo URIs
[2025-08-04]
Added
- IVMS101 Data Inclusion Documentation: Explicitly documented existing capability for including IVMS101 identity data directly in party objects alongside schema.org data
- Updated TAIP-6: Added explicit specification and examples for IVMS101 data in party objects
- Added comprehensive examples showing Person and Organization with IVMS101 fields
- Documented geographic addresses, national identifiers, and compliance data inclusion
- Added privacy recommendations for selective disclosure of natural person information
- Clarified that this capability was always supported by the JSON-LD extensibility but was not explicitly documented
- TypeScript Package v1.6.0: Released enhanced TypeScript library with comprehensive documentation
- Added comprehensive JSDoc documentation to all TAP message types
- File-level overview with protocol explanation, features, and usage examples
- Organized code into logical sections with clear headers
- Practical usage examples for Transfer, Payment, DIDCommMessage, and Agent interfaces
- Complete TAIP specification cross-reference mapping
- Enhanced IntelliSense and documentation tooltips for better developer experience
Changed
- TAIP-6 (Transaction Parties): Enhanced documentation to explicitly describe IVMS101 data inclusion
- Documented that party objects can include both schema.org and IVMS101 properties
- Added concrete examples for natural persons and organizations with compliance data
- Added privacy recommendations for selective disclosure of sensitive information
- Made explicit what was previously implicit through JSON-LD extensibility
- TAIP-10 (IVMS101 Travel Rule): Updated to clarify dual approach for IVMS data exchange
- Documented direct inclusion in party objects for transparent compliance
- Maintained selective disclosure via presentations for enhanced privacy
- Clarified that both approaches have always been supported for different use cases
- TAIP-14 (Payments): Enhanced merchant examples to demonstrate IVMS101 compliance data
- Updated examples to show both schema.org and IVMS101 properties
- Demonstrated LEI codes, geographic addresses, and national identifiers for organizations
- Added privacy considerations for natural person merchants
[2025-08-03]
Changed
- AuthorizationRequired Message: Moved from TAIP-15 to TAIP-4 as standard authorization message
- AuthorizationRequired is now part of the core transaction authorization protocol (TAIP-4)
- Added optional
from
field to specify party type (customer, principal, originator) required to open URL - TAIP-15 now references TAIP-4 for complete AuthorizationRequired specification
- Updated TypeScript interface with enhanced documentation for both transaction and connection authorization
- Added comprehensive test case example to TAIP-4
- Updated messages.md to document AuthorizationRequired as part of authorization flow
[2025-07-28]
Added
- RFC 8905 PayTo URI Support: Settlement addresses now support both blockchain (CAIP-10) and traditional payment systems (RFC 8905)
- Added to TAIP-4: Authorize, Settle, and Revert messages now accept PayTo URIs for bank transfers
- Added to TAIP-14: Payment messages support
fallbackSettlementAddresses
field - Added to Transfer, Capture, and Invoice messages
- Fallback Settlement Addresses: New optional field in Payment messages for redundancy
- Supports array of mixed CAIP-10 and RFC 8905 addresses
- Enables failover mechanisms for fiat payments and crypto transfers
- Purpose Code Types: Added ISO 20022 External Purpose Code union types to TypeScript package
- ExternalPurposeCode: 331 standardized purpose codes
- ExternalCategoryPurposeCode: 48 category purpose codes
- schema.org/Organization Attributes: Added optional organization metadata fields to Agents and Parties
- Based on schema.org/Organization standard
- Added fields:
name
,url
,logo
,description
,email
,telephone
- Available for both Agent (TAIP-5) and Party (TAIP-6) entities
- schema.org/Product Attributes: Added optional product metadata fields to Invoice Line Items
- Based on schema.org/Product standard
- Added fields to line items:
name
,image
,url
- Enhances invoice line items in TAIP-16 with richer product information
Changed
- TypeScript Package (@taprsvp/types):
- Added
PayToURI
type for RFC 8905 support -
Created SettlementAddress
union type (CAIP-10PayToURI) - Updated all settlement address fields to use new union type
- Converted
IsoCurrency
from enum to union type for better tree-shaking - Converted purpose codes from enums to union types
- Extended
Participant
interface with schema.org/Organization attributes - Enhanced
LineItem
interface with schema.org/Product attributes
- Added
- JSON Schemas:
- Created
payto-uri.json
andsettlement-address.json
common schemas - Updated all message schemas to support new settlement address formats
- Fixed DIDComm message type pattern to match body @type format
- Enhanced
agent.json
andparty.json
schemas with organization attributes - Updated
invoice.json
schema to include product attributes in line items
- Created
Updated
- TAIP-4: Added RFC 8905 reference and examples for traditional payment settlement
- TAIP-5: Added schema.org/Organization attributes to Agent specification
- TAIP-6: Added schema.org/Organization attributes to Party specification
- TAIP-14: Added
fallbackSettlementAddresses
field specification - TAIP-16: Added schema.org/Product attributes to invoice line items
[2025-06-25]
Changed
- TAIP Status Updates:
- TAIP-1: Transaction Authorization Improvement Proposals - Advanced to Final status
- TAIPs 2-10 - Advanced to Last Call status:
- TAIP-2: Messaging
- TAIP-3: Virtual Asset Transfer
- TAIP-4: Transaction Authorization Protocol
- TAIP-5: Transaction Agents
- TAIP-6: Transaction Parties
- TAIP-7: Agent Policies
- TAIP-8: Selective Disclosure
- TAIP-9: Proof of Relationship
- TAIP-10: IVMS101 for Travel Rule
- TAIPs 15-16 - Advanced from Draft to Review status:
- TAIP-15: Agent Connection Protocol
- TAIP-16: Invoices
[2025-06-24]
Added
- JSON Schema definitions for all TAP message types in
/schemas/
directory - Developer resources page with implementation guides
- TAIP-17: Composable Escrow workflow (Draft)
- New
Escrow
message type for holding assets on behalf of parties - New
Capture
message type for releasing escrowed funds - Supports both cryptocurrency assets and fiat currency denominations
- Enables payment guarantees and asset swap use cases
- New
- TypeScript fixes: Added
by
field to Cancel interface
Removed
- Complete message type (replaced by extended Authorize message)
- Test vectors for removed Complete message
[2025-06-23]
Changed
- BREAKING: Replaced
Complete
message with enhancedAuthorize
message to simplify flow - Made
originator
field optional in Transfer messages to support unknown originators - Made
role
field optional in Agent structures - Added
principal
as primary party in Connection messages
[2025-04-22]
Added
- TAIP-16: Invoices - Structured invoice format for payment requests
- MCC (Merchant Category Code) field to Party structure for merchant identification
[2025-03-31]
Added
expiry
fields to Transfer, Authorize, and Connect messages for business intent expiration- Complete message for payment completion flows
amount
field to Settle message for partial settlement support
Changed
- Distinguished between message expiration (
expires_time
) and business expiration (expiry
)
[2025-03-30]
Changed
- BREAKING: Renamed
PaymentRequest
toPayment
throughout codebase - Updated all references and test vectors
[2025-03-26]
Added
- TAIP-15: Agent Connection Protocol - OAuth-style authorization flows for B2B integrations
- Connect message for establishing agent connections
- AuthorizationRequired message for connection approval flows
[2025-03-11]
Added
- TAIP-13: Transaction Purpose Codes - ISO 20022 purpose code integration
- Purpose and categoryPurpose fields to Transfer messages
- PaymentRequest message (later renamed to Payment)
[2025-03-10]
Added
- TAIP-14: Payment Requests - Merchant-initiated payment flows
[2025-03-07]
Added
- Cancel message for transaction termination
- Revert message for transaction reversal requests
[2025-03-05]
Added
- TAIP-11: Legal Entity Identifier (LEI) - Institutional participant identification
- TAIP-12: Hashed Participant Name Sharing - Privacy-preserving name matching
lei
field to Party structurenameHash
field to Party structure
[2025-03-02]
Added
- TAIP-10: IVMS101 for Travel Rule - Regulatory compliance integration
ivms101
field to Party structure for Travel Rule data
[2024-01-26]
Added
- TAIP-9: Proof of Relationship - Agent-party relationship verification
- ConfirmRelationship message
- CACAO attachment support for DID proofs
[2024-01-25]
Added
- TAIP-8: Selective Disclosure - Privacy-preserving credential sharing
- RequirePresentation policy type
- Presentation Exchange integration
[2024-01-24]
Added
- TAIP-7: Agent Policies - Requirement enforcement framework
- Policy structures: RequireAuthorization, RequirePresentation, RequirePurpose
- UpdatePolicies message
[2024-01-23]
Added
- TAIP-6: Transaction Parties - Party identification and representation
- Party data structure with name, LEI, and verification methods
[2024-01-09]
Added
- TAIP-3: Virtual Asset Transfer - Core transfer functionality
- TAIP-4: Transaction Authorization Protocol - Core authorization flow
- TAIP-5: Transaction Agents - Software agent framework
- Transfer message for asset transfers
- Authorization flow messages: Authorize, Settle, Reject
- Agent management messages: UpdateAgent, AddAgents, ReplaceAgent, RemoveAgent
- Agent data structure with roles and policies
[2023-12-19]
Added
- TAIP-1: Transaction Authorization Improvement Proposals - Framework document
[2023-12-14]
Added
- TAIP-2: Messaging - DIDComm v2 message format
- Base message structure and threading model
- JSON-LD context definitions
- Initial repository structure
Message Type Summary
Current TAP Messages (18 total)
- Transfer - Virtual asset transfer initiation
- Payment - Payment request with invoice support
- Authorize - Transaction authorization (enhanced to replace Complete)
- Settle - On-chain settlement confirmation
- Reject - Transaction rejection
- Cancel - Transaction cancellation
- Revert - Transaction reversal request
- UpdateAgent - Agent information update
- UpdateParty - Party information update
- AddAgents - Add agents to transaction
- ReplaceAgent - Replace existing agent
- RemoveAgent - Remove agent from transaction
- ConfirmRelationship - Confirm party-agent relationship
- UpdatePolicies - Update agent policies
- Connect - Establish agent connection
- AuthorizationRequired - Request authorization (moved to TAIP-4)
- Escrow - Hold assets in escrow with conditions (TAIP-17)
- Capture - Release escrowed funds (TAIP-17)
Removed Messages
- Complete (2024-06-12) - Functionality merged into Authorize message
Breaking Changes Summary
2024-06-12
- Complete message removed - migrate to Authorize with settlement details
- Cancel message now requires
by
field
2024-03-15
- PaymentRequest renamed to Payment - update all message type references
2024-02-10
- Transfer message supports optional originator - handle missing originator cases
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning for protocol versions.