Supported operations
Asset identifiers
Solana assets use the Base58 mint address, for exampleAvvetPGuuB5FD5m86fpw3LtDKyQoUFT1mG9WarNQLW4q.
Stablebond addresses
Live mint accounts for every stablebond on Solana, each linked to Solscan:Register a Solana wallet
Register the wallet as a payment account withaccountDetails of kind address and chain solana. Set $ORGANIZATION_ID to the organization that owns the wallet: your own organization or a customer organization. See Organizations in the route.
id as the source or destination of a quote.
Wallet and gas
Solana has no trustline or account-reserve step. Network fees are a tiny fraction of a cent. On an offramp or swap, the customer’s wallet pays the fee for the funding transaction. The prepared transaction only transfers the tokens; our receiving wallet’s token account already exists.Offramps and swaps: fund the order
For an offramp or swap from a Solana wallet,fundingInstructions.destination.address is the address to pay. The source asset is an SPL token. Fund the order in one of two ways:
- Sign the prepared transaction.
preparedTransaction.transactionis an unsigned v0 transaction, base64-encoded in Solana’s wire format. The customer’s wallet is the fee payer and the only signer. Sign it and submit it. - Send the tokens yourself. Send the order’s
source.amountofsource.assettoaddress.
VersionedTransaction.deserialize in @solana/web3.js. Transaction.from reads only legacy transactions.
The prepared transaction uses a recent blockhash, so it goes stale. After preparedTransaction.refreshAfter, about 60 seconds after we build it, call POST /organization/{organizationId}/order/{id}/funding_instructions/refresh. It returns the order as it is. The new funding instructions arrive a moment later in an orderUpdated webhook, and on GET .../order/{id}.
Every refresh builds a new transaction. Until the old one’s blockhash expires, both can land, so have the customer sign and submit only the newest one.
Swaps
A swap on Solana is an order between two Solana wallet accounts. Track it like any other order: readGET /organization/{organizationId}/order/{id}, or subscribe to orderUpdated. The status moves created → funded → completed. See Swaps.