Skip to content

Conventions de l'API ​

URL de base ​

text
https://app.so-amtar.com/v1

Toutes les routes documentées sont relatives à cette base. Test et live partagent la même URL : c'est le mode de la clé (sk_test_ / sk_live_) qui choisit l'environnement.

Format ​

  • Encodage : UTF-8
  • Type de contenu des requêtes : application/json
  • Type de contenu des réponses : application/json; charset=utf-8

Headers communs ​

HeaderSensNotes
Authorization: Bearer sk_...vers l'APIToujours requis
Idempotency-Key: <uuid>vers l'APIRecommandé sur POST/PUT/PATCH/DELETE
Content-Type: application/jsonvers l'APIRequis avec un corps
Accept: application/jsonvers l'APIOptionnel, JSON par défaut
Soamtar-Timestamp / Soamtar-Signaturevers l'APISignature de requête optionnelle (v1=HMAC-SHA256(timestamp.METHOD.path, clé secrète))
X-Request-Id: <id>depuis l'APIÀ inclure dans vos signalements d'incident
Idempotent-Replay: truedepuis l'APIPrésent quand la réponse provient du cache d'idempotence

Enveloppe de réponse ​

Succès (objet unique) ​

json
{
  "data": { "id": "...", "object": "transaction" },
  "livemode": false
}

Succès (collection paginée) ​

json
{
  "data": [ {}, {} ],
  "pagination": {
    "total": 142,
    "per_page": 25,
    "current_page": 1,
    "last_page": 6
  },
  "livemode": false
}

Erreur ​

json
{
  "error": {
    "code": "payment_rejected",
    "message": "The selected currency is invalid.",
    "documentation_url": "https://app.so-amtar.com/docs/errors#payment_rejected"
  }
}

Identifiants ​

TypeFormatExemple
id (toutes ressources)UUID v40e85b3c2-7c4f-4f1d-9b3a-1c8a2d4e5f6a
Référence de transactionTXN- + alphanumériques majusculesTXN-1A2B3C4D-ABCDEF123456

Les références font au plus 36 caractères ; prévoyez au moins 50 caractères dans votre schéma pour les évolutions. Les routes acceptent l'UUID OU la référence en paramètre de chemin.

Pagination ​

  • ?per_page=N (un maximum raisonnable et une valeur par défaut s'appliquent)
  • ?page=N (1 par défaut)
  • La réponse contient pagination.{total,per_page,current_page,last_page}

Filtres communs ​

ParamètreEffet
status=successFiltre par statut
created_from=2026-10-01created_at >=
created_to=2026-10-31created_at <=
provider=orange_money_slFiltre par provider
customer_id=<uuid>Filtre par client

Devises ​

CodeDécimalesPlus petit montant
SLE20.01
USD20.01
EUR20.01

Les montants sont en unités principales avec au plus deux décimales : 150.00 = 150 leones, 12.50 = 12 leones et 50 cents. Un montant plus précis est rejeté, jamais arrondi. SLL (code d'avant 2022) n'est pas accepté. Affichez les leones sous la forme Le 1,250.00.

Numéros de téléphone ​

E.164 strict : +23276000001 — +232 puis le numéro national à 8 chiffres. Sans espace ni tiret. Les paiements sortants exigent le + initial.

Dates ​

ISO-8601 avec fuseau : 2026-10-21T09:41:00+00:00. Les horodatages sont en UTC, qui est aussi l'heure de Freetown (Africa/Freetown, GMT, pas d'heure d'été).

Codes HTTP ​

CodeSens
200Succès, ressource renvoyée
201Créé, ressource renvoyée
202Accepté, traitement asynchrone
204Succès sans contenu (ex. DELETE)
400Requête malformée
401Authentification absente ou invalide
403Authentification valide, droits insuffisants
404Ressource introuvable
409Conflit (idempotence)
422Validation métier échouée
429Limite de débit
500Erreur interne (à signaler)
502Orange Money indisponible en aval
503Maintenance planifiée

Versionnement ​

L'URL contient la version : /v1. Voir la politique de versionnement.

Limitation de débit ​

Des limites s'appliquent par clé API et par endpoint sensible. Les valeurs exactes dépendent de votre profil d'activité ; en cas de dépassement, vous recevez 429 Too Many Requests avec un header Retry-After. Contactez le support avant une hausse de trafic prévue.

Compression ​

Accept-Encoding: gzip est pris en charge.

CORS ​

L'API n'est pas faite pour être appelée depuis un navigateur (cela exposerait votre clé secrète). Passez par votre serveur ; dans le navigateur, utilisez SOAMTAR.js avec votre clé publique.

SOAMTAR Payment API Documentation.