Prend en charge SOL, tokens SPL

Solana API : paiements SOL et tokens SPL via REST

Créez des adresses Solana et déplacez du SOL et des tokens SPL avec de simples appels REST. Aucun web3.js ni SDK à installer.

Essai gratuit de 7 jours — sans carte, sans KYC pour commencer Non-custodial — vos clés privées restent sous votre contrôle Les offres démarrent à 49 €/mois (490 €/an) — voir les offres et les limites de débit

Une Solana API ne devrait pas imposer un SDK JavaScript à votre backend. Chaingateway enveloppe Solana en REST simple : vous créez des adresses et envoyez des tokens SPL avec deux requêtes POST, et un GET retourne la hauteur de bloc actuelle. L'authentification est un jeton Bearer dans l'en-tête Authorization. Les réponses sont en JSON. Votre backend PHP, Go ou Java parle à Solana de la même façon qu'il parle à tout autre service HTTP.

L'essai dure 7 jours et ne demande aucun KYC. Créez une clé API et effectuez votre première requête avant que le prochain bloc n'atterrisse.

Une capacité par endpoint

Les fournisseurs RPC structurent leur documentation Solana par capacité : accès node ici, streaming là, webhooks à un troisième endroit. La surface Solana de Chaingateway est volontairement plus petite, car c'est une API de paiements plutôt qu'un service de node généraliste. Cartographiée de la même façon, elle ressemble à ceci :

CapacitéEndpointStatut
Créer des adressesPOST /api/v2/solana/addressesEn production
Envoyer du SOLPOST /api/v2/solana/transactionsEn production
Envoyer des tokens SPLPOST /api/v2/solana/transactions/SPLEn production
Vérifier les soldesGET /api/v2/solana/balances/{address}En production
Lire l'état de la chaîneGET /api/v2/solana/blocks/numberEn production
Webhooks de dépôtPas encore sur Solana ; schéma de polling ci-dessous

Chaque endpoint prend le même jeton Bearer, et l'en-tête X-Network: testnet bascule n'importe quelle requête vers l'environnement de test. Les schémas de requête et de réponse sont dans la référence API.

Transactions faciles

Envoyez du SOL et des tokens SPL avec un simple payload JSON. Solana produit des blocs en bien moins d'une seconde, donc un paiement sortant se confirme généralement pendant que votre utilisateur regarde encore l'indicateur de chargement.

Gestion sécurisée des adresses

Les adresses Solana sont des clés publiques de 32 octets encodées en base58, et l'API les valide avant qu'une transaction ne soit construite. L'architecture est non-custodial : les clés de vos fonds vous appartiennent.

Requêtes décodées

Les données de transaction reviennent en JSON structuré plutôt qu'en blobs encodés en base64. Les transferts de tokens sont lisibles sans toucher aux données d'instruction brutes.

Webhooks (IPN)

L'honnêteté d'abord : les webhooks ne sont pas encore disponibles pour Solana. Suivez les dépôts par polling à la place ; GET /api/v2/solana/blocks/number vous dit quand de nouveaux blocs arrivent pour cadencer vos vérifications, et GET /api/v2/solana/balances/{address} répond si quelque chose est arrivé. Sur Ethereum, BSC, Polygon, Arbitrum, TRON et Bitcoin, les webhooks de dépôt sont en production dès aujourd'hui.

Solana en REST, sans web3.js

La voie officielle vers Solana est JSON-RPC, documentée sur solana.com/docs/rpc. Elle expose le protocole de la node : des méthodes comme getLatestBlockhash et sendTransaction, plus une bibliothèque client pour les rendre utilisables. Pour envoyer un token SPL de cette façon, votre code récupère un blockhash récent avant son expiration, résout le compte de token associé du destinataire (et le crée s'il n'existe pas encore), puis construit, signe et sérialise la transaction. En JavaScript, web3.js et le paquet spl-token font cela pour vous. Dans tout autre langage, vous êtes largement livré à vous-même.

Chaingateway remplace cela par un seul appel HTTP. L'API résout les comptes de token et construit la transaction côté serveur, et votre backend n'importe jamais de SDK Solana. Si vous voulez un accès brut à la chaîne pour de l'analyse ou des programmes personnalisés, un fournisseur RPC est le bon outil. Pour les paiements, REST est plus court, et du code plus court a moins d'endroits où casser.

