SLIP-0024 Transaction payload signing
Including SLIP-0024 to your SwapKit integration
Overview
When a hardware wallet receives transaction data from a third-party API, there's no built-in way to verify the data hasn't been tampered with in transit. A man-in-the-middle attacker could alter addresses or amounts before they reach the signing device, and the wallet would have no way to detect it.
SwapKit's /v3/swap endpoint now supports SLIP-0024 signed payloads to solve this problem. SLIP-0024 is a SatoshiLabs standard that defines a secure payment request format originally designed for hardware wallets like Trezor and BitBox. When activated for your integration, the /v3/swap response includes a slip24 object containing a cryptographically signed representation of the transaction. Your device or application can verify this signature using SwapKit's public key, ensuring the payload is authentic and unmodified.
How It Works
Signature Flow
Your application calls
/v3/swapas normal (see Quote and Swap Implementation Flow).SwapKit builds the transaction (
tx) and generates theslip24object.The
slip24payload is serialized to a buffer using the configured encoding scheme, then signed with SwapKit's private key.The response includes both the standard
txfield and theslip24object with itssignature.Your application or hardware wallet firmware verifies the signature against SwapKit's public key. If valid, the device can display a human-readable confirmation to the user (e.g., "Send 0.00298567 BTC to SWAPKIT (NEAR)") instead of raw addresses.
Key Management
SwapKit generates a dedicated key pair for each integrator. The private key is stored encrypted, only the production service can decrypt it. Even SwapKit developers cannot access the plaintext key.
The public key is shared privately with the integrator during onboarding. It is not sensitive and is what your application uses to verify signatures.
Supported key pair algorithms: ES256 and secp256k1.
Signature Schemes
Three signature schemes are available. The scheme is configured per integration during onboarding. The default is basic.
basic (raw): the
txproperty from the/v3/swapresponse is converted directly to a buffer and signed. This is the default scheme.slip24_hex: the
txproperty is converted to its SLIP-0024 representation, serialized into a hex-encoded buffer, and then signed.slip24_base64: same as
slip24_hex, but the SLIP-0024 representation is serialized into a base64-encoded buffer before signing.
basic / raw
tx field directly
raw buffer
Yes
slip24_hex
SLIP-0024 representation of tx
hex
No
slip24_base64
SLIP-0024 representation of tx
base64
No
Response Payload
The slip24 Object
When SLIP-0024 signing is active for your API key, the /v3/swap response includes a slip24 field alongside the standard fields documented in the /v3/swap endpoint reference.
Field Reference
recipientName: Human-readable name displayed on the hardware wallet screen (e.g.,"SWAPKIT (NEAR)"). Identifies the service and destination chain.nonce: Reserved for replay protection. Currentlynull.memos: Array of memo objects describing the transaction. Each has atypeand a corresponding data object.coinPurchase.coinType: SLIP-0044 coin type identifier (e.g.,0for Bitcoin).coinPurchase.amount: Human-readable amount string (e.g.,"0.00298567 BTC").coinPurchase.address: Destination address for the purchased asset.
outputs: Array of transaction outputs with rawamount(in smallest denomination) andaddress.signature: Cryptographic signature over the SLIP-0024 payload. Verify this against SwapKit's public key using the configured algorithm.
Verification
From the integrator's perspective, the verification flow is:
Extract the
slip24object from the/v3/swapresponse.Serialize the payload (excluding the
signaturefield itself) using the agreed-upon encoding scheme.Verify the
signatureagainst the serialized buffer using SwapKit's public key and the configured algorithm (ES256 or secp256k1).If verification passes, the transaction data is authentic. The hardware wallet can safely display the human-readable details (recipient name, amount, and address) to the user for confirmation.
If verification fails, reject the transaction. The payload may have been tampered with.
Best Practices
Always verify before displaying: Never show transaction details to the user before the signature has been validated.
Pin the public key: Store SwapKit's public key securely in your application or firmware. Don't fetch it dynamically at verification time.
Handle verification failures gracefully: If signature verification fails, block the transaction and surface a clear error to the user. Do not fall back to unsigned mode silently.
Use
recipientNamefor UX: TherecipientNamefield is designed for display on constrained hardware wallet screens. Show it alongside the amount to give users a clear confirmation prompt.Stay coordinated on key changes: If SwapKit rotates keys or adds new signature schemes, you'll be notified through the onboarding relationship. Ensure your firmware update pipeline can accommodate key changes.
Getting Started
SLIP-0024 signing is not self-service. To activate it for your integration, contact SwapKit directly. During onboarding, SwapKit will:
Generate a dedicated key pair for your integration
Share the public key privately
Configure your preferred signature scheme (
basic,slip24_hex, orslip24_base64) and algorithm (ES256orsecp256k1)
SwapKit is open to working with any hardware wallet manufacturer or payment processor that needs cryptographic verification of transaction payloads.
For questions or to begin integration, reach out to SwapKit directly through the partnership portal or Discord.
Last updated

