StoreKit JWS Decoder

Paste a signed JWS from StoreKit 2 or the App Store Server API — a signed transaction, renewal info, or an App Store Server Notification v2 — and read its header and payload as JSON. Nested signed payloads are decoded too, and timestamps are converted to readable dates. Everything runs in your browser; nothing is uploaded.

0 characters
Decoding happens entirely in your browser — the token never leaves your device. This tool only decodes the JWS (base64url); it does not verify the signature, so don't trust a decoded payload as authentic without server-side verification.

Paste a signed JWS to see its decoded header and payload. Try .

What a StoreKit JWS is

Since StoreKit 2 and the App Store Server API, Apple delivers purchase data as JSON Web Signatures (JWS) — a compact header.payload.signature string. Signed transactions, subscription renewal info, and App Store Server Notifications v2 all arrive this way. When you're debugging a webhook or a receipt, you usually just want to read what's inside — this tool base64url-decodes the header and payload so you can inspect the productId, expiresDate, environment, and notificationType at a glance.

Good to know

  • Paste a raw JWS or a whole { "signedPayload": … } body
  • Nested signedTransactionInfo / signedRenewalInfo are decoded too
  • Millisecond timestamps are converted to readable UTC
  • Decode only — always verify the signature server-side

Shipping in-app purchases?

Subscriptions are one of the most common App Store rejection areas. AcceptMyApp checks your metadata, paywall, and privacy setup against Apple's guidelines before you submit.

Try it free