Qauryx/Documentation
// API v1 · STABLE

Intégrez en quelques heures.

Quickstart, référence API, SDKs, webhooks et sandbox. La doc qu'on aurait aimé lire quand on était nous-mêmes ingénieurs.

Quickstart // 5 min

Créez votre première session checkout en moins de 5 minutes. Vous aurez besoin d'un compte Stripe existant et de votre clé API Qauryx (disponible dans le dashboard une fois la beta activée).

1. Installer le SDK

terminal
SH
# npm
$ npm install @qauryx/node

# yarn
$ yarn add @qauryx/node

# pnpm
$ pnpm add @qauryx/node

2. Créer une session

checkout.ts
TS
import { Qauryx } from '@qauryx/node';

const qauryx = new Qauryx(process.env.QAURYX_KEY!);

const session = await qauryx.checkout.create({
  amount: 4990,                // en cents
  currency: 'eur',
  customer: 'cus_8fa72b',
  methods: ['card', 'apple_pay', 'sepa', 'klarna'],
  ml_scoring: true,
  retry_strategy: 'smart',
  return_url: 'https://shop.acme.io/done',
});

// → 201 Created · 142ms
// → session.url = 'https://pay.qauryx.io/c/8fa72bcc'

3. Rediriger l'utilisateur

handler.ts
TS
export default async function handler(req, res) {
  const session = await createCheckout(req.body);
  res.redirect(302, session.url);
}
i

C'est tout. Qauryx orchestre la session, la 3DS, le scoring fraude et le routing vers votre compte Stripe. Vous recevrez un webhook checkout.completed dès paiement validé.

Authentification // Bearer

L'API Qauryx utilise des clés bearer. Vous avez deux jeux distincts : test pour la sandbox, live pour la production. Ne partagez jamais une clé live côté client.

request
CURL
$ curl https://api.qauryx.io/v1/checkout/sessions \
    -H "Authorization: Bearer qx_live_4f2a8…" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: req_8fa72b" \
    -d '{"amount":4990,"currency":"eur"}'

Toutes les requêtes doivent passer en HTTPS. L'en-tête Idempotency-Key est recommandé pour toute mutation : il garantit qu'une requête répétée n'aboutit qu'à une seule opération.

Sandbox // gratuit · illimité

L'environnement sandbox réplique 100% du comportement live, y compris webhooks, scoring ML et latence p95. Idéal pour les tests d'intégration et les pipelines CI.

  • Cartes test : 4242 4242 4242 4242 (succès), 4000 0000 0000 9995 (decline)
  • Webhook delivery : 100% fidèle, retry exponentiel inclus
  • Scoring ML : modèle réel, scores reproductibles

Checkout Sessions // resource

Une session représente une intention de paiement orchestrée. Elle inclut le routage, le scoring, les retries et la finalisation Stripe.

POST/v1/checkout/sessions

Paramètres

ChampTypeDescription
amountinteger

Montant en plus petite unité monétaire (centimes pour EUR).

currencystring

Code ISO-4217 sur 3 lettres (eur, usd, gbp…).

customerstring

Identifiant client Qauryx ou Stripe. Optionnel pour les guests.

methodsstring[]

Liste des méthodes activées. Par défaut : toutes celles disponibles pour la devise.

ml_scoringboolean

Active le scoring anti-fraude ML. Par défaut true sur Glow et Nova.

retry_strategystring

off, basic, ou smart pour le retry intelligent.

return_urlstring

URL de redirection après paiement. Doit être HTTPS.

Exemple de réponse

201 Created
JSON
{
  "id": "session_8fa72bcc",
  "object": "checkout.session",
  "amount": 4990,
  "currency": "eur",
  "status": "open",
  "url": "https://pay.qauryx.io/c/8fa72bcc",
  "expires_at": 1721854320,
  "created": 1721850720,
  "livemode": true
}

Customers // resource

Les objets Customer stockent les profils acheteurs, leurs méthodes de paiement tokenisées et l'historique de scoring. Synchronisés en bidirectionnel avec votre cus_* Stripe.

GET/v1/customers/:id
POST/v1/customers

Refunds // resource

Les remboursements sont relayés à Stripe avec idempotence native. Vous pouvez rembourser partiellement, déclencher en webhook, ou planifier.

POST/v1/refunds
refund.ts
TS
await qauryx.refunds.create({
  payment_intent: 'pi_3Nx9aB…',
  amount: 2490,
  reason: 'requested_by_customer'
});

Codes d'erreur // HTTP semantics

Qauryx suit la sémantique HTTP standard. Les codes 4xx indiquent une erreur côté requête, les 5xx un incident côté plateforme.

CodeTypeDescription
400invalid_request

Paramètres manquants ou mal formés.

401unauthenticated

Clé API manquante ou invalide.

402payment_declined

Paiement refusé par l'émetteur ou le scoring fraude.

404not_found

Ressource inexistante.

409idempotency_conflict

Clé d'idempotence déjà utilisée avec corps différent.

429rate_limited

Trop de requêtes. Backoff exponentiel recommandé.

503service_unavailable

Plateforme dégradée. Voir status.qauryx.io.

Webhooks // événements

Qauryx envoie des webhooks signés HMAC-SHA256 pour chaque événement clé. Retry exponentiel sur 72h, dead letter queue accessible.

payload.json
EVENT
{
  "id": "evt_8fa9c1",
  "type": "checkout.completed",
  "created": 1721850921,
  "data": {
    "session_id": "session_8fa72bcc",
    "amount": 4990,
    "fraud_score": 12,
    "method": "apple_pay"
  }
}

Signatures HMAC // sécurité

Chaque webhook contient un en-tête Qauryx-Signature. Vérifiez-le systématiquement avant de traiter l'événement.

verify.ts
TS
import { verifyWebhook } from '@qauryx/node';

const event = verifyWebhook({
  payload: req.rawBody,
  signature: req.headers['qauryx-signature'],
  secret: process.env.QAURYX_WEBHOOK_SECRET!
});

// → throws QauryxSignatureError si invalide

SDKs officiels // 4 langages

SDKs maintenus en interne, releases mensuelles, typage strict. Open source sur GitHub.

  • @qauryx/node — TypeScript / JavaScript, Node 18+, Deno, Bun
  • qauryx-python — Python 3.10+, async natif
  • qauryx-go — Go 1.21+, context-aware
  • qauryx-ruby — Ruby 3.1+, threadsafe
i

Pas votre langage ? L'API REST est totalement documentée en OpenAPI 3.1. Vous pouvez générer un SDK custom en quelques minutes.