# Integrar POS com PrestaShop (Square, Zettle, SumUp): documentação

> Funcionamento O PrestaShop é a referência do stock. Cada alteração de stock de um produto associado é enviada ao POS como quantidade absoluta. Cada venda no POS é importada, deduzida…

- Página: <https://www.datafirefly.com/pt/documentation/pos-stock-sync-square-zettle-sumup-prestashop/>
- Idioma: pt
- Atualizado em: 2026-10-07
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/pos-stock-sync-square-zettle-sumup-prestashop/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

## Funcionamento

O PrestaShop é a referência do stock. Cada alteração de stock de um produto associado é enviada ao POS como quantidade absoluta. Cada venda no POS é importada, deduzida do stock do PrestaShop com o motivo de movimento «Venda na caixa», e o novo nível volta aos outros POS. As devoluções repõem os artigos em stock com o motivo «Devolução na caixa».

- **Square**: stock nos dois sentidos, vendas, devoluções, envio do catálogo.
- **Zettle by PayPal**: stock nos dois sentidos, vendas, reembolsos, envio do catálogo.
- **SumUp**: só importação de vendas. A API pública do SumUp não disponibiliza stock nem catálogo.

## Requisitos

- PrestaShop 8.0 a 9.x.
- Uma tarefa cron no seu alojamento.
- HTTPS na loja para o webhook do Zettle.
- Uma conta Square, Zettle ou SumUp com acesso de programador.

## Instalação

1. Em _Módulos > Gestor de módulos_, clique em _Carregar um módulo_ e envie o ZIP.
2. O módulo adiciona o menu _Catálogo > Conector de POS_.
3. O painel mostra uma lista «Primeiros passos» que se vai marcando à medida que configura o módulo.

## Ligar os seus POS

Abra o separador _Ligações_. Cada POS tem o seu próprio bloco com a caixa _Ativado_. As credenciais são cifradas na base de dados: um campo deixado vazio mantém o valor guardado.

### Square

1. Crie uma aplicação no Square Developer Dashboard e copie o token de acesso de produção.
2. Cole-o em _Token de acesso_, escolha o ambiente, guarde e clique em _Testar a ligação_.
3. Escolha a localização que recebe o stock. Se tiver várias, assinale aquelas cujas vendas devem ser importadas (10 no máximo).
4. Para importação imediata, crie uma subscrição de webhook no evento `order.updated` com o URL de notificação apresentado, e cole a chave de assinatura no módulo. O URL tem de ser idêntico dos dois lados.

### Zettle by PayPal

1. No Zettle Developer Portal, crie uma chave API self-hosted com os scopes `READ:PURCHASE`, `READ:PRODUCT`, `READ:USERINFO` e `WRITE:PRODUCT`.
2. Introduza o Client ID e a chave API, guarde e teste a ligação.
3. Clique em _Ativar o webhook_ para receber as vendas em poucos segundos.
4. O controlo de stock tem de estar ativo nos produtos do Zettle. Os produtos enviados pelo módulo têm-no automaticamente.

### SumUp

1. Introduza a chave API secreta (`sup_sk_...`), guarde e teste a ligação. O código de comerciante é detetado automaticamente.
2. As vendas SumUp são associadas pelo nome do artigo: referência exata ou nome exato de um produto sem combinações.

## Regras de sincronização

No topo do separador _Ligações_:

- **Enviar os níveis de stock do PrestaShop para o POS** e, opcionalmente, logo após cada alteração.
- **Importar as vendas do POS** e **deduzi-las do stock do PrestaShop**.
- **Repor em stock os artigos devolvidos** (Square e Zettle).
- **Associação automática** por referência, por EAN-13 / UPC e pelo nome no SumUp.
- **Importar as vendas do POS a partir de**: as vendas anteriores são ignoradas. Uma venda já importada nunca é duplicada.

## Tarefa agendada e webhooks

O painel mostra dois URL. Agende o primeiro a cada 5 minutos e o segundo (com `full=1`) uma vez por noite:

```
*/5 * * * * curl -s "https://a-sua-loja.pt/module/dfposconnector/cron?token=O_SEU_TOKEN" >/dev/null
0 3 * * * curl -s "https://a-sua-loja.pt/module/dfposconnector/cron?token=O_SEU_TOKEN&full=1" >/dev/null
```

O cron importa as novas vendas, envia o stock pendente e deteta as diferenças criadas fora do PrestaShop (importação SQL, ERP). A sincronização noturna reenvia todos os níveis associados. O cron e os webhooks também funcionam em modo de manutenção.

## Associar os produtos

Separador _Associação de produtos_:

