FatureAqui API REST
Ligue a sua loja online, aplicação mobile, sistema de faturação externo ou POS diretamente à sua conta FatureAqui de forma rápida, segura e automatizada.
Base URL
Todos os pedidos devem ser feitos para o endpoint principal do projeto alojado na Supabase.
Autenticação
A API do FatureAqui utiliza Bearer Tokens para autenticar pedidos. Apenas contas com plano Pro podem gerar chaves de API.
- Vá ao seu Painel > API e Integrações.
- Clique em "Gerar Chave" e copie a chave fornecida (Ex:
fat_live_...). - Envie essa chave no cabeçalho (Header) de todos os pedidos HTTP.
As chaves fat_live_ dão acesso direto à sua conta e criam documentos válidos. Nunca exponha esta chave no código frontend (lado do cliente). Faça os pedidos sempre a partir do seu servidor (backend).
Criar Cliente
/api-customersCria um novo cliente na sua conta FatureAqui. É recomendável criar o cliente primeiro antes de lhe emitir uma fatura.
Parâmetros (Body JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Nome completo ou designação da empresa. | |
| string | - | Email do cliente para envio automático. | |
| nuit | string | - | NUIT (Número de Identificação Tributária). |
| phone | string | - | Contacto telefónico. |
| address | string | - | Endereço completo (Ex: Av. 24 de Julho). |
| city | string | - | Cidade (Ex: Maputo). |
curl -X POST "https://sesbyfhonbigmtfyavck.supabase.co/functions/v1/api-customers" \
-H "Authorization: Bearer fat_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"email": "joao@email.com",
"nuit": "123456789",
"city": "Maputo"
}'Resposta de Sucesso (201 Created)
{
"success": true,
"data": {
"id": "e838b0fc-1234-4567-8901-abcdef123456",
"name": "João Silva",
"nuit": "123456789",
"email": "joao@email.com"
}
}Criar Fatura
/api-invoicesGera um novo documento fiscal (Fatura ou Fatura-Recibo) atribuído a um cliente existente.
Parâmetros (Body JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customer_id | string | ID do cliente (UUID retornado ao criar). | |
| type | string | - | Fatura ou Fatura-Recibo. Padrão: Fatura. |
| currency | string | - | Moeda (Ex: MT, USD). Padrão: MT. |
| items | array | Array de objetos contendo os produtos/serviços. |
Estrutura do Array items
Cada item no array deve conter:
description(string): Nome do produto/serviço.quantity(número): Quantidade (pode ser decimal).unit_price(número): Preço unitário antes de impostos.tax_rate(número, opcional): Percentagem do IVA (Ex: 16). Padrão: 0.
curl -X POST "https://sesbyfhonbigmtfyavck.supabase.co/functions/v1/api-invoices" \
-H "Authorization: Bearer fat_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "e838b0fc-1234-4567-8901-abcdef123456",
"type": "Fatura",
"currency": "MT",
"items": [
{
"description": "Desenvolvimento de Website",
"quantity": 1,
"unit_price": 50000.00,
"tax_rate": 16
},
{
"description": "Alojamento Mensal",
"quantity": 1,
"unit_price": 1500.00,
"tax_rate": 16
}
]
}'Resposta de Sucesso (201 Created)
{
"success": true,
"data": {
"id": "f949c1ec-9876-5432-1098-fedcba654321",
"number": "FT 2026/42",
"type": "Fatura",
"status": "rascunho",
"subtotal": 51500.00,
"total_tax": 8240.00,
"total": 59740.00,
"issue_date": "2026-08-25"
}
}Webhooks (Eventos)
Os Webhooks permitem que a sua aplicação receba notificações em tempo real sempre que ocorre um evento na sua conta FatureAqui (por exemplo, quando uma fatura é criada ou o seu estado é alterado para Paga). Isto elimina a necessidade de fazer consultas (polling) constantes à nossa API.
Configuração no Painel
Pode registar o URL do seu servidor para receber Webhooks diretamente no seu Painel de Integrações. Quando criar um webhook, receberá um Secret. Esse segredo é vital para validar a autenticidade dos pedidos recebidos.
Estrutura do Payload (POST)
Sempre que um evento ocorrer, o FatureAqui enviará um pedido HTTP POST para o seu URL com a seguinte estrutura:
{
"event": "fatura.atualizada",
"created_at": "2026-08-25T15:30:00Z",
"data": {
"id": "f949c1ec-9876-5432-1098-fedcba654321",
"status": "pago",
"type": "Fatura",
"total": 59740.00,
...
}
}Validação de Segurança (HMAC)
Para garantir que o pedido foi enviado genuinamente pelo FatureAqui, incluímos um cabeçalho X-FatureAqui-Signature em cada webhook. Esta assinatura é um hash HMAC SHA-256 gerado usando o Secret do seu Webhook e o corpo do pedido (raw body).
Exemplo em PHP para validar a assinatura:
<?php
// O Secret que recebeu no Painel do FatureAqui
$secret = 'whsec_seusegredo12345';
// O corpo exato do pedido (Raw Payload)
$payload = file_get_contents('php://input');
// A assinatura enviada pelo FatureAqui nos Cabeçalhos
$signatureHeader = $_SERVER['HTTP_X_FATUREAQUI_SIGNATURE'];
// Calcule a assinatura localmente
$expectedSignature = hash_hmac('sha256', $payload, $secret);
// Compare as assinaturas (usando hash_equals para evitar ataques de timing)
if (hash_equals($expectedSignature, $signatureHeader)) {
// É autêntico! Pode processar
$data = json_decode($payload, true);
http_response_code(200);
echo "Sucesso";
} else {
// A assinatura não coincide, rejeite!
http_response_code(401);
echo "Assinatura inválida";
}Tratamento de Erros
O FatureAqui utiliza códigos HTTP convencionais para indicar o sucesso ou falha de uma requisição API.
O pedido foi bem sucedido e o recurso foi criado.
Falta um parâmetro obrigatório ou há um erro de formatação (Ex: string em vez de número).
Chave de API inválida, revogada ou não enviada no formato Bearer correto.
Foi utilizado um método incorreto (Ex: GET em vez de POST).
