POST /solana/tips/create to record the tip on Tip Stack.
Request
POST https://tipstack.fun/api/payments/intent
The creator to tip. Accepts a Tip Stack user ID, Solana wallet address, Twitter handle (with or without
@), Discord handle, or .sol domain.The token amount to send, expressed in human-readable units (e.g.
1.5 for 1.5 SOL or 1.5 USDC). When amountUsd is also provided, amount is ignored.USD amount to send. When provided, overrides
amount and is automatically converted to token units using the live Jupiter price feed. Use this for consistent USD-denominated tips regardless of the token the supporter holds.The Solana mint address of the token the supporter is sending (e.g.
So11111111111111111111111111111111111111112 for native SOL or EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v for USDC).The supporter’s wallet public key. This is set as the transaction fee payer and the token source.
Human-readable symbol for the input token (e.g.
SOL, USDC, BONK). Used for display purposes in the response quote and tip record. Does not affect routing.Response
true when a transaction was successfully generated.Unique intent identifier prefixed with
pi_. Pass this to downstream systems for tracking.Always
requires_action — the transaction is ready for the supporter to sign but has not been submitted yet.Base64-encoded, serialized Solana
VersionedTransaction. Deserialize this client-side, sign it with the supporter’s wallet, and submit it to the Solana network. See the usage note below.sync for standard on-chain submission; async when the transaction uses gasless landing (Jito bundles). For async transactions, submit via a Jito-compatible RPC endpoint.The routing engine selected by Tip Stack. One of
direct-transfer (no swap needed), jupiter-ultra, or jupiter-v6. The engine is chosen automatically based on the token pair and creator settings.The last Solana block height at which this transaction remains valid. If the transaction is not submitted before this block, it will be rejected. Fetch a fresh intent if expiry is reached.
Using the transaction
After receiving the response, deserialize the Base64 transaction, request the supporter’s signature, and submit it to Solana. Once you have a confirmedtxSignature, call POST /solana/tips/create to record the tip.
TypeScript
Example request
JSON
Example response
JSON
The
transaction field is a Base64-encoded, unsigned Solana versioned transaction. You must deserialize it with VersionedTransaction.deserialize(), have the supporter sign it, and submit it yourself. Tip Stack does not submit transactions on your behalf.