Skip to content

Latest commit

 

History

History
449 lines (363 loc) · 22.8 KB

File metadata and controls

449 lines (363 loc) · 22.8 KB
layout default
title Changelog
permalink /changelog/

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

[2026-05-01]

Changed

  • TypeScript Package Extracted: The @taprsvp/types TypeScript package has moved to its own repository at TransactionAuthorizationProtocol/tap-ts
    • Full git history preserved via git mv; use git log --follow in the new repo to trace any file back to its original commit in this repo
    • The packages/typescript/ directory has been removed from this repository
    • NPM package name (@taprsvp/types) is unchanged — npm install @taprsvp/types continues to work
    • Future TypeScript-specific changelog entries will live in the tap-ts CHANGELOG
  • TAIP-17 Composable Escrow: Status advanced from Draft to Review
  • TAIP-17 Composable Escrow: Renamed Escrow message type to Lock based on feedback from both payment and institutional users, who recognized the term as the standard name for this pattern in payments and institutional finance
    • Message type identifier https://tap.rsvp/schema/1.0#Escrow is now https://tap.rsvp/schema/1.0#Lock
    • JSON-LD @type value changed from Escrow to Lock
    • Schema file renamed from schemas/messages/escrow.json to schemas/messages/lock.json
    • Test vectors moved from test-vectors/escrow/ to test-vectors/lock/
    • TypeScript: Escrow/EscrowMessage types renamed to Lock/LockMessage; validators and arbitraries renamed accordingly
    • "Composable Escrow" remains the TAIP title and the EscrowAgent role name is preserved; only the specific message identifier changed
    • TAIP-18 examples and flow diagrams updated to reference Lock instead of Escrow
  • TAIP-18 Asset Exchange: Status advanced from Draft to Review
  • TAIP-18 Asset Exchange: Renamed Exchange message type to RFQ (Request for Quote) based on feedback from both payment and institutional users, who recognized the term as the standard name for this pattern in payments and institutional finance
    • Message type identifier https://tap.rsvp/schema/1.0#Exchange is now https://tap.rsvp/schema/1.0#RFQ
    • JSON-LD @type value changed from Exchange to RFQ
    • Schema file renamed from schemas/messages/exchange.json to schemas/messages/rfq.json
    • TypeScript: Exchange/ExchangeMessage types renamed to RFQ/RFQMessage; validators and arbitraries renamed accordingly
    • TAIP-14 references to Exchange/Quote flow updated to RFQ/Quote
    • "Asset Exchange" remains the title and conceptual name of the protocol; only the specific message identifier changed

[2026-03-17]

Added

  • TAIP-20 On-Chain Transfer Correlation via Memo Hash: New draft standard for deterministic TAP ↔ on-chain reconciliation
    • Defines canonical derivation SHA-256(UTF8(tap_transfer_id))
    • Standardizes text memo profile as tap:1:<64-hex>
    • Defines binary/hash memo profile for chains with native hash memo support
    • Documents verification workflow for counterparties and compliance systems
    • Provides adaptation guidance for text memo, binary memo, and numeric-tag ecosystems

[2025-11-25]

Added

  • TAIP-19 ISO 20022 Message Mapping: New specification for bidirectional mapping between ISO 20022 and TAP messages
    • Maps PAIN messages (payment initiation) to TAIP-14 Payment and TAIP-15 Connect
    • Maps PACS messages (clearing/settlement) to TAIP-3 Transfer
    • Maps CAMT messages (cash management) to TAIP-4 Cancel/Revert flows
    • Defines party/agent mappings (Debtor/Creditor → originator/beneficiary, BIC → did:web:, LEI support)
    • Uses RFC 8905 payto:// URIs for traditional account identifiers (IBAN, BBAN, ACH)
    • Includes status code mappings (ACCP/ACTC → Authorize, ACSC → Settle, RJCT → Reject)
    • Provides detailed field mappings for pacs.008, pain.001, pain.009
    • Documents flow diagrams for credit transfers, direct debit mandates, and payment recalls
    • Enables interoperability with SWIFT, SEPA, FedNow, and other ISO 20022 payment systems

[2025-09-05]

Enhanced

  • TAIP-14 Payment Requests: Enhanced supportedAssets field and composability integration
    • Enhanced supportedAssets field: Now supports both string and object formats for flexible pricing
      • String format: Simple asset identifiers for ~1:1 assets like stablecoins
      • Object format: Pricing objects with asset (CAIP-19, DTI, or ISO-4217), amount, and optional expires
      • Enables cross-currency payments (e.g., USD invoice accepting EUR at specific rate with IBAN settlement)
      • Supports volatile asset pricing (e.g., ETH, BTC) with precise amounts and rate expiration
    • Updated composability section: Replaced Transfer-based examples with Exchange/Quote pattern from TAIP-18
      • Shows proper use of Exchange requests for currency conversion in payment flows
      • Demonstrates parent-child relationship using pthid to link Exchange to Payment
      • Added TAIP-18 to requirements and references
    • Enhanced example demonstrates mixed payment methods: stablecoins, crypto with pricing, cross-currency fiat

[2025-09-01]

