API per Sviluppatori

Genera Fatture QR Svizzere con Una Sola Chiamata

Crea fatture QR svizzere conformi in pochi secondi. Una richiesta POST restituisce un PDF completo con bollettino di pagamento—pronto per i tuoi clienti. Nessuna API key necessaria per i test.

Generazione Fatture Magic Heidi

Costruisci le QR-Fatture da Solo? Ecco la Realtà.

Creare fatture QR svizzere manualmente spreca ore ogni mese. Sviluppare il proprio generatore significa navigare tra complesse normative SIX, requisiti di indirizzi strutturati e regole di validazione QR-IBAN.

📋
Normative ComplesseConformità alle Linee Guida SIX v2.3
🏠
Indirizzi StrutturatiSolo formati strutturati dal Nov 2025
Regole di ValidazioneQR-IBAN, tipi di riferimento, limiti importi
Inizio Rapido

La Tua Prima Fattura in 60 Secondi

Invia una richiesta POST per generare una fattura QR svizzera completa.

curl -X POST 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "language": "it",
      "file_name": "fattura-001.pdf",
      "invoice_number": 1,
      "invoice_date": "15/01/2025",
      "user_details": {
        "name": "La Tua Azienda Sagl",
        "address": "Via Nassa 10",
        "zip": "6900",
        "city": "Lugano",
        "iban": "CH93 0076 2011 6238 5295 7"
      },
      "customer_details": {
        "name": "Cliente SA",
        "address": "Piazza Grande 5",
        "zip": "6600",
        "city": "Locarno"
      },
      "invoice_items": [
        {
          "description": "Servizi di consulenza",
          "quantity": 8,
          "unit_price": 150.00
        }
      ]
    }
  }'

La risposta contiene un URL al PDF generato:

{
  "result": "https://storage.googleapis.com/.../fattura-001.pdf"
}

Tutto qui. Una fattura svizzera completa e conforme con bollettino QR.

Perché Usare un'API per le QR-Fatture Svizzere?

Da ottobre 2022, le QR-fatture svizzere hanno sostituito tutti i bollettini di pagamento tradizionali. Ogni fattura per clienti svizzeri richiede ora un codice QR standardizzato contenente i dati di pagamento. Svilupparlo internamente significa settimane di lavoro e manutenzione continua al variare delle normative.

🇨🇭 Hosting Svizzero
Pienamente Conforme
🔄 Aggiornamenti Auto
🚀 Test Gratuiti
📜
Linee Guida SIX v2.3

Piena conformità da novembre 2025

🏠
Indirizzi Strutturati

Analizzati e formattati automaticamente

💰
Validazione Importi

CHF/EUR da 0.01 a 999'999'999.99

🏦
Verifica IBAN

Solo Svizzera e Liechtenstein

Riferimento API

Documentazione Completa

Hosting a Zurigo (europe-west6) per latenza ottimale e residenza dati in Svizzera.

Endpoint

POST https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d

Parametri Obbligatori

ParametroTipoDescrizione
file_namestringNome file PDF di output
invoice_numberintegerNumero di riferimento fattura
invoice_datestringData in formato GG/MM/AAAA
user_detailsobjectDati della tua azienda
customer_detailsobjectDati del destinatario
invoice_itemsarrayVoci della fattura

Oggetto user_details:

{
  "name": "Nome Azienda",
  "address": "Via e numero",
  "zip": "6900",
  "city": "Lugano",
  "iban": "CH93 0076 2011 6238 5295 7"
}

Oggetto customer_details:

{
  "name": "Nome Cliente",
  "address": "Via e numero",
  "zip": "6600",
  "city": "Locarno"
}

Array invoice_items:

[
  {
    "description": "Descrizione servizio",
    "quantity": 1.5,
    "unit_price": 100.00
  }
]
Esempi di Codice

Integrazione nel Tuo Linguaggio

Esempi di codice pronti all'uso per i linguaggi più diffusi.

Python

import requests
import json

url = "https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d"

payload = {
    "data": {
        "language": "de",
        "currency": "CHF",
        "file_name": "rechnung-2025-001.pdf",
        "invoice_number": 1,
        "invoice_date": "15/01/2025",
        "vat_enabled": True,
        "vat_percentage": 0.081,
        "vat_number": "CHE-123.456.789",
        "user_details": {
            "name": "Muster GmbH",
            "address": "Bahnhofstrasse 10",
            "zip": "8001",
            "city": "Zürich",
            "iban": "CH93 0076 2011 6238 5295 7"
        },
        "customer_details": {
            "name": "Kunde AG",
            "address": "Hauptstrasse 1",
            "zip": "3000",
            "city": "Bern"
        },
        "invoice_items": [
            {
                "description": "Beratungsleistungen Januar 2025",
                "quantity": 10,
                "unit_price": 180.00
            },
            {
                "description": "Reisekosten",
                "quantity": 1,
                "unit_price": 45.50
            }
        ]
    }
}

response = requests.post(url, json=payload)
result = response.json()

print(f"Invoice URL: {result['result']}")

Node.js (Axios)

const axios = require('axios');

const url = 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d';

