Introduction
Getting Started
Introduction
The Palindrome Pay SDK enables developers to integrate crypto payments into applications using open-source smart contracts with built-in escrow and multisig wallet support.
- Non-custodial: Funds are held by the smart contract, not by Palindrome Pay
- Escrow-secured: Funds move between buyer and seller through the escrow smart contract, released only when the agreed conditions are met
- Software fee: A 1% fee applies for SDK usage, charged only on successful deals
You have two integration options:
SDK – for more advanced use cases and maximum flexibility.
Palindrome Pay Button – is a 1-Click Crypto Pay Button with built-in checkout system easy to integrate with just a few lines.
The Palindrome Pay Button can be integrated into the following kinds of platforms, allowing users to seamlessly add crypto-based escrow payments to their existing workflows:
- E-commerce platforms such as Shopify and WooCommerce
- Real estate platforms including property rental and sales marketplaces
- Various booking systems like hotel reservation and travel booking platforms
This enables businesses to benefit from secure, transparent transactions for a wide range of use cases, including online shopping, property rentals, and hotel booking systems.
Quick Start
Step-by-step guides to setting up your system and installing the library.
Palindrome Pay Button
Integrate the checkout widget into your website without programming it from scratch.
Quick start
Do you want to start right away? Then install Palindrome Crypto Pay with a command line.
These docs target @palindromepay/sdk v3.x (currently 3.0.4).
Installing dependencies
The SDK is written in TypeScript and can be imported into React, Vue and Angular application.
npm install @palindromepay/sdk
You should do!
Create a .env file with the token address you want to accept (use the prefix your framework requires, e.g. NEXT_PUBLIC_, VITE_, or REACT_APP_):
# USDT Faucet on Base Sepolia
USDT_TOKEN=0x337610d27c682E347C9cD60BD4b3b107C9d34dDd
First steps
- Create the SDK instance — set up viem + Apollo clients with
testnet: true - Create an escrow and deposit funds as the buyer
- Confirm delivery to release funds, then the seller can withdraw
Palindrome Pay Button
With the Palindrome Pay Button, you can add ready‑made Crypto Pay buttons to your shop or booking system without building a custom checkout flow from scratch. As a merchant, you only place the button where your customer confirms the basket (products, services, or booking details) and pass a few required fields such as title, amount and your address (you will receive the funds).
When the button is clicked, your customer is redirected to the decentralized Checkout System, where they connect a wallet, review the order and complete a secure crypto payment.
Either with the SDK or the Crypto Pay Button, you and your customers can view and manage every payment transactions through the Palindrome Crypto Escrow.
The flow is simple: the customer places an order and deposit, the merchant delivers the goods or services, and the customer confirms that everything is satisfactory. Once confirmed, the merchant can withdraw the funds.
At the Palindrome Crypto Escrow platform customers can confirm delivery, cancel the order, or open a dispute. Merchants can withdraw funds after successful verification, open a dispute, and request order cancellation, which the customer can then approve.
Integration code Palindrome Pay Button
Add this code to your product page, checkout page or booking confirmation:
<div style="display: flex; justify-content: center; margin: 20px 0;">
<button class="palindrome-checkout-button" data-palindrome-seller="your address" data-palindrome-amount="100" data-palindrome-title="My Product" style="
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 200px !important;
padding: 12px 16px !important;
font-size: 14px !important;
border: none !important;
border-radius: 8px !important;
background: linear-gradient(135deg, #6e8efb, #a777e3) !important;
color: white !important;
cursor: pointer !important;
box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
transition: all 0.2s ease !important;
" onmouseover="this.style.transform='scale(1.02)'; this.style.boxShadow='0 6px 16px rgba(0,0,0,0.2)'" onmouseout="this.style.transform='scale(1)'; this.style.boxShadow='0 4px 12px rgba(0,0,0,0.15)'">
<img src="https://www.palindromepay.com/favicon-32x32.png" alt="Palindrome" style="width: 20px; height: 20px; border-radius: 3px; flex-shrink: 0;" />
Palindrome Pay
</button>
</div>
<!--// add the script before </body> -->
<script src="https://palindromepay.com/widget.js" data-palindrome-endpoint="https://palindromepay.com/crypto-pay" defer></script>
Integration code Palindrome Pay Button (Shopify)
Place this in product.liquid or a product section:
<button
class="palindrome-checkout-button"
data-palindrome-seller="your address"
data-palindrome-amount="{{ product.price | divided_by: 100 }}"
data-palindrome-title="{{ product.title | escape }}"
style="
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 200px !important;
padding: 12px 16px !important;
font-size: 14px !important;
border: none !important;
border-radius: 8px !important;
background: linear-gradient(135deg, #6e8efb, #a777e3) !important;
color: white !important;
cursor: pointer !important;
box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
transition: all 0.2s ease !important;
"
onmouseover="this.style.transform='scale(1.02)'; this.style.boxShadow='0 6px 16px rgba(0,0,0,0.2)'"
onmouseout="this.style.transform='scale(1)'; this.style.boxShadow='0 4px 12px rgba(0,0,0,0.15)'"
>
<img
src="https://www.palindromepay.com/favicon-32x32.png"
alt="Palindrome"
style="width: 20px; height: 20px; border-radius: 3px; flex-shrink: 0;"
/>
Palindrome Pay
</button>
<!--// add the script before </body> -->
<script
src="https://palindromepay.com/widget.js"
data-palindrome-endpoint="https://palindromepay.com/crypto-pay"
defer
></script>


