Documentation · API Platon

Transactions

Émettre un ticket dématérialisé depuis une transaction de caisse structurée.

Endpoint

POST /platon/transactions

Soumettez une transaction de caisse structurée pour générer et remettre un ticket dématérialisé. Le ticket peut contenir le détail des lignes produits, la TVA par produit et un ou plusieurs paiements par carte.

Exemple de requête

cURL

curl --request POST \ '{BASE_URL}/platon/transactions' \ --header 'Authorization: Bearer {YOUR_API_TOKEN}' \ --header 'Content-Type: application/json' \ --data '{ "requestId": "0efc54d1-a04c-46f1-94d2-ee58fd740485", "amount": "37", "shopId": 1, "externalTransactionRef": "698547865872", "tillId": 1, "timezone": "Europe/Paris", "mode": "email", "currencySymbol": "€", "shopName": "Main Street", "shopStreet": "149 Av. de Bretagne", "shopCity": "Lille", "shopPostalCode": "59000", "receipts": [{ "products": [{ "name": "Keyboard", "price": "15", "quantity": "1", "genCode": "895471234", "family": "Electronics", "vat": { "label": "VAT 20%", "amount": "3", "rate": "20%" } }] }], "creditCardPayments": [{ "cardNetwork": "VISA", "paymentDate": "2024-05-12", "paymentTime": "13:45", "merchantName": "Acme Corp", "maskedCardNumber": "*1234", "amount": "37", "currencySymbol": "€", "paymentType": "Credit" }], "customer": { "email": "customer@example.com" } }'

Réponse

Une requête réussie renvoie le statut HTTP 201 Created avec un corps vide, ou une URL en texte brut lorsque la WebReceipt est activée sur votre compte. Cette URL pointe vers une page hébergée où le client peut consulter et télécharger son ticket.

Lorsque mode vaut email ou email_and_print, un email n'est envoyé au client que si une adresse email valide est présente dans le champ customer.email.

Modes de remise

ValeurDescription
emailEnvoyer le ticket par email au client. Nécessite un customer.email valide.
printGénérer un ticket papier sur le terminal de caisse. Aucun email n'est envoyé.
email_and_printEnvoyer par email et générer un ticket papier simultanément.
no_printEnregistrer la transaction sans remettre de ticket.

Référence du corps de requête

StructuredTransactionDTO

ChampTypeObligatoireDescription
requestIdstringOuiUUID v4 utilisé pour l'idempotence. Les requêtes en double portant la même valeur sont ignorées.
modestringOuiMode de remise. Voir Modes de remise.
receiptsStructuredReceipt[]OuiUn ou plusieurs tickets, chacun contenant une liste de produits.
amountstringNonMontant total de la transaction. Peut être négatif (remboursement).
shopIdnumberNonIdentifiant interne du magasin.
externalTransactionRefstringNonVotre propre référence pour cette transaction.
externalReceiptRefstringNonVotre propre référence pour ce ticket.
tillIdnumberNonIdentifiant de la caisse.
transactionDatestringNonDate de la transaction au format ISO 8601.
timezonestringNonNom de fuseau horaire IANA (ex. Europe/Paris).
currencySymbolstringNonSymbole monétaire (, $) ou code ISO (EUR).
companyNamestringNonRaison sociale du commerçant affichée sur le ticket.
shopNamestringNonNom du magasin affiché sur le ticket.
shopPhonestringNonNuméro de téléphone du magasin.
shopStreetstringNonAdresse du magasin.
shopCitystringNonVille du magasin.
shopPostalCodestringNonCode postal du magasin.
customerCustomerNonCoordonnées, consentements et préférences du client.
creditCardPaymentsCreditCardPaymentDTO[]NonDétail des paiements par carte. Plusieurs entrées sont possibles.
vatsVatDTO[]NonRécapitulatif de TVA pour l'ensemble de la transaction (par opposition à la TVA par produit).
barcodeStructuredBarcodeNonCode-barres optionnel pour la validation ou la recherche du ticket.
tagsstring[]NonÉtiquettes de métadonnées personnalisées.

StructuredReceipt

ChampTypeObligatoireDescription
productsStructuredProductDTO[]NonListe des produits figurant sur le ticket.

StructuredProductDTO

ChampTypeObligatoireDescription
namestringOuiNom du produit.
pricestringOuiTotal de la ligne (prix × quantité).
quantitystringOuiNombre d'unités achetées.
genCodestringOuiCode-barres ou identifiant du produit.
familystringOuiCatégorie du produit.
guaranteestringNonDurée de garantie (ex. 2 ans).
vatRatestringNonTaux de TVA appliqué à ce produit (ex. 20%).
unitPricestringNonPrix unitaire, avant multiplication par la quantité.
quantityUnitstringNonLibellé d'unité pour la quantité (ex. kg, L).
metadataobjectNonMétadonnées clé-valeur libres (les valeurs sont des tableaux de chaînes). À utiliser pour les coupons, remises ou attributs personnalisés.

CreditCardPaymentDTO

Rattachez un ou plusieurs paiements par carte au ticket. Chaque entrée représente une transaction carte.

ChampTypeObligatoireDescription
cardNetworkstringOuiRéseau de la carte (ex. VISA, MasterCard).
paymentDatestringOuiDate du paiement au format ISO (ex. 2024-05-12).
paymentTimestringOuiHeure du paiement (ex. 13:45).
merchantNamestringOuiNom commercial affiché.
maskedCardNumberstringOuiNuméro de carte masqué (ex. *1234). Les astérisques initiales sont ajoutées automatiquement si elles sont omises.
amountstringOuiMontant débité sur cette carte.
currencySymbolstringOuiSymbole monétaire ou code ISO.
paymentTypestringOuiCredit ou Debit.
paymentMethodstringNonMode d'utilisation de la carte (ex. Contactless, PIN).
transactionReferencestringNonIdentifiant unique de cette transaction carte.
authorizationNumberstringNonCode d'autorisation renvoyé par le réseau de la carte.
terminalIdstringNonIdentifiant du terminal de paiement.
storeIdstringNonIdentifiant du point de vente.
merchantIdstringNonIdentifiant du commerçant (ex. SIRET).
merchantPostalCodestringNonCode postal du commerçant.
merchantCitystringNonVille du commerçant.
bankCodestringNonCode banque ou code de traitement.
cardTransactionIdstringNonIdentifiant interne de la transaction carte.
merchantCustomHeaderstringNonTexte d'en-tête personnalisé affiché dans la partie commerçant du ticket.

StructuredBarcode

ChampTypeObligatoireDescription
typestringOuiFormat du code-barres. Valeurs acceptées : 128, 012, 008, 013, 125, 039.
valuestringOuiDonnées à encoder dans le code-barres.

Customer

ChampTypeObligatoireDescription
emailstringNonAdresse email du client. Obligatoire pour les modes de remise par email.
consentsConsent[]NonListe des consentements du client (ex. opt-in marketing).
preferencesPreference[]NonPréférences du client (ex. canal de remise du ticket préféré).
customCustomField[]NonPaires clé-valeur libres pour des attributs client personnalisés.