{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Transaction and wallet audit records, compressed payloads, and jsonData deprecation","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"transaction-and-wallet-audit-records-compressed-payloads-and-jsondata-deprecation","__idx":0},"children":["Transaction and wallet audit records, compressed payloads, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]}," deprecation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Published September 21, 2026."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Audit records delivered to your AWS Data Firehose stream now carry their payload as Brotli-compressed bytes in a new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressedJsonData"]}," field, on every record type. Production records have carried it since September 17, 2026."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The same contract covers two record types beyond the access records (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: 1"]},") your stream carries today: transaction (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: 3"]},") and wallet (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: 4"]},") lifecycle records. Lifecycle records are active in Sandbox, and Ripple enables them in Production next."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This notice ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["deprecates"]}," the uncompressed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]}," field."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Action required for Firehose consumers"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read the payload from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressedJsonData"]},". Consumers that read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]}," keep working during the deprecation window, but only for access records. Transaction and wallet records never carry ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]},", so a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]},"-only consumer misses the new lifecycle payloads without seeing an error."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"new-transaction-and-wallet-records","__idx":1},"children":["New transaction and wallet records"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When Ripple enables transaction (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: 3"]},") and wallet (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: 4"]},") records in your environment, they start to arrive in your Firehose stream alongside access records. Prepare your consumer before they arrive:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ripple Custody (Wallet) doesn't backfill historical events. Lifecycle records start from activation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["All record types arrive on the same stream. Filter on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},", and don't assume that every record is an access record."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Expect higher record volume. One transaction can produce a record for each status change."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]}," values that each record type uses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/integrations-and-monitoring/audit-logging/firehose-audit-log-reference#source-values"},"children":["Source values"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-changed-in-the-record-format","__idx":2},"children":["What changed in the record format"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressedJsonData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New."]}," Base64-encoded Brotli-compressed JSON payload bytes. The canonical payload for access, transaction, and wallet records."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressionAlgorithm"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressionVersion"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressionQuality"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New."]}," The codec (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["br"]},"), contract version (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},"), and encoder quality (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["6"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalJsonDataSize"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalJsonDataSha256"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New."]}," The byte length and SHA-256 of the uncompressed payload, for integrity checks."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["legacyJsonDataTruncated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New."]}," Present and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," only when Ripple Custody (Wallet) rebuilt an oversize access payload without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.body"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deprecated."]}," Base64-encoded uncompressed JSON payload bytes. Ripple Custody (Wallet) emits it on access records only, it might be absent, and Ripple removes it after the deprecation window."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The envelope fields ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orgId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["userId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["receivedAt"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createdAt"]}," keep the same meaning."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"deprecation-timeline","__idx":3},"children":["Deprecation timeline"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deprecation starts on publication of this notice, September 21, 2026."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Removal is no earlier than October 21, 2026"]},", a minimum of 30 days after publication, and happens only after Ripple confirms that known consumers have migrated."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ripple announces the removal date before it takes effect."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migrate","__idx":4},"children":["Migrate"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Base64-decode ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["compressedJsonData"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Brotli-decompress the result."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parse it as JSON — the payload is identical to what ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]}," carried for access events."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Optionally verify the decompressed length against ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalJsonDataSize"]}," and its SHA-256 against ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalJsonDataSha256"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Stop reading ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jsonData"]},", and handle records where it's absent."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For worked examples in Node.js and Python, the full field reference, and the before-and-after record shapes, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/integrations-and-monitoring/audit-logging/firehose-audit-log-reference#decode-the-payload"},"children":["Firehose audit log reference"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"size-limits-and-delivery-behavior","__idx":5},"children":["Size limits and delivery behavior"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A Firehose record must stay below 1,000,000 encoded bytes, counting the complete record with both payload representations."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When a complete encoded access record reaches 1,000,000 bytes, Ripple Custody (Wallet) clears ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.body"]},", rebuilds both payload representations from the reduced payload, and sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["legacyJsonDataTruncated"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},". The compression metadata then describes the reduced payload."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the record still doesn't fit, Ripple Custody (Wallet) can't deliver it, and you need to contact support."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If delivery keeps failing, Ripple Custody (Wallet) disables the Firehose configuration until you re-enable it in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Audit logs"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":6},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/integrations-and-monitoring/audit-logging/firehose-audit-log-reference"},"children":["Firehose audit log reference"]}," — full record reference, decode examples, and delivery guarantees"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/integrations-and-monitoring/audit-logging"},"children":["Configure audit logging"]}," — set up and manage the Firehose connection"]}]}]},"headings":[{"value":"Transaction and wallet audit records, compressed payloads, and jsonData deprecation","id":"transaction-and-wallet-audit-records-compressed-payloads-and-jsondata-deprecation","depth":1},{"value":"New transaction and wallet records","id":"new-transaction-and-wallet-records","depth":2},{"value":"What changed in the record format","id":"what-changed-in-the-record-format","depth":2},{"value":"Deprecation timeline","id":"deprecation-timeline","depth":2},{"value":"Migrate","id":"migrate","depth":2},{"value":"Size limits and delivery behavior","id":"size-limits-and-delivery-behavior","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Transaction and wallet audit records, compressed payloads, and jsonData deprecation","seo":{"title":"Transaction and wallet audit records, compressed payloads, and jsonData deprecation"}},"lastModified":"2026-10-08T12:52:04.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/changelogs/firehose-audit-payload-compression","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}