Aller au contenu

Enregistrer un encaissement hors-PSP (espèces / chèque / carte TPE — NE PAS utiliser pour les paiements PSP gérés par payment.captured)

POST
/v1/folios/{id}/settlements
curl --request POST \
--url https://example.com/v1/folios/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/settlements \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "method": "cash", "amount": { "amountCents": "12000", "currency": "EUR" }, "paymentReference": "example" }'

⚠️ Ce canal est EXCLUSIVEMENT réservé aux encaissements manuels (espèces, chèque, TPE non-PSP). Les paiements carte passant par un PSP intégré arrivent via l’event payment.captured (couture asynchrone) → NE PAS doubler avec cet endpoint.

id
required
string format: uuid

Identifiant du folio

Idempotency-Key
required
string

Clé d’idempotence OBLIGATOIRE (8–200 car.) — anti-double-encaissement

Encaissement hors-PSP. Montant en centimes (bigint string). method : cash | card | transfer | cheque. businessDate dérivée côté SERVEUR (ADR-00D78) — ne pas envoyer.

Media type application/json
object
method
required
string
Allowed values: cash card transfer cheque
Example
cash
amount
required
object
amountCents
required

Montant en centimes (bigint string)

string
Example
12000
currency
required
string
Allowed values: EUR GBP
paymentReference

Référence opaque (n° reçu, chèque) — jamais données carte (PCI SAQ A)

string
nullable

Encaissement enregistré

Media type application/json
object
data
required
object
folioId
required
string format: uuid
settlementId
required
string format: uuid
amount
required
object
amountCents
required

Montant en centimes (bigint sérialisé en string)

string
currency
required
string
Allowed values: EUR GBP
Example
{
"data": {
"amount": {
"amountCents": "12000",
"currency": "EUR"
}
}
}

Corps ou paramètres invalides

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Non authentifié

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Permission refusée ou périmètre fiscal non vérifiable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Ressource introuvable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Folio non-open, devise incompatible, montant invalide ou businessDate non résolvable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}