ChatFi Pay Docs
Accept Solana payments via API. Simple, fast, non-custodial.
What is ChatFi Pay?
ChatFi Pay lets you accept Solana payments from anyone — no bank, no signup, no middleman. Your customers get a simple payment page or QR code. You receive USDC or USDT directly to your wallet.
For Non-Developers (No Code Needed)
You don't need to write any code to use ChatFi Pay. Just follow these steps inside the ChatFi app:
Open the ChatFi App
Tap More at the bottom of the screen, then tap Payment Link.
Set Your Amount & Label
Enter how much you want to charge (or leave it blank for any amount), add a label like Invoice #001, and an optional note.
Generate & Share
Tap Generate Link. You'll get a payment page link and QR code. Share it via WhatsApp, email, or any platform — your customer opens it and pays instantly.
Track Payments
Go to More → Payment History to see all your paid and pending payments in one place.
Getting Started
Open ChatFi App
Go to More → Merchant in the ChatFi app.
Generate an API Key
Tap Generate API Key. Your key starts with cfp_. Keep it secret — it identifies your wallet.
Set a Webhook (optional)
Add a webhook URL to receive a POST request when a payment is confirmed.
Create a Payment Link
Send a POST request to create a payment link your customers can pay via browser or wallet.
Headers
x-api-key: cfp_YOUR_KEY Content-Type: application/json
Body
{
"amount": 5, // optional -- omit for open amount
"token": "USDC", // "USDC" | "USDT" -- defaults to USDC
"label": "Invoice #001",
"memo": "Payment for design work" // optional
}Response
{
"success": true,
"id": "abc123",
"link": "https://pay.chatfi.pro/pay/abc123",
"amount": 5.2, // includes the 0.2 network-fee surcharge (USDC/USDT only)
"requestedAmount": 5, // what you originally asked for
"feeUsdc": 0.2,
"token": "USDC",
"label": "Invoice #001",
"status": "pending"
}Check Payment Status
Headers
x-api-key: cfp_YOUR_KEY
Response
{
"id": "abc123",
"status": "completed", // "pending" | "completed"
"amount": 5.2,
"token": "USDC",
"label": "Invoice #001",
"paidAt": "2026-06-16T10:00:00.000Z",
"txSignature": "5Fo8VJqG..."
}Webhook Payload
When a payment is confirmed, ChatFi POSTs this to your webhook URL.
{
"event": "payment.confirmed",
"id": "abc123",
"amount": 5.2,
"label": "Invoice #001",
"memo": "Payment for design work",
"walletAddress": "7tsf2T6S...",
"txSignature": "5Fo8VJqG...",
"paidAt": "2026-06-16T10:00:00.000Z"
}Quick Example (Node.js)
const res = await fetch("https://pay.chatfi.pro/api/payment", {
method: "POST",
headers: {
"x-api-key": "cfp_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 5,
token: "USDC",
label: "Order #42",
memo: "T-shirt XL",
}),
});
const { link } = await res.json();
// Redirect customer to: linkFees
Supported Tokens & How It Works
Payment links support USDC and USDT. Whichever token you set when creating the link is shown by default, but on the payment page your customer can manually switch between USDC and USDT before sending — either one will be detected and confirmed automatically.
Funds are swept directly to your wallet as soon as a payment is confirmed on-chain — ChatFi never holds custody of your funds at any point.
Support / Contact
Powered by ChatFi · Built on Solana