solana network and the usdc and usdt stablecoins.
Prerequisites
- Create the
individualcustomer first. - Retain the customer UUID returned by FossaPay.
- Use the production API key belonging to the same merchant.
- Decide how your system will map the customer to the returned Solana address.
Create a customer wallet
Addresses and ownership
Solana addresses are public deposit destinations, not authentication credentials. An address can receive supported assets from external senders, but authenticated wallet details and transaction history remain merchant-scoped. Validate the full address before displaying or using it. Do not truncate addresses in storage, comparison, signing, or transfer requests. Truncation is suitable only for presentation after the complete value has been retained.Supported assets
Do not infer support for a token from its symbol alone. Sending an unsupported asset or using another network can make funds unavailable to the integration.
Retrieve wallets and balances
Customer wallets can be retrieved by FossaPay wallet ID or full blockchain address. The master endpoint returns merchant-owned stablecoin addresses and their provider-reported token balances. Token balances contain human-readable and raw representations where supplied by the provider. Preserve decimal precision and do not use JavaScript binary floating point for ledger calculations.Wallet retrieval responses may be cached briefly. Use transaction state and confirmed provider results for operation reconciliation rather than assuming two immediate balance reads must differ.
Calculate a transfer fee
Before sending, call:Send stablecoins
POST /api/v1/transfers/crypto sends from the customer’s wallet to a Solana recipient.
The current transfer flow treats the submitted amount as the gross token amount. The configured fee is deducted and the recipient transfer uses the net amount (
amount - fee). Confirm the current fee before presenting the expected recipient amount.
The initial response reports provider processing; it is not final settlement. Persist the returned data and wait for the corresponding verified terminal event or reconcile the transaction through wallet history.
Status and finality
When available, store the transaction hash and explorer link alongside the FossaPay transaction ID and references.
Safe retry behavior
Crypto transfer creation does not accept a merchant-provided idempotency key or reference. A timeout after submission is therefore ambiguous. Do not immediately send the same transfer again. Retrieve wallet transaction history and inspect balances before making a new business decision.API reference
Production checklist
- Accept only
solana,usdc, andusdtwhere applicable. - Persist complete addresses and identifiers without truncation.
- Use decimal-safe token handling.
- Quote fees before presenting the recipient amount.
- Treat processing responses as non-terminal.
- Verify and deduplicate webhook events.
- Reconcile ambiguous submissions before sending again.
- Never promise reversibility after blockchain confirmation.

