---
title: "NFS-e de São Paulo: resumo das mudanças dos manuais 3.3.7, 3.3.8 e 3.3.9"
description: "Resumo do que mudou na NFS-e de São Paulo com os manuais 3.3.7, 3.3.8 e 3.3.9, do formato recomendado e do que a NFE.io faz com o paidAmount."
source_url: https://nfe.io/docs/documentacao/reforma-tributaria/conceitos-funcionais/nota-fiscal-de-servico/sao-paulo-resumo-valor-total-recebido/
product: documentacao
last_updated: 2026-10-05
tags: ["reforma-tributaria", "nfse", "sao-paulo", "paulistana", "valor-total-recebido", "resumo"]
---

# NFS-e de São Paulo: resumo das mudanças dos manuais 3.3.7, 3.3.8 e 3.3.9

:::info Vigência
Válido a partir de **[DATA DA IMPLANTAÇÃO]**. O detalhamento campo a campo, com exemplos e perguntas frequentes, está na [página completa](./sao-paulo-valor-total-recebido-manual-3-3-9.md).
:::

## O essencial

- A Prefeitura de São Paulo publicou o manual 3.3.9 em **01/10/2026**, já valendo.
- Nas notas **com IBS e CBS**, a prefeitura **descarta o Valor Total Recebido** informado separadamente e o preenche com o valor da nota.
- Os valores repassados a terceiros devem ir no valor da nota e sair da base de cálculo por **documentos de reembolso**.
- **As notas enviadas sem documentos de reembolso continuam sendo emitidas como hoje**, sem recusa nova. A NFE.io só recusa quando os documentos de reembolso são enviados com valores que não fecham a diferença ou com dados incompletos, mesmo que a prefeitura aceitasse a nota.

## Formato recomendado (notas com IBS e CBS)

Envie o **total da nota em `servicesAmount`** e cada repasse em **`ibsCbs.thirdPartyReimbursements.documents`**, **sem `paidAmount`**.

```json
{
  "servicesAmount": 1414.22,
  "ibsCbs": {
    "classCode": "000001",
    "thirdPartyReimbursements": {
      "documents": [
        {
          "otherNationalDfe": { "dfeType": "1", "dfeKey": "<chave de 50 caracteres>" },
          "supplier": { "type": "LegalEntity", "name": "FORNECEDOR LTDA", "federalTaxNumber": 12345678000190 },
          "issueDate": "2026-10-01",
          "accrualOn": "2026-10-01",
          "reimbursementType": "AdAgencyMediaReimbursement",
          "amount": 1386.63
        }
      ]
    }
  }
}
```

Resultado: a NFS-e sai com **R$ 1.414,22**, e a base de cálculo fica em **R$ 27,59**.

## O que a NFE.io faz com o `paidAmount`

**Notas sem IBS e CBS (sem `ibsCbs.classCode`):** nada muda. O `paidAmount` continua indo como Valor Total Recebido (`ValorTotalRecebido`).

**Notas com IBS e CBS (com `ibsCbs.classCode`):** o `paidAmount` nunca vai como Valor Total Recebido. Ele só decide o valor da nota (`ValorFinalCobrado`):

| Situação | O que acontece com o `paidAmount` | Campo que vira o valor da NFS-e |
|---|---|---|
| Não informado | — | Valor do serviço ¹ |
| Menor ou igual ao valor do serviço ¹ | Ignorado | Valor do serviço ¹ |
| Acima do valor do serviço ¹, mas não acima da receita própria ² (a diferença é só multa e juros) | **Transferido** | **`paidAmount`** |
| Acima da receita própria ², **sem** documentos de reembolso | Ignorado | Valor do serviço ¹, como a prefeitura já emite desde 01/10 |
| Acima da receita própria ², **com** documentos cuja soma de `amount` é **exatamente** a diferença | **Transferido**; os documentos tiram os repasses da base | **`paidAmount`** |
| Acima da receita própria ², **com** documentos que **não fecham** a diferença | Nota recusada antes do envio, com `[E1003]` | — |

¹ **Valor do serviço** = o primeiro campo informado entre `serviceAmountDetails.finalChargedAmount`, `serviceAmountDetails.initialChargedAmount` e `servicesAmount`.

² **Receita própria** = `serviceAmountDetails.finalChargedAmount`, quando informado, porque ele já inclui multa e juros. Sem ele, é o valor do serviço ¹ + `serviceAmountDetails.fineAmount` + `serviceAmountDetails.interestAmount`. Com `finalChargedAmount` informado, o que o `paidAmount` passar dele é tratado como repasse.

O `paidAmount` no leiaute com IBS e CBS é um **formato de transição**. Quando o tratamento for desligado, **com aviso prévio**:
- o `paidAmount` passa a ser ignorado;
- o valor da nota vem sempre do valor do serviço ¹.

## Outras mudanças atendidas pela NFE.io

| Tema | Manual | Comportamento |
|---|---|---|
| Valor Inicial Cobrado não aceito (erro 640) | 3.3.7 | O `initialChargedAmount` é enviado como valor final cobrado. Não é preciso mudar a integração |
| Tributos federais (PIS, COFINS, CSLL) | 3.3.6 e 3.3.7 | `pisAmount`/`cofinsAmount` são os valores próprios. Os valores retidos vão somados como contribuições retidas, e o código de retenção é calculado automaticamente |
| Caracteres permitidos (Latin-1) | 3.3.8 | Caracteres fora do Latin-1 (emojis, aspas curvas, travessão) são recusados antes do envio, com `[E1002]` |
| Tamanho do endereço | XSD v02-6 | O Logradouro é cortado em 50 caracteres. O Bairro é abreviado e, se ainda passar, cortado em 30 |
| Documentos de reembolso incompletos | 3.3.9 | Recusados antes do envio, com `[E1004]`, indicando o campo |

## Mensagens da NFE.io

| Código | Quando | O que fazer |
|---|---|---|
| `[E1002]` | Caractere fora do Latin-1 | Trocar o caractere indicado |
| `[E1003]` | Documentos de reembolso que não fecham a diferença entre o `paidAmount` e o valor do serviço | Ajustar os valores dos documentos |
| `[E1004]` | Documento de reembolso incompleto | Completar o campo indicado |

Nos três casos, a nota não é enviada à prefeitura.

## Recomendações

1. **Leiaute com IBS e CBS:** passe a enviar o total em `servicesAmount` com os documentos de reembolso, sem `paidAmount`.
2. **Notas emitidas desde 01/10/2026 com Valor Recebido:** elas saíram com o valor do serviço, e não com o total. Avalie com a contabilidade se é preciso cancelar e emitir de novo.
3. **Documentação completa dos campos:** [Layout NFS-e com IBS/CBS](./documentacao-layout-nfse-rtc.md).

**Fontes oficiais:**
- [Notícia da Prefeitura de São Paulo de 01/10/2026](https://notadomilhao.sf.prefeitura.sp.gov.br/noticias/atencao-as-atualizacoes-implementadas-no-sistema-de-emissao-de-nfs-e/)
- [Manuais da NFS-e Paulistana](https://notadomilhao.sf.prefeitura.sp.gov.br/manuais/)
