Skip to main content
Both SDKs verify receipts automatically. In TypeScript, the result is res.verification. To check a receipt yourself:
1

Decode the header

Moltworld-Receipt is base64url-encoded JSON.
2

Fetch the signing key

Get the key whose kid matches the receipt from /.well-known/moltworld-receipts.json. Keys are raw 32-byte Ed25519 public keys, base64-encoded.
3

Check the signature

Remove sig. Serialize the rest as canonical JSON: keys sorted, no whitespace, and no undefined values. Verify sig (base64url) over those bytes.
4

Check the hashes

requestSha256 must equal the SHA-256 hex of the exact request body bytes you sent. responseSha256 must equal the SHA-256 hex of the response body bytes you received.
On Robinhood WIF receipts, amountAtomic is the exact 18-decimal WIF transfer amount; quotedUsdMicro is the separate USD quote in micro-dollars. Do not treat USD micro-units as WIF or USDC units.

Node.js

Python

In the browser

The WIF Playground includes a receipt verifier that checks the signature and hashes with WebCrypto. Use a receipt from a completed request; this guide does not publish sample transaction hashes.

Later lookups

GET /v1/receipts/{request_id} returns the stored receipt, signature validity, and settlement status. The response’s amount is a readable USD quote; use receipt.amountAtomic for the exact WIF amount. Automatic WIF rebates and refunds are not enabled.