Créer une facture SwissQR API
Que fait ce point de terminaison ?
PDF4me Créer une facture SwissQR génère des Suisses QR bordereaux de paiement conformes à la législation suisse QR-norme de facturation (Normes de paiement suisses, SPS) par l'intermédiaire d'un seul REST appel. Envoyer Informations relatives au créancier et au débiteur final, IBAN, montant, devise, type de référence, langue, style de séparateur et format de sortieIncluez éventuellement un document source comme Base64, identifiant blob, ou URL recouvrir le glissement sur un existant PDF. Le API retours PDF, PNG, JPEG, ou TIFF selon type de format.
Authentification de votre API Demande
Chaque PDF4me REST API L'appel doit inclure votre API clé dans le Authorization En-tête. Créez ou sélectionnez une clé depuis le tableau de bord développeur et gardez-la secrète.
Point de terminaison
/api/v2/CreateSwissQrBillInformations importantes à ne pas manquer
ils allaient doit commencer par CH suivi de 19 chiffres. Une valeur invalide IBAN renvoie une erreur.crAddressType et udAddressType à S Ainsi, la rue, le numéro, le code postal et la ville sont stockés séparément. Cette structure est requise pour la plupart des rapprochements bancaires automatisés en Suisse. K (Combiné) uniquement lorsque vous ne pouvez pas séparer les composants de l'adresse.NON pour les paiements sans référence structurée. QRR pour une référence numérique à 27 chiffres sur les billets suisses nationaux. SCORE pour ISO 11649 Références de créanciers. Veuillez inclure : référence dans le corps lors de l'utilisation QRR ou SCOR.REST API point de terminaison
Méthode: POSTE
URL : https://api.pdf4me.com/api/v2/CreateSwissQrBill
Ensemble IsAsync à vrai (PascalCase) pour 202 Accepted et sonder le Emplacement URL avec GET jusqu'à ce que vous receviez 200 et le fichier dans JSON. Utiliser FAUX pour une synchronisation 200 réponse.
Configuration de la requête Postman
| Paramètre | Valeur |
|---|---|
| Method | POST |
| URL | https://api.pdf4me.com/api/v2/CreateSwissQrBill |
| Headers | Content-Type: application/json |
| Authorization | Basic Auth with your API key, or header Authorization: Basic YOUR_API_KEY |
| Async | If the response is 202, poll the URL in the Location header (GET) until you get 200 and the file bytes (or JSON with document fields, depending on API version). |
Paramètres
Toujours requis : ils allaient, crName, crAddressType, crRueOuAdresseLigne1, crRueOuAdresseLigne2, crCodePostal, crCity, montant, devise, udName, udAddressType, udStreetOrAddressLine1, udStreetOrAddressLine2, udCodePostal, udCity, type de référence, type de langue, ligne de séparation, type de format, et IsAsync.
Conditionnel: docContent et Nom du document lors de la superposition sur un PDF ; référence quand type de référence est QRR ou SCORE; options de pagination et numéro de page quand type de format est pdf.
Facultatif: message non structuré, informations de facturation, av1, av2, profils.
| Paramètre | Requis | S'applique lorsque | Ce que cela fait | Exemple |
|---|---|---|---|---|
docContent | Conditional | Overlay on existing PDF | Omit or empty string = standalone QR slip only. Otherwise Base64 PDF/image bytes (no data: prefix), blob id from POST /api/v2/UploadBlob, or HTTPS URL to the source file. | "" |
docName | Conditional | With docContent | File name for input/output context. Omit or empty when no source document. | invoice.pdf |
iban | Yes | Every request | Creditor Swiss IBAN. | CH0200700110003765824 |
crName | Yes | Every request | Creditor name or company as registered with the bank. | Test AG |
crAddressType | Yes | Every request | S = structured (street + building) or K = combined address lines. | S |
crStreetOrAddressLine1 | Yes | Every request | If S: street name (max ~70 chars). If K: first address line. | Test Strasse |
crStreetOrAddressLine2 | Yes | Every request | If S: house number (max ~16). If K: second address line. | 1 |
crPostalCode | Yes | Every request | Creditor postal code (max ~16). | 8000 |
crCity | Yes | Every request | Creditor city (max ~35). | Zurich |
amount | Yes | Every request | Payment amount without leading zeros (string). Example: "1000" = 1000.00. | 1000 |
currency | Yes | Every request | CHF or EUR. | CHF |
udName | Yes | Every request | Ultimate debtor name or company (required by API; may be empty strings if unused). | Test Debt AG |
udAddressType | Yes | Every request | S or K; same rules as crAddressType. | S |
udStreetOrAddressLine1 | Yes | Every request | Debtor street or address line 1. | Test Deb Strasse |
udStreetOrAddressLine2 | Yes | Every request | Debtor street number or address line 2. | 2 |
udPostalCode | Yes | Every request | Debtor postal code. | 8000 |
udCity | Yes | Every request | Debtor city. | Zurich |
referenceType | Yes | Every request | NON = no reference, QRR = QR reference, SCOR = creditor reference. | NON |
reference | Conditional | referenceType = QRR or SCOR | Required for QRR or SCOR; max 27 characters. Omit for NON. | 21000000000313947143000017 |
languageType | Yes | Every request | English, German, French, or Italian. | English |
seperatorLine | Yes | Every request | API spelling is seperatorLine (one a). LineWithScissor, DottedLine, or SolidLine. | LineWithScissor |
formatType | Yes | Every request | Output format: pdf, png, jpeg, tiff, or null (default PDF behavior). | pdf |
pagingOptions | Conditional | formatType = pdf | first, last, AddPageAtEnd, or custom. Omit or null for non-PDF formats. | first |
pageNumber | Conditional | pagingOptions = custom | Integer >= 1; single page index when pagingOptions is custom. | 1 |
unstructuredMessage | No | Optional | Free-form payment note. Max 140 characters. | Thank you for your business |
billingInfo | No | Optional | Customer billing information. | Invoice for services rendered |
av1 | No | Optional | Alternative scheme parameter 1. | |
av2 | No | Optional | Alternative scheme parameter 2. | |
profiles | No | Optional | Custom API profile JSON string. See API documentation for profile options. | { "someOption": true } |
IsAsync | Yes | Every request | PascalCase IsAsync. true = HTTP 202 and poll Location. false = synchronous HTTP 200. | true |
options de type d'adresse
S'applique à crAddressType et udAddressType.
S (Structuré)Recommandé pour la réconciliation automatiséeK (Combiné)Deux lignes d'adresse libresOptions de ligne de séparation (seperatorLine)
Ligne avec ciseauxLigne pointilléeLigne solideoptions de type de référence
NONAucune référence structuréemessage non structuré pour une note libre au lieu de référence.QRRRéférence QR à 27 chiffresréférence sous forme de chaîne numérique de 27 chiffres.SCORERéférence du créancier ISO 11649référence dans ISO 11649 format (commence par RF).Format de sortie (formatType) et PDF pagination
Quand type de format est pdf, ensemble options de pagination pour contrôler où le QR Le document est inséré. Pour l'affichage de l'image, omettez-le. options de pagination ou le régler sur nul.
formatType: pdfpagingOptions: firstformatType: pdfpagingOptions: lastformatType: pdfpagingOptions: AddPageAtEndformatType: pdfpagingOptions: custom + pageNumberformatType: png | jpeg | tiffpagingOptions: nullChamps de sortie
| Champ | Taper | Ce qu'il contient |
|---|---|---|
docName | String | Output file name. |
docContent | Base64 | Generated file (PDF or image per formatType). Decode before saving or streaming. |
Exemples de demandes
Exemple A : Autonome QR facture (sans entrée) PDF)
Omettre docContent ou envoyez une chaîne vide pour générer uniquement le QR reçu de paiement.
{
"docContent": "",
"docName": "",
"iban": "CH0200700110003765824",
"crName": "Test AG",
"crAddressType": "S",
"crStreetOrAddressLine1": "Test Strasse",
"crStreetOrAddressLine2": "1",
"crPostalCode": "8000",
"crCity": "Zurich",
"amount": "1000",
"currency": "CHF",
"udName": "Test Debt AG",
"udAddressType": "S",
"udStreetOrAddressLine1": "Test Deb Strasse",
"udStreetOrAddressLine2": "2",
"udPostalCode": "8000",
"udCity": "Zurich",
"referenceType": "NON",
"languageType": "English",
"seperatorLine": "LineWithScissor",
"formatType": "pdf",
"pagingOptions": "first",
"IsAsync": true
}
Exemple B : Superposition QR sur un existant PDF (Base64)
Remplacer docContent avec votre PDF comme Base64 (Non données: préfixe).
{
"docContent": "JVBERi0xLjQKJeLjz9MKMy...",
"docName": "invoice.pdf",
"iban": "CH0200700110003765824",
"crName": "Test AG",
"crAddressType": "S",
"crStreetOrAddressLine1": "Test Strasse",
"crStreetOrAddressLine2": "1",
"crPostalCode": "8000",
"crCity": "Zurich",
"amount": "1000",
"currency": "CHF",
"udName": "Test Debt AG",
"udAddressType": "S",
"udStreetOrAddressLine1": "Test Deb Strasse",
"udStreetOrAddressLine2": "2",
"udPostalCode": "8000",
"udCity": "Zurich",
"referenceType": "NON",
"languageType": "English",
"seperatorLine": "LineWithScissor",
"formatType": "pdf",
"pagingOptions": "custom",
"pageNumber": 1,
"IsAsync": true
}
Exemple C : Copier-coller valide JSON
{
"docContent": "",
"docName": "",
"iban": "CH0200700110003765824",
"crName": "Test AG",
"crAddressType": "S",
"crStreetOrAddressLine1": "Test Strasse",
"crStreetOrAddressLine2": "1",
"crPostalCode": "8000",
"crCity": "Zurich",
"amount": "1000",
"currency": "CHF",
"udName": "Test Debt AG",
"udAddressType": "S",
"udStreetOrAddressLine1": "Test Deb Strasse",
"udStreetOrAddressLine2": "2",
"udPostalCode": "8000",
"udCity": "Zurich",
"referenceType": "NON",
"languageType": "English",
"seperatorLine": "LineWithScissor",
"formatType": "pdf",
"pagingOptions": "first",
"IsAsync": true
}
charges utiles de type référence
Aucune référence (NON) :
{ "referenceType": "NON" }
Référence QR (QRR) :
{
"referenceType": "QRR",
"reference": "21000000000313947143000017"
}
Référence du créancier (SCOR, ISO 11649) :
{
"referenceType": "SCOR",
"reference": "RF18539007547034"
}
extraits de code formatType et pagingOptions
{ "formatType": "png", "pagingOptions": null }
{ "formatType": "pdf", "pagingOptions": "last" }
{ "formatType": "pdf", "pagingOptions": "AddPageAtEnd" }
{ "formatType": "pdf", "pagingOptions": "custom", "pageNumber": 1 }
Exemples de code
Exemples d'intégration
Modèles d'intégration REST courantsTypical ways developers call Create SwissQR Bill.
- Votre ERP exporte les données de facturation et un PDF.
- Encoder le PDF en Base64
docContent. - Champs de paiement POST avec
type de référenceQRR et un code à 27 chiffresréférence. - Décoder
docContentà partir de la réponse, stockez ou envoyez par e-mail le PDF de la facture QR.
- Pour obtenir uniquement un coupon détachable, envoyez par la poste avec une enveloppe vide.
docContentettype de formatpdf ou png. - Pour les factures provenant d'un webhook, encodez le PDF en Base64.
docContent, ensembleoptions de paginationàdernieroucoutume, et les champs de paiement POST. - Décodez la réponse
docContentet les télécharger sur un système de stockage d'objets ou les joindre à une API de messagerie électronique.