PIS/COFINS retention and tax status settings
Configure PIS/COFINS when issuing NFS-e
The NT-007 rules change how PIS and COFINS are filled in for Regime Normal customers when issuing NFS-e.
Since Jun 30, 2026, use pisCofinsTaxStatus, operationPis, and operationCofins according to the tax status of the operation. The pisCofinsRetentionType field is calculated by Asaas and must not be sent by the integration.
Before configuringTo determine whether these settings apply to your integration, first check whether the account is a Simples Nacional taxpayer.
You can check this through the
simplesNacionalattribute in the Retrieve tax information endpoint.If the returned value is
falseand the customer issues service invoices through the National Portal, the PIS/COFINS tax status and rate settings detailed in this guide become mandatory.
Simples Nacional customers do not need to change the payload because of NT-007.
AttentionThe correct PIS/COFINS tax status depends on the company tax classification, the service provided, and the applicable accounting guidance.
If you are unsure which CST to use, validate it with the responsible accountant before changing the integration.
How to configure
%%{init: {"flowchart": {"nodeSpacing": 18,"rankSpacing": 24,"diagramPadding": 4,"padding": 7}}}%%
flowchart TD
A["Retrieve tax information"] --> B{"Is simplesNacional true?"}
B --> Sim(("Yes"))
B --> Nao(("No"))
Sim --> C["Keep Simples Nacional rules"]
Nao --> D["Validate the applicable CST"]
D --> E["Set pisCofinsTaxStatus"]
E --> F["Provide operationPis and operationCofins"]
F --> G["Provide withholdings, if any"]
C --> H["Issue the NFS-e"]
G --> H
H --> I["Track via Webhook"]
classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px
classDef decisao fill:#FEF3C7,stroke:#D97706,color:#78350F,stroke-width:3px
classDef validacao fill:#E0F2FE,stroke:#0284C7,color:#0C4A6E,stroke-width:2px
classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px
classDef respostaSim fill:#22C55E,stroke:#15803D,color:#FFFFFF,stroke-width:3px
classDef respostaNao fill:#EF4444,stroke:#B91C1C,color:#FFFFFF,stroke-width:3px
class A inicio
class B decisao
class C,D,E,F,G,H validacao
class I sucesso
class Sim respostaSim
class Nao respostaNao
linkStyle default stroke:#94A3B8,stroke-width:2px
linkStyle 1 stroke:#22C55E,stroke-width:4px
linkStyle 2 stroke:#EF4444,stroke-width:4px
PIS/COFINS fields
| Field | Function |
|---|---|
pisCofinsTaxStatus | Sets the PIS/COFINS tax status |
operationPis | PIS rate of the operation |
operationCofins | COFINS rate of the operation |
pis | Withheld PIS percentage |
cofins | Withheld COFINS percentage |
csll | Withheld CSLL percentage |
pisCofinsRetentionType | Withholding type calculated by Asaas |
ImportantThe
pisCofinsRetentionTypefield must not be used as a field controlled by the integration.The withholding type is now calculated automatically by Asaas based on the percentages provided in
pis,cofins, andcsll.Use the value returned by the API only for lookup, reconciliation, or internal display.
Distinguish operation rate from withholding
The fields have different purposes:
| Group | Fields | Purpose |
|---|---|---|
| Operation rate | operationPis, operationCofins | Indicates how PIS and COFINS apply to the operation |
| Withholding | pis, cofins, csll | Indicates the withheld percentages, when applicable |
pisCofinsTaxStatus determines which values can be sent in operationPis and operationCofins.
Withholding percentages do not replace operation rates.
pisCofinsTaxStatus values
pisCofinsTaxStatus valuesUse the tax status that corresponds to the operation.
| Value | Code | Description |
|---|---|---|
NONE | 00 | None |
STANDARD_TAXABLE_OPERATION | 01 | Taxable Operation with Basic Rate |
DIFFERENTIATED_RATE_TAXABLE_OPERATION | 02 | Taxable Operation with Differentiated Rate |
TAXABLE_PER_MEASURE_UNIT_OPERATION | 03 | Taxable Operation with Rate per Product Unit of Measure |
MONOPHASIC_RESALE_ZERO_RATE_OPERATION | 04 | Single-phase Taxable Operation - Resale at Zero Rate |
TAX_SUBSTITUTION_OPERATION | 05 | Taxable Operation by Tax Substitution |
ZERO_RATE_TAXABLE_OPERATION | 06 | Taxable Operation at Zero Rate |
EXEMPT_CONTRIBUTION_OPERATION | 07 | Operation Exempt from Contribution |
NON_TAXABLE_OPERATION | 08 | Operation without Contribution Incidence |
TAX_SUSPENSION_OPERATION | 09 | Operation with Contribution Suspension |
OTHER_OUTPUT_OPERATION | 49 | Other Output Operations |
CREDITABLE_EXCLUSIVE_TAXED_DOMESTIC_REVENUE_OPERATION | 50 | Operation with Credit Right - Linked Exclusively to Taxed Domestic Market Revenue |
CREDITABLE_EXCLUSIVE_NON_TAXED_DOMESTIC_REVENUE_OPERATION | 51 | Operation with Credit Right - Linked Exclusively to Non-Taxed Domestic Market Revenue |
CREDITABLE_EXPORT_REVENUE_OPERATION | 52 | Operation with Credit Right - Linked Exclusively to Export Revenue |
CREDITABLE_TAXED_AND_NON_TAXED_DOMESTIC_REVENUE_OPERATION | 53 | Operation with Credit Right - Linked to Taxed and Non-Taxed Domestic Market Revenues |
CREDITABLE_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 54 | Operation with Credit Right - Linked to Taxed Domestic Market and Export Revenues |
CREDITABLE_NON_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 55 | Operation with Credit Right - Linked to Non-Taxed Domestic Market and Export Revenues |
CREDITABLE_TAXED_AND_NON_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 56 | Operation with Credit Right - Linked to Taxed and Non-Taxed Domestic Market and Export Revenues |
PRESUMED_CREDIT_EXCLUSIVE_TAXED_DOMESTIC_REVENUE_OPERATION | 60 | Presumed Credit - Acquisition Operation Linked Exclusively to Taxed Domestic Market Revenue |
PRESUMED_CREDIT_EXCLUSIVE_NON_TAXED_DOMESTIC_REVENUE_OPERATION | 61 | Presumed Credit - Acquisition Operation Linked Exclusively to Non-Taxed Domestic Market Revenue |
PRESUMED_CREDIT_EXCLUSIVE_EXPORT_REVENUE_OPERATION | 62 | Presumed Credit - Acquisition Operation Linked Exclusively to Export Revenue |
PRESUMED_CREDIT_TAXED_AND_NON_TAXED_DOMESTIC_REVENUE_OPERATION | 63 | Presumed Credit - Acquisition Operation Linked to Taxed and Non-Taxed Domestic Market Revenues |
PRESUMED_CREDIT_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 64 | Presumed Credit - Acquisition Operation Linked to Taxed Domestic Market and Export Revenues |
PRESUMED_CREDIT_NON_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 65 | Presumed Credit - Acquisition Operation Linked to Non-Taxed Domestic Market and Export Revenues |
PRESUMED_CREDIT_TAXED_AND_NON_TAXED_DOMESTIC_AND_EXPORT_REVENUE_OPERATION | 66 | Presumed Credit - Acquisition Operation Linked to Taxed and Non-Taxed Domestic Market and Export Revenues |
PRESUMED_CREDIT_OTHER_OPERATION | 67 | Presumed Credit - Other Operations |
ACQUISITION_WITHOUT_CREDIT_RIGHT_OPERATION | 70 | Acquisition Operation without Credit Right |
ACQUISITION_WITH_EXEMPTION_OPERATION | 71 | Acquisition Operation with Exemption |
ACQUISITION_WITH_SUSPENSION_OPERATION | 72 | Acquisition Operation with Suspension |
ACQUISITION_ZERO_RATE_OPERATION | 73 | Acquisition Operation at Zero Rate |
ACQUISITION_WITHOUT_CONTRIBUTION_OPERATION | 74 | Acquisition Operation without Contribution Incidence |
ACQUISITION_BY_TAX_SUBSTITUTION_OPERATION | 75 | Acquisition Operation by Tax Substitution |
OTHER_INPUT_OPERATION | 98 | Other Input Operations |
OTHER_OPERATION | 99 | Other Operations |
Discontinued valueThe
TAXABLE_CONTRIBUTION_OPERATIONenum is discontinued and must not be used in new integrations.When the applicable situation is CST 07, use
EXEMPT_CONTRIBUTION_OPERATION, corresponding to 07 - Operation Exempt from Contribution.
Fill in operationPis and operationCofins
operationPis and operationCofinsNT-007 sets specific rules for some tax statuses:
pisCofinsTaxStatus | operationPis and operationCofins |
|---|---|
NONE | null |
STANDARD_TAXABLE_OPERATION | Greater than 0 |
DIFFERENTIATED_RATE_TAXABLE_OPERATION | Greater than 0 |
ZERO_RATE_TAXABLE_OPERATION | 0 |
EXEMPT_CONTRIBUTION_OPERATION | null |
NON_TAXABLE_OPERATION | null |
TAX_SUSPENSION_OPERATION | null |
For the other values, NT-007 does not set a specific restriction for operationPis and operationCofins. Fill them in according to the tax situation of the operation.
Provide withholdings, when applicable
Use:
pis;cofins;csll.
Asaas calculates pisCofinsRetentionType from these percentages.
| Percentages provided | Withholding |
|---|---|
pis, cofins, and csll greater than zero | PIS, COFINS, and CSLL |
pis and cofins greater than zero and csll null or zero | PIS and COFINS |
Only pis greater than zero | PIS |
| All null or zero | No withholding |
ImportantWithholding must not be set manually through
pisCofinsRetentionType.Provide the applicable withholding percentages and use the value returned by the API for reconciliation.
Examples
Taxable operation with basic rate
{
"taxes": {
"pisCofinsTaxStatus": "STANDARD_TAXABLE_OPERATION",
"operationPis": 0.65,
"operationCofins": 3.00,
"pis": 0.65,
"cofins": 3.00,
"csll": 1.00
}
}operationPis and operationCofins represent the operation rates. pis, cofins, and csll represent the withholdings.
Taxable operation at zero rate
{
"taxes": {
"pisCofinsTaxStatus": "ZERO_RATE_TAXABLE_OPERATION",
"operationPis": 0,
"operationCofins": 0,
"pis": null,
"cofins": null,
"csll": null
}
}For ZERO_RATE_TAXABLE_OPERATION, send operationPis and operationCofins as 0.
Exempt operation
{
"taxes": {
"pisCofinsTaxStatus": "EXEMPT_CONTRIBUTION_OPERATION",
"operationPis": null,
"operationCofins": null,
"pis": null,
"cofins": null,
"csll": null
}
}For EXEMPT_CONTRIBUTION_OPERATION, send operationPis and operationCofins as null.
Tax status not defined
{
"taxes": {
"pisCofinsTaxStatus": "NONE",
"operationPis": null,
"operationCofins": null,
"pis": null,
"cofins": null,
"csll": null
}
}
AttentionIf your operation has PIS/COFINS withholding, avoid using
pisCofinsTaxStatusasNONEwithout accounting validation.With
NONE, theoperationPisandoperationCofinsfields must be null, which may cause the PIS/COFINS operation information not to appear on the invoice as expected.
Consider CST normalization
In these situations:
TAXABLE_PER_MEASURE_UNIT_OPERATION;MONOPHASIC_RESALE_ZERO_RATE_OPERATION;TAX_SUBSTITUTION_OPERATION;
Asaas may return pisCofinsTaxStatus as NONE when all PIS and COFINS percentages are zero or null.
Prepare your parser for the returned value to differ from the one sent in these scenarios.
Common errors
| Situation | How to handle |
|---|---|
pisCofinsTaxStatus missing for a customer affected by NT-007 | Provide the tax status |
operationPis or operationCofins should be null | Remove the rate for the CST used |
operationPis or operationCofins should be 0 | Send zero for the CST used |
| Required rate missing | Provide a value greater than zero |
TAXABLE_CONTRIBUTION_OPERATION used | Migrate to EXEMPT_CONTRIBUTION_OPERATION when the applicable CST is 07 |
pisCofinsRetentionType sent | Remove the field from the payload |
Example when the required tax status is not provided:
{
"errors": [
{
"description": "The PIS/COFINS tax status is required"
}
]
}Where to apply
The rules must be considered when sending or updating NFS-e tax data, including:
POST /v3/invoices
PUT /v3/invoices/{id}They also apply to the automatic invoice issuing configuration for subscriptions:
POST /v3/subscriptions/{id}/invoiceSettings
PUT /v3/subscriptions/{id}/invoiceSettingsSee the complete contracts in the API Reference:
- Schedule invoice
- Update invoice
- Create configuration for issuance of Invoices
- Update configuration for issuance of Invoices
Validate the issuance
After sending the NFS-e, track the result via Webhooks instead of repeatedly querying the status.
Mainly handle:
INVOICE_AUTHORIZED, when the invoice is issued;INVOICE_ERROR, when there is an issuing error.
Runnable example
For a specific example of this configuration, see:
Configure PIS/COFINS retention and tax status
Next steps
Updated 20 days ago