Mints, comptes de token et ATA : pourquoi les transferts Solana sont différents

Si vous venez d'Ethereum, BSC ou Polygon, la partie de Solana la plus susceptible de vous mordre n'est ni la vitesse ni les frais. C'est le modèle de compte.

Le modèle EVM

Un solde de token est une entrée dans le stockage propre du contrat de token. Votre adresse « détient » de l'USDT parce que la table interne du contrat le dit. Envoyer des tokens à un tout nouveau wallet ajoute simplement une ligne à cette table ; le destinataire n'a pas besoin d'exister on-chain d'une façon spéciale.

Le modèle Solana

Solana divise la même idée en comptes séparés. Un token est défini par son compte mint, qui stocke l'offre et les décimales. Les soldes vivent dans des comptes de token, un par combinaison de wallet et de mint, et la variante standard est le compte de token associé (ATA) : son adresse est dérivée de façon déterministe à partir de l'adresse du wallet et de l'adresse du mint. Votre wallet ne contient pas d'USDC. Il possède un compte séparé qui contient de l'USDC.

Deux conséquences pour les paiements

  1. Un ATA doit exister avant que des tokens puissent y atterrir. Si votre destinataire n'a jamais détenu le token, le compte doit être créé on-chain, et la création nécessite un dépôt pour le rendre exempt de loyer (rent-exempt) : 0,00203928 SOL mi-2026, selon la documentation officielle de Solana. En pratique, la transaction de l'expéditeur crée et finance le compte manquant.
  2. Les transferts déplacent de la valeur entre comptes de token, pas entre adresses de wallet. Du code qui vise naïvement l'adresse du wallet échoue, c'est pourquoi l'instruction de transfert SPL prend les deux comptes de token plus le mint et ses décimales pour vérification.

C'est exactement cette comptabilité que Chaingateway fait côté serveur. Vous passez des adresses de wallet et un mint de token ; l'API dérive les comptes de token et construit un transfert valide. Votre backend n'apprend jamais ce qu'est une adresse dérivée de programme, ce qui est le but.

REST vs. web3.js : le même transfert, deux fois

Voici à quoi ressemble l'envoi de 10 USDC avec web3.js et le paquet spl-token :

Node.js
import { Connection, PublicKey } from "@solana/web3.js";
import {
  getOrCreateAssociatedTokenAccount,
  transferChecked,
} from "@solana/spl-token";

const connection = new Connection("https://your-rpc-endpoint");
const usdc = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");

const senderAta = await getOrCreateAssociatedTokenAccount(
  connection, payer, usdc, payer.publicKey
);
const recipientAta = await getOrCreateAssociatedTokenAccount(
  connection, payer, usdc, new PublicKey(recipient)
);

await transferChecked(
  connection, payer,
  senderAta.address, usdc, recipientAta.address,
  payer, 10_000_000, 6 // 10 USDC à 6 décimales
);

Un seul appel au lieu de la comptabilité ATA ci-dessus — créez un compte et essayez-le sur devnet.

Quickstart : trois requêtes vers votre premier transfert SPL

Créer une adresse :

cURL
curl -X POST https://app.chaingateway.io/api/v2/solana/addresses \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY"
cURL
curl https://app.chaingateway.io/api/v2/solana/blocks/number \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY"
cURL
curl -X POST https://app.chaingateway.io/api/v2/solana/transactions/SPL \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contractaddress": "TokenMintAddress",
    "from": "YourSenderAddress",
    "to": "RecipientAddress",
    "amount": 10,
    "privatekey": "YourSenderPrivateKey"
  }'

Solana en chiffres

Les chiffres ci-dessous sont vérifiés contre la documentation officielle de Solana au début juillet 2026.

Un slot, la fenêtre pendant laquelle un validateur peut produire un bloc, est configuré à environ 400 millisecondes et fluctue en pratique entre environ 400 et 600 millisecondes. Cette cadence explique pourquoi le polling des dépôts toutes les une à deux secondes ne prend jamais beaucoup de retard sur la chaîne.