Added

  • TAIP-18 Asset Exchange: Added Exchange and Quote message types for cross-asset transactions
    • New Exchange message type for requesting asset conversion quotes (USDC to EURC, USD to crypto, cross-chain)
    • New Quote message type for liquidity provider responses with pricing and expiration timestamps
    • Support for multi-asset arrays enabling flexible routing and provider selection
    • Compatible with existing TAIP-4 Authorize/Settle flows for quote acceptance and settlement
    • Integration with TAIP-17 Escrow for counterparty risk management in exchanges
    • Enables use cases: cross-asset payments, FX transactions, on/off-ramp services, cross-chain bridging
    • Updated JSON Schemas: Added exchange.json and quote.json message schemas
    • Updated TypeScript Package v1.12.0: Added Exchange and Quote interfaces and message wrappers
    • Updated Documentation: Enhanced messages.md and transactions.md with Exchange and Quote documentation

[2025-08-23]

Enhanced

  • TAIP-15 Agent Connection Protocol: Enhanced transaction constraints for improved security and control
    • Added three new optional constraint fields to Connect messages:
      • allowedBeneficiaries - array of TAIP-6 Party objects for approved payment recipients
      • allowedSettlementAddresses - array of CAIP-10 addresses for approved settlement addresses
      • allowedAssets - array of CAIP-19 asset identifiers for approved transaction assets
    • Added comprehensive "Transaction Constraints" section explaining constraint purposes, enforcement requirements, and types
    • Updated transaction validation requirements to include new constraint checks
    • Enhanced test examples to demonstrate new constraint usage
    • Added CAIP-10 and CAIP-19 references for address and asset identifier standards
    • Updated JSON Schemas: Enhanced transaction-constraints.json schema to validate new constraint fields
    • Updated TypeScript Package v1.11.0: Enhanced TransactionConstraints interface and Zod validators

[2025-08-21]

Added

  • TypeScript Package v1.10.0: Enhanced Zod v4 validation with strict ISO standards validation

Changed

  • BREAKING: TAIP-15 Agent Connection Protocol: Major restructure to support multi-party connections
    • BREAKING: Replaced single agent field with required agents array following TAIP-3 pattern
    • BREAKING: Added required requester Party field to distinguish requesting party from principal
    • Agents array must include at least one agent with @id matching DIDComm from field and for attribute set to requester DID
    • Added "Parties and Agent Roles" section clarifying two-party connection model
    • Added support for AddAgents messages to dynamically add agents during connection flow
    • Updated all examples and diagrams to use Merchant/Customer/PSP Agent terminology
    • Updated JSON schemas, and test vectors to match new structure
    • Removed type attributes from all agent examples across codebase for consistency with TAIP-5 specification

Fixed

  • Agent Consistency: Updated TAIP-3 and TAIP-14 to require for attributes in agent arrays

    • Added specification requiring requesting agent (from DIDComm from field) to be included in agents array with proper for attribute
    • Updated all TAIP-3 examples to include for attributes mapping agents to the parties they represent
    • Updated TAIP-14 example to include merchant agent and proper for attributes
    • Ensures consistency with TAIP-15 and TAIP-17 agent array requirements
  • TypeScript Package v1.9.0: Released with TAIP-15 agent restructuring support

  • TypeScript Package v1.8.0: Released with enhanced DIDComm v2.1 support and new message types

[2025-08-18]

Added

  • TypeScript Package v1.7.0: Released enhanced TypeScript library with comprehensive documentation and fixes

[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 to settle/valid.json test vector per TAIP-4 specification
  • 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.jsonauthorize/ subfolder
    • valid-payment*.jsonpayment-request/ subfolder
    • valid-revert.jsonrevert/ subfolder
    • valid-settle.jsonsettle/ 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

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 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
    • ExternalPurposeCode: 331 standardized purpose codes
    • ExternalCategoryPurposeCode: 48 category purpose codes
    • See tap-ts CHANGELOG for TypeScript implementation details
  • 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): Updated with RFC 8905 PayTo URI support, purpose code types, and schema.org attributes
  • JSON Schemas:
    • Created payto-uri.json and settlement-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 and party.json schemas with organization attributes
    • Updated invoice.json schema to include product attributes in line items

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
  • TypeScript Package: 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 enhanced Authorize 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 to Payment 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 structure
  • nameHash 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 (19 total)

  1. Transfer - Virtual asset transfer initiation
  2. Payment - Payment request with invoice support
  3. Authorize - Transaction authorization (enhanced to replace Complete)
  4. Settle - On-chain settlement confirmation
  5. Reject - Transaction rejection
  6. Cancel - Transaction cancellation
  7. Revert - Transaction reversal request
  8. UpdateAgent - Agent information update
  9. UpdateParty - Party information update
  10. AddAgents - Add agents to transaction
  11. ReplaceAgent - Replace existing agent
  12. RemoveAgent - Remove agent from transaction
  13. ConfirmRelationship - Confirm party-agent relationship
  14. UpdatePolicies - Update agent policies
  15. Connect - Establish agent connection
  16. AuthorizationRequired - Request authorization (moved to TAIP-4)
  17. Escrow - Hold assets in escrow with conditions (TAIP-17)
  18. Capture - Release escrowed funds (TAIP-17)
  19. Presentation - Present verifiable credentials (TAIP-8)

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.