Demandes de paiement¶
Référence complète des endpoints de l'API de gestion des demandes de paiement.
Créer une demande¶
Crée une nouvelle demande de paiement (pré-paiement ou empreinte bancaire).
Corps de la requête¶
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
request_type |
string | Oui | — | IMPRINT ou DEPOSIT |
amount |
decimal | DEPOSIT: oui | 0 |
Montant en devise (ex: 150.00) |
currency |
string | Non | EUR |
Devise ISO 4217 (EUR, CHF, USD) |
guest_email |
string | Oui | — | Adresse email du client |
guest_first_name |
string | Oui | — | Prénom du client |
guest_last_name |
string | Oui | — | Nom du client |
guest_phone |
string | Non | "" |
Téléphone du client |
language |
string | Non | fr |
Langue du formulaire : fr, en, de |
reservation_ref |
string | Oui | — | Référence de réservation dans votre PMS |
reservation_data |
object | Non | {} |
Données supplémentaires (JSON libre) |
Réponse 201 Created¶
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference": "DEP-2026-0042",
"status": "NOT_INITIATED",
"payment_link": "/payment/550e8400-e29b-41d4-a716-446655440000/"
}
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 400 | {"error": "DEPOSIT requests require an amount greater than 0"} |
Pré-paiement sans montant |
| 401 | Non autorisé | Clé API manquante ou invalide |
Exemple¶
curl -X POST \
-H "X-API-Key: votre-clé-api" \
-H "Content-Type: application/json" \
-d '{
"request_type": "DEPOSIT",
"amount": 150.00,
"currency": "EUR",
"guest_email": "jean.dupont@email.com",
"guest_first_name": "Jean",
"guest_last_name": "Dupont",
"reservation_ref": "RES-2026-100"
}' \
https://votre-domaine.com/api/payment-requests/
Lister les demandes¶
Retourne la liste de toutes les demandes de paiement du tenant courant.
Paramètres de requête¶
| Paramètre | Type | Description |
|---|---|---|
status |
string | Filtrer par statut (PENDING, CAPTURED, etc.) |
Réponse 200 OK¶
Tableau d'objets PaymentRequestDetail (voir Schémas).
Exemple¶
# Toutes les demandes en attente
curl -H "X-API-Key: votre-clé-api" \
"https://votre-domaine.com/api/payment-requests/?status=PENDING"
Détail d'une demande¶
Retourne le détail complet d'une demande de paiement.
Paramètres de chemin¶
| Paramètre | Type | Description |
|---|---|---|
uuid |
string (UUID) | Identifiant unique de la demande |
Réponse 200 OK¶
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference": "DEP-2026-0042",
"request_type": "DEPOSIT",
"status": "CAPTURED",
"amount": 150.00,
"amount_captured": 150.00,
"amount_refunded": 0.00,
"currency": "EUR",
"guest_email": "jean.dupont@email.com",
"guest_first_name": "Jean",
"guest_last_name": "Dupont",
"reservation_ref": "RES-2026-100",
"reservation_data": {
"checkin": "2026-07-01",
"checkout": "2026-07-05"
},
"masked_pan": "497010XXXXXX0014",
"card_expiry_month": 12,
"card_expiry_year": 2030,
"order_cycle": "CLOSED",
"email_sent": true,
"created_at": "2026-03-08T10:30:00Z",
"updated_at": "2026-03-08T10:35:00Z"
}
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 404 | {"error": "Payment request ... not found."} |
UUID inexistant |
Synchroniser les statuts¶
Endpoint optimisé pour la synchronisation PMS. Par défaut retourne uniquement les demandes non acquittées ou modifiées depuis le dernier acquittement (changement de statut via webhook, capture, remboursement, etc.). Combiné avec POST /mark-retrieved/, il permet une sync incrémentale sans doublons.
Paramètres de requête¶
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
refs |
string | — | Références de réservation séparées par des virgules |
include_retrieved |
boolean | false |
Si true, retourne tout (snapshot complet, ignore l'acquittement) |
Réponse 200 OK¶
[
{
"uuid": "550e8400-...",
"reference": "DEP-2026-0042",
"reservation_ref": "RES-001",
"request_type": "DEPOSIT",
"status": "CAPTURED",
"order_cycle": "CLOSED",
"amount": 150.00,
"amount_captured": 150.00
}
]
Exemples¶
# Sync incrémentale (nouvelles + modifiées depuis dernier ack)
curl -H "X-API-Key: votre-clé-api" \
"https://votre-domaine.com/api/payment-requests/statuses/"
# Snapshot complet pour audit / réconciliation
curl -H "X-API-Key: votre-clé-api" \
"https://votre-domaine.com/api/payment-requests/statuses/?include_retrieved=true"
# Filtré par réservations connues
curl -H "X-API-Key: votre-clé-api" \
"https://votre-domaine.com/api/payment-requests/statuses/?refs=RES-001,RES-002"
Fréquence recommandée
Synchronisez toutes les 5 à 10 minutes pour un bon compromis entre fraîcheur des données et charge serveur.
Flux recommandé
GET /statuses/→ récupère ce qui est nouveau ou a changé- Traite les demandes côté PMS (création d'arrhes, mise à jour du séjour, etc.)
POST /mark-retrieved/avec les UUIDs traités pour les acquitter- Prochain
GET /statuses/ne renverra que ce qui a évolué entre-temps
Acquitter les demandes récupérées¶
Marque un lot de demandes comme « récupérées par le PMS ». Ces demandes ne réapparaîtront dans GET /statuses/ que si elles sont modifiées ultérieurement (ex. webhook de capture). Idempotent : ré-acquitter une demande déjà acquittée rafraîchit simplement son timestamp.
Corps de la requête¶
| Champ | Type | Requis | Description |
|---|---|---|---|
uuids |
array of UUID | Oui | UUIDs des demandes à acquitter |
Réponse 200 OK¶
marked est le nombre de lignes effectivement mises à jour (les UUIDs inconnus sont ignorés, pas d'erreur).
Erreurs¶
| Code | Cause |
|---|---|
| 401 | Clé API manquante ou invalide |
| 422 | UUID mal formé dans uuids |
Exemple¶
curl -X POST \
-H "X-API-Key: votre-clé-api" \
-H "Content-Type: application/json" \
-d '{"uuids": ["550e8400-e29b-41d4-a716-446655440000"]}' \
https://votre-domaine.com/api/payment-requests/mark-retrieved/
Batch plutôt qu'unitaire
Acquittez en une seule requête tous les UUIDs d'un même cycle de sync — c'est plus efficace qu'un appel par demande.
Capturer un paiement¶
Capture (débite) un paiement pré-autorisé. Utilisé en cas de no-show pour les empreintes bancaires.
Paramètres de chemin¶
| Paramètre | Type | Description |
|---|---|---|
uuid |
string (UUID) | Identifiant unique de la demande |
Réponse 200 OK¶
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference": "IMP-2026-0200",
"status": "CAPTURED"
}
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 400 | {"error": "..."} |
Statut incompatible (doit être AUTHORISED_TO_VALIDATE) |
| 404 | {"error": "Payment request ... not found."} |
UUID inexistant |
Exemple¶
# No-show : capturer le montant garanti
curl -X POST -H "X-API-Key: votre-clé-api" \
https://votre-domaine.com/api/payment-requests/550e8400-.../capture/
Pré-requis
La demande doit être en statut AUTHORISED_TO_VALIDATE (pré-autorisation active). Ce statut est atteint automatiquement J-2 avant le checkin pour les empreintes.
Libérer une pré-autorisation¶
Libère une pré-autorisation active. Le montant bloqué sur la carte du client est débloqué. Utilisé quand le client se présente.
Paramètres de chemin¶
| Paramètre | Type | Description |
|---|---|---|
uuid |
string (UUID) | Identifiant unique de la demande |
Réponse 200 OK¶
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference": "IMP-2026-0200",
"status": "CANCELLED"
}
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 400 | {"error": "..."} |
Statut incompatible (doit être AUTHORISED_TO_VALIDATE) |
| 404 | {"error": "Payment request ... not found."} |
UUID inexistant |
Exemple¶
# Le client est arrivé : libérer la garantie
curl -X POST -H "X-API-Key: votre-clé-api" \
https://votre-domaine.com/api/payment-requests/550e8400-.../release/
Bonne pratique
Libérez toujours les pré-autorisations quand le client se présente. Sinon le montant reste bloqué sur sa carte jusqu'à expiration (jusqu'à 6 jours).
Annuler une demande¶
Annule une demande de paiement non finalisée.
Paramètres de chemin¶
| Paramètre | Type | Description |
|---|---|---|
uuid |
string (UUID) | Identifiant unique de la demande |
Réponse 200 OK¶
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference": "DEP-2026-0042",
"status": "CANCELLED"
}
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 400 | {"error": "..."} |
Demande déjà en statut terminal |
| 404 | {"error": "Payment request ... not found."} |
UUID inexistant |
Restriction
Seules les demandes non finalisées (NOT_INITIATED, PENDING, ERROR) peuvent être annulées. Un paiement déjà capturé ne peut pas être annulé — utilisez le remboursement via l'administration.
Supprimer une demande¶
Supprime définitivement une demande de paiement.
Paramètres de chemin¶
| Paramètre | Type | Description |
|---|---|---|
uuid |
string (UUID) | Identifiant unique de la demande |
Réponse 200 OK¶
Erreurs¶
| Code | Réponse | Cause |
|---|---|---|
| 404 | {"error": "Payment request ... not found."} |
UUID inexistant |
Action irréversible
La suppression est définitive. Préférez l'annulation pour conserver l'historique.