Les frais de transaction de base sont de 5 000 lamports par signature, soit 0,000005 SOL. La moitié est brûlée, l'autre moitié va au producteur de bloc. Par-dessus s'ajoutent des frais de priorité optionnels, tarifés en micro-lamports par unité de calcul ; ils sont nuls par défaut et achètent une préférence d'ordonnancement quand le réseau est chargé. Pour une charge de travail de paiement, la lecture pratique est simple : les frais sont si faibles qu'ils disparaissent dans votre marge même sur une transaction d'un dollar.

Confirmation et finalité sont des choses différentes sur Solana, et la distinction compte pour la façon dont vous créditez les dépôts. Une transaction est généralement confirmée, ce qui signifie qu'une supermajorité de validateurs a voté sur son bloc, en une à deux secondes. La finalité complète prend environ 12,8 secondes mi-2026. La mise à niveau de consensus Alpenglow, prévue pour fin 2026, vise à compresser la finalité à environ 100 à 150 millisecondes ; traitez cela comme un plan annoncé plutôt qu'une propriété en production tant qu'elle n'est pas livrée. Une politique sensée aujourd'hui : créditer les petits paiements à la confirmation, retenir les gros la douzaine de secondes supplémentaires jusqu'à la finalité.

Suivre les dépôts sans webhooks

Solana n'a pas encore d'endpoint de webhook de dépôt sur l'API de Chaingateway. La détection sonde à la place deux appels : GET /api/v2/solana/blocks/number pour suivre les nouveaux blocs et GET /api/v2/solana/balances/{address} pour vérifier les fonds entrants. Avec des slots infra-seconde, un intervalle de polling de deux secondes montre encore un paiement comme reçu en quelques secondes.

Une boucle de polling disciplinée coûte peu à faire tourner. Stockez la hauteur de bloc traitée en dernier, et à chaque fois qu'elle bouge, vérifiez vos adresses de dépôt — ou GET /api/v2/solana/balances/{address}/tokens/{mint} pour un mint SPL spécifique — et faites correspondre ce que vous trouvez avec les commandes ouvertes.

Le coût de latence est plus faible qu'il n'y paraît. Solana produit des blocs en moins d'une seconde, donc même un intervalle de polling de deux secondes signifie qu'un client voit « payé » en quelques secondes après l'envoi. Toute la boucle tient en quelques dizaines de lignes dans n'importe quel langage et tourne comme tâche cron ou worker en arrière-plan. Quand vous étendez plus tard le même flux à une chaîne avec des webhooks, la comptabilité reste identique ; seul le déclencheur change de pull à push.

Accepter de l'USDC sur Solana : un exemple concret

L'USDC est le rail de paiement qui a fait de Solana un réseau de règlement, il fournit donc un exemple concret. L'adresse du mint sur mainnet est EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, émise par Circle ; tout ce qui prétend être USDC sans cela ne l'est pas.

Le côté réception : quand un client passe en caisse, créez une adresse fraîche avec POST /api/v2/solana/addresses et stockez-la avec la commande. Affichez l'adresse et le montant, et laissez le client payer depuis n'importe quel wallet ou plateforme d'échange. Votre boucle de polling de la section précédente capte le transfert entrant, fait correspondre l'adresse de réception avec la commande, et la bascule sur payée. Avec des slots de 400 millisecondes, l'écart entre « le client a appuyé sur envoyer » et « votre base de données dit payé » est de quelques secondes, la majeure partie étant votre propre intervalle de polling.

Enregistrez la signature de transaction de chaque dépôt crédité avec une contrainte unique. Les boucles de polling sont redémarrées, rechargées et relancées, et l'idempotence au niveau de la base de données signifie que rien de tout cela ne peut créditer une commande deux fois.

Le côté paiement reflète cela. Un paiement sortant est un seul appel POST /api/v2/solana/transactions/SPL avec le mint USDC comme contractaddress et un "amount": 10 lisible ; l'API applique les six décimales de l'USDC pour vous. Gardez un solde SOL modeste sur l'adresse expéditrice : 0,000005 SOL par signature pour les frais, plus 0,00203928 SOL chaque fois que le compte de token d'un destinataire doit être créé. Les deux montants sont assez faibles pour qu'un seul flottant rechargé couvre des mois de paiements.

