API para Desenvolvedores

Gere Faturas QR-Bill Suíças com Uma Chamada API

Crie faturas QR-bill suíças em conformidade em segundos. Uma requisição POST retorna um PDF completo com boleto de pagamento—pronto para seus clientes. Sem necessidade de chave API para começar a testar.

Geração de Faturas Magic Heidi

Criando QR-Bills Manualmente? Veja a Realidade.

Criar faturas QR-bill suíças manualmente desperdiça horas todo mês. Construir seu próprio gerador significa navegar por regulamentos SIX complexos, requisitos de endereços estruturados e regras de validação QR-IBAN.

📋
Regulamentos ComplexosConformidade com Diretrizes SIX v2.3
🏠
Endereços EstruturadosApenas formatos estruturados desde Nov 2025
Regras de ValidaçãoQR-IBAN, tipos de referência, limites de valor
Início Rápido

Sua Primeira Fatura em 60 Segundos

Envie uma requisição POST para gerar uma fatura QR-bill suíça completa.

curl -X POST 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "language": "en",
      "file_name": "invoice-001.pdf",
      "invoice_number": 1,
      "invoice_date": "15/01/2025",
      "user_details": {
        "name": "Your Company GmbH",
        "address": "Bahnhofstrasse 10",
        "zip": "8001",
        "city": "Zürich",
        "iban": "CH93 0076 2011 6238 5295 7"
      },
      "customer_details": {
        "name": "Customer AG",
        "address": "Rue du Marché 5",
        "zip": "1204",
        "city": "Genève"
      },
      "invoice_items": [
        {
          "description": "Consulting services",
          "quantity": 8,
          "unit_price": 150.00
        }
      ]
    }
  }'

A resposta contém uma URL para o PDF gerado:

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

Pronto. Uma fatura suíça completa e em conformidade com boleto de pagamento QR.

Por Que Usar uma API para QR-Bills Suíços?

Desde outubro de 2022, os QR-bills suíços substituíram todos os boletos de pagamento antigos. Toda fatura para clientes suíços agora requer um código QR padronizado contendo dados de pagamento. Construir isso você mesmo significa semanas de desenvolvimento e manutenção contínua conforme os regulamentos mudam.

🇨🇭 Hospedado na Suíça
Totalmente Conforme
🔄 Atualização Automática
🚀 Testes Gratuitos
📜
Diretrizes SIX v2.3

Conformidade total desde novembro 2025

🏠
Endereços Estruturados

Analisados e formatados automaticamente

💰
Validação de Valores

CHF/EUR 0.01 a 999.999.999,99

🏦
Verificação de IBAN

Apenas Suíça e Liechtenstein

Referência da API

Documentação Completa

Hospedado em Zurique (europe-west6) para latência otimizada na Suíça e residência de dados.

Endpoint

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

Parâmetros Obrigatórios

ParâmetroTipoDescrição
file_namestringNome do arquivo PDF de saída
invoice_numberintegerNúmero de referência da fatura
invoice_datestringData no formato DD/MM/YYYY
user_detailsobjectDados da sua empresa
customer_detailsobjectDados do destinatário
invoice_itemsarrayItens da fatura

objeto user_details:

{
  "name": "Company Name",
  "address": "Street and number",
  "zip": "8001",
  "city": "Zürich",
  "iban": "CH93 0076 2011 6238 5295 7"
}

objeto customer_details:

{
  "name": "Customer Name",
  "address": "Street and number",
  "zip": "1204",
  "city": "Genève"
}

array invoice_items:

[
  {
    "description": "Service description",
    "quantity": 1.5,
    "unit_price": 100.00
  }
]
Exemplos de Código

Integração na Sua Linguagem

Exemplos de código prontos para uso nas linguagens de programação mais populares.

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'];
Tratamento de Erros

Códigos de Resposta e Validação

A API retorna códigos de status HTTP padrão para fácil tratamento de erros.

200 OK

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

422 Unprocessable Entity

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

Erros de validação comuns:

  • Formato ou checksum de IBAN inválido
  • Parâmetros obrigatórios ausentes
  • Formato de data inválido (deve ser DD/MM/YYYY)
  • Valor fora do intervalo válido

500 Internal Server Error

Estes são monitorados internamente. Se você encontrar um, envie email para hello@magicheidi.ch com o timestamp para resolução de problemas.

Atualização Novembro 2025

Atualizações Automáticas de Conformidade

Desde 22 de novembro de 2025, as Diretrizes de Implementação SIX versão 2.3 exigem apenas endereços estruturados. Todos os endereços devem incluir nome da rua, número, código postal, cidade e país. A API da Magic Heidi trata isso automaticamente—quando você fornece um endereço como 'Bahnhofstrasse 10', nós analisamos e estruturamos corretamente para o código QR.

Conformidade Empresarial Suíça
FAQ

Perguntas Frequentes

Preciso de um QR-IBAN?

Apenas se você quiser usar números de QR-Reference (QRR). Para Creditor References (SCOR) ou sem referência, um IBAN suíço comum funciona bem. Verifique as posições 5-9 do seu IBAN—se o número estiver entre 30000 e 31999, é um QR-IBAN.

Posso gerar faturas em Euros?

Sim. Defina "currency": "EUR" na sua requisição. Tanto CHF quanto EUR são suportados conforme as especificações do QR-bill suíço.

Isso funciona para clientes internacionais?

O padrão QR-bill suporta apenas IBANs da Suíça e Liechtenstein. Para faturas internacionais, você precisará de uma conta bancária suíça.

Posso gerar apenas o boleto de pagamento QR?

Sim. Defina "qr_only": true para receber apenas o boleto de pagamento QR sem o documento de fatura completo.

Como adiciono o logo da minha empresa?

Inclua um parâmetro logo_url com uma URL publicamente acessível para a imagem do seu logo. Recomendamos formato PNG ou SVG.

Existe limite de requisições?

Para testes sem chave API, espera-se uso razoável. Para aplicações em produção, contate hello@magicheidi.ch para solicitar uma chave API com limites definidos.

Comece a Gerar Faturas Hoje

Teste a API com os exemplos de código acima—sem autenticação necessária. Solicite uma chave API para uso em produção.

Comece Agora

  1. Teste a API com os exemplos de código acima—sem autenticação necessária
  2. Integre na sua aplicação usando sua linguagem preferida
  3. Solicite uma chave API em hello@magicheidi.ch para uso em produção

Para a documentação completa da API e atualizações, visite nosso repositório GitHub.

Dúvidas? Entre em contato pelo hello@magicheidi.ch. Normalmente respondemos em 24 horas.


Magic Heidi é uma plataforma de faturamento suíça criada para freelancers e pequenas empresas. Disponível para iOS, Android, Mac, Windows e web.