- **Ler o catálogo** do Square ou do Zettle: associa automaticamente por SKU e código de barras.
- **Sugerir produtos pelo nome**: propõe um produto para cada artigo restante, com uma pontuação. As sugestões com 90 % ou mais podem ser aceites em massa, as outras uma a uma.
- **Associação manual**: pesquise um produto por nome, referência ou EAN.
- **Enviar todo o stock** para o POS, ou **importar o stock** do POS para o PrestaShop (use apenas uma vez, na configuração, se o stock do POS for o fiável).

Uma linha de venda desconhecida também pode ser associada a partir do registo de vendas: a regra fica guardada e o stock das vendas já importadas é acertado.

## Enviar o catálogo para o POS

Separador _Envio do catálogo_: escolha o POS, uma categoria (subcategorias incluídas), o preço enviado (com ou sem IVA, sem descontos) e se apenas os produtos ativos são considerados.

1. _Verificar o que será enviado_ lê primeiro o catálogo do POS e associa o que já existe, e depois mostra o número de produtos e variantes a criar.
2. _Criá-los no POS_ envia os produtos por lotes com uma barra de progresso. As combinações tornam-se variantes. Cada artigo criado fica associado e recebe o seu stock.

Não são enviados: os produtos já associados nesse POS, os produtos virtuais, os packs, as imagens e as categorias. O Zettle aceita no máximo 99 variantes por produto.

## Controlo de stock

O separador _Controlo de stock_ lê as quantidades reais do Square ou do Zettle e lista as diferenças com o PrestaShop, das maiores para as menores. Para cada linha:

- **Enviar o stock do PrestaShop**: o POS recebe o valor do PrestaShop.
- **Usar o stock do POS**: o PrestaShop recebe o valor do POS, com um movimento de stock.

## Encomendas PrestaShop para as vendas na loja

Bloco _Encomendas PrestaShop_, desativado por predefinição. Depois de ativado, cada venda com todos os artigos associados cria uma encomenda:

- cliente de balcão dedicado com a morada da loja;
- transportadora gratuita «Venda na caixa», nunca proposta no checkout;
- preços do talão, com um desconto global repartido pelas linhas;
- encomenda datada à hora da venda, com a referência do POS na nota interna;
- estado «Venda na caixa» (paga, entregue, sem fatura nem email), alterável nas definições.

Nesse caso é a encomenda que deduz o stock. Não é enviado nenhum email durante a criação. Uma venda com artigos não associados não recebe encomenda: os seus artigos associados são deduzidos diretamente.

As devoluções não alteram as encomendas. Os artigos devolvidos voltam ao stock e é adicionada uma linha à nota interna da encomenda original.

## Registo de vendas

O separador _Vendas POS_ lista cada venda com as suas linhas, POS, localização, pagamento e, se aplicável, a ligação para a encomenda. Filtros: POS, estado (por associar, associadas, devoluções, com encomenda), pesquisa por talão, artigo ou localização, intervalo de datas. O botão _Exportar CSV_ exporta a seleção, uma linha por artigo.

## Alertas por email

Bloco _Alertas por email_: é enviado um email quando a sincronização agendada falha 3 vezes seguidas (no máximo um a cada 6 horas) e outro quando volta a funcionar. Deixe o endereço vazio para usar o da loja. O botão _Enviar um alerta de teste_ verifica o envio.

## Resolução de problemas

### «Inventário não inicializado» no Zettle

Ative o controlo de stock em pelo menos um produto no Zettle, ou envie um produto a partir do separador _Envio do catálogo_.

### Webhook do Square recusado (assinatura inválida)

O URL de notificação declarado no Square tem de coincidir carácter a carácter com o do módulo, e a chave de assinatura tem de pertencer a essa subscrição.

### O stock não é enviado após uma alteração no back office

O PrestaShop não executa os hooks de um módulo para um funcionário sem a permissão «Ver» nesse módulo. O controlo de diferenças do cron apanha essas alterações na execução seguinte. Também pode conceder a permissão em _Parâmetros avançados > Equipa > Permissões_.

### Uma venda não criou encomenda

O registo técnico indica o motivo: artigos não associados, moeda da venda ausente no PrestaShop, restrição de transportadora num produto ou quantidade inferior a uma unidade. Nesse caso o stock foi deduzido diretamente.

## Desinstalação

A desinstalação apaga as tabelas do módulo (associações, registo de vendas, fila, registo técnico) e as suas definições, e desativa a transportadora «Venda na caixa». As encomendas criadas, o estado de encomenda, o cliente de balcão e os motivos de movimento de stock são mantidos, porque o histórico faz referência a eles.