Ce que vous gagnez par rapport aux rails de carte est un règlement en quelques secondes sans mécanisme de rétrofacturation, et ce que vous perdez est la capacité d'annuler une erreur. La validation d'adresse que l'API effectue avant de construire une transaction est votre alliée ici, mais votre propre écran de confirmation compte tout autant.

Envoyer et recevoir n'importe quel token sur Solana, même le vôtre

SPL est le standard de token de Solana, et l'API traite chaque mint SPL de la même façon. USDC et USDT fonctionnent d'emblée, avec les décimales appliquées automatiquement. Si vous avez minté votre propre token, passez son adresse de mint au même endpoint et il se comporte comme les principaux. Comme Chaingateway utilise une structure d'endpoint unique sur toutes les chaînes, le code Solana ci-dessus se transpose vers Ethereum, BSC ou Polygon en échangeant le segment de chaîne et le suffixe de token dans l'URL : /solana/transactions/SPL devient /ethereum/transactions/erc20.

Pourquoi les développeurs choisissent Solana

Solana exécute les transactions en parallèle plutôt que strictement l'une après l'autre, d'où provient son débit. Les frais sont assez faibles pour que payer de minuscules montants reste économique, et la confirmation est assez rapide pour qu'une page de checkout puisse simplement l'attendre. Le volume d'USDC sur Solana a transformé la chaîne en un réseau de règlement sérieux, et la dynamique des développeurs autour a tenu à travers plusieurs cycles de marché.

Testnet, devnet et l'en-tête X-Network

Solana fait tourner deux clusters de test publics, et les noms prêtent à confusion. Devnet est le bac à sable quotidien pour les développeurs d'applications : du SOL gratuit est disponible via des airdrops de faucet, et rien n'y a de valeur. Testnet existe principalement pour que les validateurs et contributeurs principaux exercent de nouvelles versions sous charge. Si vous avez utilisé le Sepolia d'Ethereum, devnet en est l'équivalent le plus proche en esprit.

Avec Chaingateway, vous ne gérez aucune URL de cluster. Ajoutez l'en-tête X-Network: testnet à n'importe quelle requête et elle tourne contre l'environnement de test ; retirez-le et la requête identique est un appel mainnet. Il n'y a aucune seconde clé API ni compte séparé.

Utilisez l'essai pour les scénarios qui font mal sur mainnet : un paiement sortant vers une adresse qui n'a jamais détenu le token (le chemin de création de compte de token), un redémarrage de votre boucle de polling en plein milieu, et une soumission en double du même paiement. Chacun prend quelques minutes à répéter et chacun est un vrai incident si vous le rencontrez pour la première fois en production.

Quand les requêtes échouent

L'API rapporte les problèmes comme de simples codes de statut HTTP, donc rien dans votre gestion d'erreurs n'a besoin d'être spécifique à Solana.

Un 401 signifie que le jeton Bearer est manquant ou faux. Les erreurs dans la plage 4xx sont des échecs de validation, comme une adresse qui ne se décode pas en base58 ou un champ manquant ; le corps JSON dit quoi corriger, et réessayer sans changer le payload est inutile. Un 429 signifie que vous avez atteint la limite de débit de votre forfait ; ralentissez, et cadencez le polling des dépôts sur le battement de hauteur de bloc plutôt que sur une boucle serrée. Des forfaits avec des limites plus élevées sont sur la page de tarification.

Les erreurs serveur dans la plage 5xx sont sûres à réessayer pour les lectures. Pour les envois de tokens, soyez plus prudent : après un timeout, vous ne savez pas si le transfert a été diffusé, et Solana n'a pas encore de piste de webhook ici. Vérifiez vos propres enregistrements et les transferts récents de l'adresse avant de soumettre à nouveau, et gardez une ligne de base de données par paiement prévu pour qu'une relance de votre worker ne puisse pas envoyer deux fois.

Loguez le corps de réponse complet à côté de votre requête. Les codes de statut et schémas d'erreur par endpoint sont dans la référence API.