const payload = {
  data: {
    language: 'fr',
    currency: 'CHF',
    file_name: 'facture-2025-001.pdf',
    invoice_number: 1,
    invoice_date: '15/01/2025',
    logo_url: 'https://your-domain.ch/logo.png',
    user_details: {
      name: 'Votre Entreprise Sàrl',
      address: 'Rue du Lac 15',
      zip: '1003',
      city: 'Lausanne',
      iban: 'CH93 0076 2011 6238 5295 7'
    },
    customer_details: {
      name: 'Client SA',
      address: 'Avenue de la Gare 8',
      zip: '1201',
      city: 'Genève'
    },
    invoice_items: [
      {
        description: 'Services de développement',
        quantity: 40,
        unit_price: 120.00
      }
    ]
  }
};

axios.post(url, payload)
  .then(response => {
    console.log('Invoice URL:', response.data.result);
  })
  .catch(error => {
    console.error('Error:', error.response?.data || error.message);
  });

PHP (cURL)

<?php

$url = 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d';

$payload = [
    'data' => [
        'language' => 'it',
        'file_name' => 'fattura-2025-001.pdf',
        'invoice_number' => 1,
        'invoice_date' => '15/01/2025',
        'user_details' => [
            'name' => 'La Tua Azienda Sagl',
            'address' => 'Via Nassa 20',
            'zip' => '6900',
            'city' => 'Lugano',
            'iban' => 'CH93 0076 2011 6238 5295 7'
        ],
        'customer_details' => [
            'name' => 'Cliente SA',
            'address' => 'Piazza Grande 5',
            'zip' => '6600',
            'city' => 'Locarno'
        ],
        'invoice_items' => [
            [
                'description' => 'Servizi di consulenza',
                'quantity' => 5,
                'unit_price' => 200.00
            ]
        ]
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
echo "Invoice URL: " . $result['result'];
Gestione Errori

Codici Risposta e Validazione

L'API restituisce codici HTTP standard per una gestione errori semplificata.

200 OK

{
  "result": "https://storage.googleapis.com/.../fattura.pdf"
}

422 Unprocessable Entity

{
  "error": "Provided IBAN is invalid"
}

Errori di validazione comuni:

  • Formato o checksum IBAN non valido
  • Parametri obbligatori mancanti
  • Formato data non valido (deve essere GG/MM/AAAA)
  • Importo fuori range valido

500 Internal Server Error

Questi errori sono monitorati internamente. Se ne riscontri uno, scrivi a hello@magicheidi.ch indicando il timestamp per la risoluzione.

Aggiornamento Novembre 2025

Aggiornamenti Conformità Automatici

Dal 22 novembre 2025, le Linee Guida SIX versione 2.3 richiedono esclusivamente indirizzi strutturati. Tutti gli indirizzi devono includere via, numero civico, CAP, città e paese. L'API di Magic Heidi gestisce tutto automaticamente—quando fornisci un indirizzo come 'Via Nassa 10', lo analizziamo e strutturiamo correttamente per il codice QR.

Conformità Aziendale Svizzera
FAQ

Domande Frequenti

Ho bisogno di un QR-IBAN?

Solo se vuoi usare numeri QR-Reference (QRR). Per Creditor Reference (SCOR) o senza riferimento, un normale IBAN svizzero va benissimo. Controlla le posizioni 5-9 del tuo IBAN—se il numero è tra 30000 e 31999, è un QR-IBAN.

Posso generare fatture in Euro?

Sì. Imposta "currency": "EUR" nella richiesta. Sia CHF che EUR sono supportati secondo le specifiche QR-fattura svizzera.

Funziona per clienti internazionali?

Lo standard QR-fattura supporta solo IBAN svizzeri e del Liechtenstein. Per fatture internazionali, serve un conto bancario svizzero.

Posso generare solo il bollettino QR?

Sì. Imposta "qr_only": true per ricevere solo il bollettino QR senza il documento fattura completo.

Come aggiungo il logo aziendale?

Includi il parametro logo_url con un URL pubblicamente accessibile alla tua immagine logo. Consigliamo formato PNG o SVG.

C'è un limite di richieste?

Per i test senza API key, ci aspettiamo un uso ragionevole. Per applicazioni in produzione, contatta hello@magicheidi.ch per richiedere una API key con limiti definiti.

Inizia a Generare Fatture Oggi

Testa l'API con gli esempi di codice sopra—nessuna autenticazione necessaria. Richiedi una API key per l'uso in produzione.

Inizia Subito

  1. Testa l'API con gli esempi di codice sopra—nessuna autenticazione necessaria
  2. Integra nella tua applicazione usando il linguaggio che preferisci
  3. Richiedi una API key a hello@magicheidi.ch per l'uso in produzione

Per la documentazione API completa e gli aggiornamenti, visita il nostro repository GitHub.

Domande? Scrivi a hello@magicheidi.ch. Rispondiamo solitamente entro 24 ore.


Magic Heidi è una piattaforma di fatturazione svizzera pensata per liberi professionisti e piccole imprese. Disponibile su iOS, Android, Mac, Windows e web.