Fiatside

Developpeurs

Referentiels et pagination

Les catalogues de rails, d’actifs et de pays sont la meme source que celle qui alimente le site. Ils portent les limites, les delais, les frais et les schemas de champs — de quoi generer votre formulaire de payout au lieu de le coder pays par pays.

Frequence de rafraichissement

Ces donnees changent rarement, mais elles changent : un plafond de rail, une heure limite, un pays qui ouvre. Rafraichissez-les au moins une fois par jour, et ne les figez pas dans votre code. Chaque entree porte une date de derniere verification manuelle : au-dela de six mois, considerez qu’elle merite un controle.

01

Pagination

Pagination par curseur, pas par decalage numerique. Un decalage saute ou duplique des elements des que la liste bouge entre deux pages ; un curseur pointe sur une position stable.

Requetehttp
GET /api/v1/rails?limit=50&cursor=cJ0xNzg4MzU2OTgx
Reponsejson
{
  "data": [ /* … */ ],
  "next_cursor": "cJ0xNzg4MzU3MTEy"
}
  • limit vaut 50 par defaut, 100 au maximum. Une valeur superieure est ramenee au maximum plutot que rejetee.
  • next_cursor est nul sur la derniere page. C’est le seul signal de fin : ne deduisez pas la fin d’une page incomplete.
  • Un curseur est opaque et sans duree de vie garantie. Ne le stockez pas comme un identifiant durable, ne le construisez pas vous-meme.
  • L’ordre est stable a l’interieur d’une pagination. Un element ajoute pendant votre parcours apparaitra au prochain parcours complet, pas au milieu du courant.
GET/api/v1/railsContrat publie, non ouvert

Lister les moyens de paiement

Catalogue des rails de payout avec leur devise, les pays servis, les delais p50 et p95, les jours ouvres, l’heure limite, les limites par operation en unites mineures, les frais et le schema des champs du beneficiaire. C’est ce schema qui permet de generer le formulaire de payout au lieu de le coder pays par pays.

Authentification : Authorization: Bearer … Voir l’authentification

Parametres

Parametres
ChampTypeDescription
countrystringFiltre ISO 3166-1 alpha-2.
currencystringFiltre ISO 4217.
phasestringlive, beta, planned ou never.
limitintegerTaille de page, 1 a 100, defaut 50.
cursorstringCurseur opaque rendu par l’appel precedent.
Requetebash
curl -sS 'https://fiatside.com/api/v1/rails?country=BR' \
  -H 'Authorization: Bearer sk_live_...'
Reponse — contrat publiejson
{
  "data": [
    {
      "id": "br_pix",
      "slug": "pix",
      "name": "PIX",
      "kind": "instant_bank",
      "currency": "BRL",
      "countries": ["BR"],
      "phase": "live",
      "settlement": { "p50Minutes": 1, "p95Minutes": 10, "businessDaysOnly": false },
      "limits": { "minMinor": 1000, "maxMinor": 5000000, "decimals": 2 },
      "fees": { "fixedMinor": 0, "bps": 0 },
      "fields": [
        { "name": "pixKeyType", "type": "select", "required": true },
        { "name": "pixKey", "type": "text", "required": true, "maxLength": 77 },
        { "name": "taxId", "type": "text", "required": true, "pattern": "^[0-9]{11}$" }
      ],
      "verifiedAt": "2026-09-02"
    }
  ],
  "next_cursor": null
}
  • Un rail ferme est rendu avec sa phase et son motif, pas retire de la liste. Une integration qui ne voit pas pourquoi un rail a disparu redemande a son support.

Erreurs possibles : unauthorized, invalid_request. Catalogue complet

GET/api/v1/assetsContrat publie, non ouvert

Lister les actifs acceptes

Actifs acceptes en depot, avec les decimales de l’unite de base, les reseaux, le depot minimum, la duree de verrouillage du taux et, le cas echeant, le motif pour lequel un actif n’est pas propose.

Authentification : Authorization: Bearer … Voir l’authentification

Parametres

Parametres
ChampTypeDescription
networkstringNe rend que les actifs disponibles sur ce reseau.
Requetebash
curl -sS 'https://fiatside.com/api/v1/assets?network=tron' \
  -H 'Authorization: Bearer sk_live_...'
Reponse — contrat publiejson
{
  "data": [
    {
      "id": "usdt",
      "ticker": "USDT",
      "name": "Tether",
      "decimals": 6,
      "networks": ["tron", "ethereum", "bsc", "solana", "polygon", "arbitrum"],
      "stablecoin": true,
      "quoteLockSeconds": 1800,
      "minDepositBase": "20000000",
      "phase": "live"
    }
  ],
  "next_cursor": null
}
  • minDepositBase est exprime en unites de BASE (20000000 = 20 USDT a 6 decimales). Sous ce seuil, le cout reseau consomme l’essentiel de l’operation.

Erreurs possibles : unauthorized. Catalogue complet

GET/api/v1/countriesContrat publie, non ouvert

Lister les pays

Pays desservis, pays en preparation et pays refuses. Un pays refuse est rendu avec son motif : sanctions internationales, mesures restrictives ou risque de blanchiment juge inacceptable.

Authentification : Authorization: Bearer … Voir l’authentification

Parametres

Parametres
ChampTypeDescription
statusstringopen, coming ou restricted.
Requetebash
curl -sS 'https://fiatside.com/api/v1/countries?status=open' \
  -H 'Authorization: Bearer sk_live_...'
Reponse — contrat publiejson
{
  "data": [
    { "code": "BR", "name": "Brasil", "currency": "BRL", "status": "open", "rails": ["br_pix", "paypal", "wise", "swift"] },
    { "code": "IR", "name": "Iran",   "currency": null,  "status": "restricted", "reason": "international_sanctions" }
  ],
  "next_cursor": null
}

Erreurs possibles : unauthorized. Catalogue complet

02

Le schema de champs du beneficiaire

Chaque rail decrit les champs qu’il exige, avec leur motif de validation, leur normalisation et leur texte d’aide. C’est ce qui permet de generer un formulaire correct pour un pays que vous n’avez jamais integre.

Un champ du schemajson
{
  "name": "iban",
  "label": { "fr": "IBAN", "en": "IBAN" },
  "type": "iban",
  "required": true,
  "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$",
  "normalize": "upper",
  "help": {
    "fr": "Sans espaces. Nous verifions la cle de controle avant de valider la commande.",
    "en": "No spaces. We validate the checksum before confirming your order."
  }
}

La validation par motif se fait chez vous ET chez nous : la votre evite un aller-retour a l’utilisateur, la notre fait foi. Le texte d’aide est fourni dans les deux langues et merite d’etre affiche : il evite la majorite des payouts rejetes, qui viennent presque toujours d’un format saisi de travers, pas d’une panne.