Conçu pour tous les cas d'usage

Le schéma le plus courant est l'acceptation de paiements : assignez à chaque client une adresse de dépôt, sondez les transferts SPL entrants et marquez la commande payée, avec un règlement en quelques secondes et des frais trop faibles pour compter dans votre calcul de marge. Le second schéma est les opérations de wallet : plateformes qui gèrent dépôts et retraits pour de nombreux utilisateurs via les mêmes quelques endpoints.

Les mêmes briques gèrent l'automatisation des paiements sortants pour les airdrops et lancements de tokens, les transferts récurrents pour la facturation par abonnement, et les paiements transfrontaliers là où l'alternative est une chaîne de banques correspondantes qui prend des jours et prélève des points de pourcentage.

Intégration en trois étapes

Step 1

Obtenez votre clé API. Inscrivez-vous et la clé apparaît immédiatement dans votre tableau de bord. L'essai de 7 jours ne nécessite pas de KYC.

Step 2

Effectuez votre première requête. Le quickstart couvre l'authentification et votre premier appel.

Step 3

Configurez le suivi des dépôts et passez en production. Sur Solana, cela signifie sonder sur le battement de hauteur de bloc ; sur les autres chaînes, vous pouvez basculer vers des webhooks. Une fois que ça fonctionne, retirez l'en-tête X-Network: testnet et le même code tourne contre mainnet.

Ce qui fonctionne sur quelle chaîne

Solana est la seule chaîne sans webhooks de dépôt pour l'instant, d'où le tiret dans cette colonne plus bas sur cette page. Voici comment l'image complète des endpoints se compare sur les sept chaînes.

ChaîneAdressesTransferts de tokensWebhooks de dépôt
BitcoinPOST /api/v2/bitcoin/wallets/{wallet}/addresses— (pas de standard de token)GET /api/v2/bitcoin/webhooks/notifications
EthereumPOST /api/v2/ethereum/addresses/importERC-20 : POST /api/v2/ethereum/transactions/erc20GET /api/v2/ethereum/webhooks/notifications
TRONPOST /api/v2/tron/addresses/importTRC-20 et TRC-10 : POST /api/v2/tron/transactions/trc20 et .../trc10GET /api/v2/tron/webhooks/notifications
SolanaPOST /api/v2/solana/addressesSPL : POST /api/v2/solana/transactions/SPL
BNB Smart ChainPOST /api/v2/bsc/addresses/importBEP-20 : POST /api/v2/bsc/transactions/bep20GET /api/v2/bsc/webhooks/notifications
PolygonPOST /api/v2/polygon/addresses/importERC-20 : POST /api/v2/polygon/transactions/erc20GET /api/v2/polygon/webhooks/notifications
ArbitrumPOST /api/v2/arbitrum/addresses/importERC-20 : POST /api/v2/arbitrum/transactions/erc20GET /api/v2/arbitrum/webhooks/notifications

Deux notes de bas de page pour bien lire le tableau. D'abord : TRON est l'intégration la plus complète de la plateforme. Au-delà des routes ci-dessus, la référence documente le staking (POST /api/v2/tron/freeze et /delegate), les paramètres de chaîne, et une paire d'auto-signature — /transactions/trc20/build pour construire une transaction et /transactions/broadcast pour en soumettre une que vous avez signée localement. Si votre équipe conformité insiste pour que les clés privées ne quittent jamais vos serveurs, ce schéma build-and-broadcast est votre porte d'entrée.

Ensuite : un tiret signifie que la référence actuelle ne documente pas de route v2 pour cette cellule, pas que le réseau est de seconde classe. Bitcoin n'a pas de standard de token, d'où la cellule token vide — le BTC natif passe plutôt par son propre modèle de wallet : créer un wallet chiffré par mot de passe avec POST /api/v2/bitcoin/wallets, dériver des adresses de dépôt en dessous, et envoyer avec POST /api/v2/bitcoin/transactions. La référence de Solana couvre la création d'adresse, les transferts SOL et SPL, et les recherches de solde et de bloc, mais pas encore les webhooks. Pour tout ce qui n'est pas listé ici, la référence API a l'état actuel.

Questions fréquentes

