Créer une demande de paiement¶
Ce guide détaille la création de demandes de paiement et le workflow complet.
Endpoint¶
Corps de la requête¶
| Champ | Type | Requis | Description |
|---|---|---|---|
request_type |
string | Oui | IMPRINT ou DEPOSIT |
amount |
decimal | DEPOSIT: oui | Montant (ex: 150.00) |
currency |
string | Non | Devise ISO 4217 (défaut: EUR) |
guest_email |
string | Oui | 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 | Langue du formulaire : fr, en, de (défaut: fr) |
reservation_ref |
string | Oui | Référence de la réservation dans votre PMS |
reservation_data |
object | Non | Données supplémentaires (dates, chambre, etc.) |
Exemple : Pré-paiement (DEPOSIT)¶
Le client sera débité du montant indiqué.
curl -X POST \
-H "X-API-Key: votre-clé-api" \
-H "Content-Type: application/json" \
-d '{
"request_type": "DEPOSIT",
"amount": 250.00,
"currency": "EUR",
"guest_email": "jean.dupont@email.com",
"guest_first_name": "Jean",
"guest_last_name": "Dupont",
"guest_phone": "+33612345678",
"language": "fr",
"reservation_ref": "RES-2026-100",
"reservation_data": {
"checkin": "2026-07-01",
"checkout": "2026-07-05",
"room_type": "Double Supérieure",
"room_number": "204",
"nights": 4,
"total_stay": 800.00
}
}' \
https://votre-domaine.com/api/payment-requests/
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"reference": "DEP-2026-0100",
"status": "NOT_INITIATED",
"payment_link": "/payment/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
}
Exemple : Empreinte bancaire (IMPRINT)¶
La carte du client est enregistrée sans débit. Le montant représente le maximum capturable en cas de no-show.
curl -X POST \
-H "X-API-Key: votre-clé-api" \
-H "Content-Type: application/json" \
-d '{
"request_type": "IMPRINT",
"amount": 350.00,
"guest_email": "marie.martin@email.com",
"guest_first_name": "Marie",
"guest_last_name": "Martin",
"reservation_ref": "RES-2026-101",
"language": "en"
}' \
https://votre-domaine.com/api/payment-requests/
{
"uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"reference": "IMP-2026-0050",
"status": "NOT_INITIATED",
"payment_link": "/payment/b2c3d4e5-f6a7-8901-bcde-f12345678901/"
}
Workflow après création¶
1. Votre PMS crée la demande via l'API
│
▼
2. Vous envoyez le payment_link au client
(par email via votre PMS ou via M-Pay)
│
▼
3. Le client clique sur le lien et remplit le formulaire
│
▼
4. Le prestataire traite le paiement
│
▼
5. M-Pay reçoit la notification (IPN)
et met à jour le statut
│
▼
6. Votre PMS consulte le statut via l'API
GET /api/payment-requests/statuses/
Envoi du lien par email¶
Deux options :
Option 1 : M-Pay envoie l'email¶
Si la fonctionnalité est activée dans la configuration du tenant (confirmation_email = true), M-Pay enverra automatiquement un email au client avec le lien de paiement.
Option 2 : Votre PMS envoie l'email¶
Construisez l'URL complète à partir du payment_link retourné :
Intégrez ce lien dans votre propre email de confirmation de réservation.
Champ reservation_data¶
Le champ reservation_data est un objet JSON libre. Il est stocké tel quel et affiché dans l'interface d'administration. Voici un exemple complet :
{
"checkin": "2026-07-01",
"checkout": "2026-07-05",
"nights": 4,
"room_type": "Suite Junior",
"room_number": "301",
"total_stay": 1200.00,
"adults": 2,
"children": 1,
"board": "half_board",
"source": "booking.com",
"notes": "Arrivée tardive prévue"
}
Bonnes pratiques
Incluez au minimum checkin, checkout et room_type dans reservation_data. Ces informations sont affichées dans les emails de confirmation envoyés au client.
Erreurs possibles¶
| Code | Erreur | Cause |
|---|---|---|
| 400 | DEPOSIT requests require an amount greater than 0 |
Pré-paiement sans montant |
| 401 | Unauthorized |
Clé API invalide |
Devises supportées¶
| Code | Devise |
|---|---|
EUR |
Euro |
CHF |
Franc Suisse |
USD |
Dollar US |