Oui. Créez une adresse Solana, détectez les transferts entrants avec les endpoints de solde et de transaction, et créditez le paiement, que ce soit du SOL, de l'USDC ou tout token SPL. Envoyer des tokens SPL est un seul appel POST /api/v2/solana/transactions/SPL. Les webhooks de dépôt ne sont pas encore disponibles pour Solana, donc la détection de dépôt utilise le polling.

Un service qui permet à votre application de lire et écrire sur la blockchain Solana via HTTP, sans faire tourner un validateur ou une node RPC vous-même. La Solana API de Chaingateway est construite pour les paiements : création d'adresse, transferts SOL et SPL, requêtes de solde et de bloc, exposés comme endpoints REST derrière un jeton Bearer.

JSON-RPC est le protocole natif de la node. C'est bas niveau : vous soumettez des transactions entièrement construites et signées et interprétez des données de compte brutes, ce qui en pratique nécessite web3.js ou une bibliothèque équivalente. REST, tel que Chaingateway l'implémente, se situe un niveau au-dessus : vous décrivez le transfert en JSON et le serveur gère la construction et la diffusion. JSON-RPC convient aux explorateurs et backends DeFi qui ont besoin de chaque méthode ; REST convient aux systèmes de paiement qui ont besoin d'une poignée d'opérations avec un minimum de code.

Sur Solana, les soldes de tokens ne vivent pas dans votre adresse de wallet. Chaque combinaison de wallet et de mint de token a son propre compte de token, et le compte de token associé (ATA) est le standard, dérivé de façon déterministe des deux adresses. Un ATA doit exister et détenir un dépôt exempt de loyer de 0,00203928 SOL (mi-2026) avant de pouvoir recevoir des tokens. Chaingateway dérive et, si nécessaire, crée ces comptes côté serveur, si bien que votre intégration ne traite qu'avec des adresses de wallet.

Oui, un peu. L'adresse expéditrice paie les frais de base de 5 000 lamports (0,000005 SOL) par signature, et quand le destinataire n'a jamais détenu le token, la transaction finance aussi le nouveau compte de token avec le minimum exempt de loyer. Un petit flottant de SOL sur votre adresse expéditrice couvre les deux pendant longtemps.

La confirmation, le point où une supermajorité de validateurs a voté sur le bloc, arrive généralement en une à deux secondes. La finalité complète prend environ 12,8 secondes mi-2026. La mise à niveau Alpenglow prévue pour fin 2026 vise une finalité autour de 100 à 150 millisecondes. Pour les dépôts, créditer les petits montants à la confirmation et les gros à la finalité est un défaut raisonnable.

Oui. Passez le mint USDC officiel, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, comme contractaddress et un montant décimal ; l'API applique automatiquement les six décimales de l'USDC. Le même appel fonctionne pour l'USDT ou tout autre mint SPL.

Devnet est le bac à sable de Solana pour les développeurs d'applications, avec du SOL gratuit via des faucets. Testnet sert principalement les validateurs testant de nouvelles versions. Via Chaingateway, vous basculez vers l'environnement de test avec l'en-tête X-Network: testnet et ne gérez jamais directement d'URL de cluster.

Oui, liées à votre forfait ; les chiffres actuels sont sur la page de tarification. Pour le polling des dépôts, une requête par nouveau bloc est un plafond raisonnable, et GET /api/v2/solana/blocks/number est un moyen peu coûteux de le cadencer.

Tous. N'importe quel mint SPL fonctionne, de l'USDC et l'USDT à un token que vous avez créé hier. Vous passez l'adresse du mint dans la requête, et les décimales sont gérées automatiquement.

Pas encore. Les notifications webhook sont en production pour Ethereum, BSC, Polygon, Arbitrum, TRON et Bitcoin, mais sur Solana vous suivez les dépôts par polling pour l'instant. Le guide des webhooks couvre les chaînes où les notifications push sont disponibles.

Prêt à intégrer Solana ?

Créez votre compte, copiez la clé API et envoyez un transfert SPL sur le réseau de test dans les dix prochaines minutes. La référence complète des endpoints est sur /docs/, et le portail développeur a des tutoriels pour les flux de paiement les plus courants.