PHPackages                             lucastmax/notafiscalsp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. lucastmax/notafiscalsp

ActiveLibrary[API Development](/categories/api)

lucastmax/notafiscalsp
======================

Integração com o WebService da Prefeitura de São Paulo para emissão de NFS e NTFS utilizando a API da nota do milhão

08PHP

Since Jan 8Pushed 4mo agoCompare

[ Source](https://github.com/lucastmax/NotaFiscalSP)[ Packagist](https://packagist.org/packages/lucastmax/notafiscalsp)[ RSS](/packages/lucastmax-notafiscalsp/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

NFe-NFTS-SP (PHP)
=================

[](#nfe-nfts-sp-php)

[![Latest Stable Version](https://camo.githubusercontent.com/512de6d61a7d6cec82fb2f67c8496af08c25299ffb1aa06f981801cd94870139/68747470733a2f2f706f7365722e707567782e6f72672f6b616c657536322f6e6f746166697363616c73702f762f737461626c65)](https://packagist.org/packages/kaleu62/notafiscalsp) [![Total Downloads](https://camo.githubusercontent.com/98a168cfc25d2444b0a0ba820b5bfacc33ac7cbf54b1f924a28ed3ca8c489542/68747470733a2f2f706f7365722e707567782e6f72672f6b616c657536322f6e6f746166697363616c73702f646f776e6c6f616473)](https://packagist.org/packages/kaleu62/notafiscalsp) [![License](https://camo.githubusercontent.com/be9b8c22392d584926fad6b9201e7872c35e743e83faf1aef0abf1ffbf42a496/68747470733a2f2f706f7365722e707567782e6f72672f6b616c657536322f6e6f746166697363616c73702f6c6963656e7365)](https://packagist.org/packages/kaleu62/notafiscalsp)

O Projeto se trata de um módulo de integração com o sistema de notas da Prefeitura de São Paulo (Nota do Milhão), possibilitando a automatização de serviços como emissão e consulta de Notas e outros serviços relacionados.

### Extensões Necessárias

[](#extensões-necessárias)

- Soap
- openssl

### Referências úteis

[](#referências-úteis)

- Na hora de emitir uma nota o campo de Cidade do Tomador é preenchido com o código do IBGE para a mesma, e ele pode ser consultado no site

Instanciando a Classe
---------------------

[](#instanciando-a-classe)

Para instanciar a classe é necessário informar o CNPJ, o Certificado do Emissor e a senha do mesmo. No caso do caminho do Certificado pode ser utilizado o arquivo '.pfx' ou '.pem'

```
  // Instanciando a Classe
  $nfSP = new NotaFiscalSP([
      'cnpj' => '00000000000000',
      'certificate' => 'path/to/certificate.pfx',
      'certificatePass' => '000000'
  ]);
```

Ao instanciar a Lib ela faz uma requisiçao para obter a Inscrição Municipal(IM), porém a mesma pode ser passada como parametro.

```
  // Instanciando a Classe
  $nfSP = new NotaFiscalSP([
      'cnpj' => '00000000000000',
      'certificate' => 'path/to/certificate.pfx',
      'certificatePass' => '000000',
      'im' => '1225'
  ]);
```

Nota Fiscal (NFs NFe)
=====================

[](#nota-fiscal-nfs-nfe)

Obtendo Informações Base do CNPJ
--------------------------------

[](#obtendo-informações-base-do-cnpj)

Esse método retorna a Inscrição Municipal relacionada ao CNPJ e um booleano indicando se o mesmo pode emitir NFe

```
// Consulta seu próprio CNPJ para verificar a Inscrição Municipal
$response = $nfSP->cnpjInfo();
```

```
// Consulta um CNPJ para verificar a inscrição municipal e a situação referente a emissão
$response = $nfSP->cnpjInfo('111.222.333-44');
```

Obtendo Informações Basicas do Lote
-----------------------------------

[](#obtendo-informações-basicas-do-lote)

Retorna apeas informações básicas como horário de envio do lote

```
$response = $nfSP->informacaoLote();
```

Consultando Nota Fiscal
-----------------------

[](#consultando-nota-fiscal)

Retorna Informaçes detalhadas de uma ou mais Notas ***(Limite 50 Notas por Requisição)***

```
// Utilize o numero da nota
$response = $nfSP->consultarNf('00056');
```

\*Para maiores detalhes sobre a consulta de várias notas simultaneamente veja o Wiki

Consultando Notas Fiscais Recebidas por Periodo
-----------------------------------------------

[](#consultando-notas-fiscais-recebidas-por-periodo)

Retorna Notas recebidas em um periodo especifico ***(50 Notas por Pagina)***

```
$period = new Period();
$period->setDtInicio('2019-08-05');
$period->setDtFim('2019-08-10');
$period->setPagina(2);

$response = $nfSP->notasRecebidas($period);
```

***- Caso não insira a data Final, serão retornados somente registros da data inicial***

***- Caso não seja informado o numero da página o valor padrão é 1***

Consultando Notas Fiscais Emitidas por Periodo
----------------------------------------------

[](#consultando-notas-fiscais-emitidas-por-periodo)

Retorna Notas emitidas em um periodo especifico ***(50 Notas por Pagina)***

```
$period = new Period();
$period->setDtInicio('2019-08-05');
$period->setDtFim('2019-08-10');
$period->setPagina(2);

$response = $nfSP->notasEmitidas($period);
```

***- Caso não insira a data Final, serão retornados somente registros da data inicial***

***- Caso não seja informado o numero da página o valor padrão é 1***

Consultando Lote
----------------

[](#consultando-lote)

Retorna Informações detalhadas de um lote especifico

```
// Utilize o numero do Lote
$response = $nfSP->consultarLote(356);
```

\*Para mais detalhes da utilizaço acesse o Wiki

Cancelando Nota Fiscal
----------------------

[](#cancelando-nota-fiscal)

Cancela uma ou mais Notas ***(Limite 50 Notas por Requisição)***

```
$response = $nfSP->cancelarNota('00568');
```

Emitindo uma Nota
-----------------

[](#emitindo-uma-nota)

```
$rps = new Rps();
$rps->setNumeroRps('00000000');
$rps->setTipoRps(RPSType::RECIBO_PROVENIENTE_DE_NOTA_CONJUGADA);
$rps->setValorServicos(30.80);
$rps->setCodigoServico(2881);
$rps->setAliquotaServicos( 0.029);
$rps->setCnpj('10000000000001');
$rps->setRazaoSocialTomador('RAZAO SOCIAL TOMADOR LTDA');
$rps->setTipoLogradouro('R');
$rps->setLogradouro('NOME DA RUA');
$rps->setNumeroEndereco(001);
$rps->setBairro('VILA TESTE');
$rps->setCidade('3550308'); // São Paulo
$rps->setUf('SP');
$rps->setCep('00000000');
$rps->setEmailTomador('teste@teste.com.br');
$rps->setDiscriminacao('Teste Emissão de Notas pela API');

$response =  $nfSP->enviarNota($rps);
```

Enviando Lote
-------------

[](#enviando-lote)

O Lote envia diversos objetos do tipo RPS em uma unica requisição

```
$lote = new Lot();
$lote->setRpsList([$rps1, $rps2, $rps3]);
$response =  $nfSP->enviarLote($lote);
```

Enviando um Lote Async
----------------------

[](#enviando-um-lote-async)

O Lote ASYNC utiliza um outro Endpoint e pode ser útil caso o sistema de Notas esteja com alguma instabilidade ou em manutenção, é utilizada a mesma request porém é retornado um número de protocolo que pode ser consultado posteriormente

```
// Enviar Lote Async
$makeProtocol = $nfSP->enviarLoteAsync($lot);

// Consultar se o lote foi emitido
$lotResult = $nfSP->consultarLoteAsync('1223589');
```

NFTS
====

[](#nfts)

Consultando uma NFTS
--------------------

[](#consultando-uma-nfts)

```
    $nfSP->consultarNfts('454565')
```

Emitindo uma NFTS
-----------------

[](#emitindo-uma-nfts)

```
// Montando o objeto da NFTS
$nfts = new Nfts();
$nfts->setNumeroDocumento('000000000000');
$nfts->setSerieNFTS('A');
$nfts->setCodigoServico('7099');
$nfts->setValorServicos('150.30');
$nfts->setCnpjPrestador('00000000000100');
$nfts->setDiscriminacao('xxx');
$nfts->setDataPrestacao('2019-09-10');
$nfts->setTipoDocumento('01');
$nfts->setRazaoSocialPrestador('XXXX');
$nfts->setLogradouroPrestador('Avenida x x x');
$nfts->setCidadePrestador('x');
$nfts->setNumeroEnderecoPrestador('250');
$nfts->setBairroPrestador('Vila x');
$nfts->setUfPrestador('SP');
$nfts->setCepPrestador('06000000');

// Emitindo a NFTS
$nfSP->enviarNfts($nfts);
```

Cancelando uma NFTS
-------------------

[](#cancelando-uma-nfts)

```
$response = $nfSP->cancelarNfts('00568');
```

Métodos Básicos do Response
===========================

[](#métodos-básicos-do-response)

getResponse
-----------

[](#getresponse)

Retorna uma array com as informaçes da resposta da API

```
  $response->getResponse();
```

getXmlInput
-----------

[](#getxmlinput)

Retorna o XML enviado para API (REQUEST)

```
  $response->getXmlInput();
```

getXmlOutput
------------

[](#getxmloutput)

Retorna o XML Recebido da API (RESPONSE)

```
  $response->getXmlOutput();
```

getSuccess
----------

[](#getsuccess)

Verifica o sucesso da operação realizada

```
  $response->getSuccess();
```

Classe NfSearch (NotaFiscalSP\\Entities\\Requests\\NF\\NfSearch)
----------------------------------------------------------------

[](#classe-nfsearch-notafiscalspentitiesrequestsnfnfsearch)

É a classe utilizada para referenciar uma Nota Fiscal já Existente, não é necessário preencher todas propriedades, apenas o NumeroNfe é o suficiente.

**Propriedade****Método****Tipo**InscricaoPrestadorsetInscricaoPrestador()intNumeroNfesetNumeroNfe()intCodigoVerificacaosetCodigoVerificacao()stringNumeroRPSsetNumeroRPS()intSerieRPSsetSerieRPS()stringClasse Period (NotaFiscalSP\\Entities\\Requests\\NF\\Period)
------------------------------------------------------------

[](#classe-period-notafiscalspentitiesrequestsnfperiod)

Utilizada na realização de consultas por periodo nas notas Emitidas e Recebidas, caso não altere nenhuma das propriedades retorna uma busca com os valores Padrões para data Atual

**Propriedade****Método****Tipo**\*\* Observações\*\*CPFsetCpf()stringCNPJsetCnpj()stringInscricaoMunicipalsetInscricaoMunicipal()intDtIniciosetDtInicio()stringformat(YYYY-MM-DD)DtFimsetDtFim()stringformat(YYYY-MM-DD)PaginasetPagina()intTransacaosetTransacao()booleanClasse Rps (NotaFiscalSP\\Entities\\Requests\\NF\\Rps)
------------------------------------------------------

[](#classe-rps-notafiscalspentitiesrequestsnfrps)

Objeto utilizado para emissão de novas notas

**Propriedade****Método****Tipo**\*\* Observações\*\*InscricaoPrestadorsetInscricaoPrestador()intSerieRpssetSerieRps()stringNumeroRpssetNumeroRps()intTipoRpssetTipoRps()stringDataEmissaosetDataEmissao()stringformat(YYYY-MM-DD)StatusRpssetStatusRps()stringTributacaoRpssetTributacaoRps()stringValorServicossetValorServicos()floatValorDeducoessetValorDeducoes()intdefault: 0ValorPISsetValorPIS()floatValorCOFINSsetValorCOFINS()floatValorINSSsetValorINSS()floatValorIRsetValorIR()floatValorCSLLsetValorCSLL()floatCodigoServicosetCodigoServico()intAliquotaServicossetAliquotaServicos()floatIssRetidosetIssRetido()booleandefault: falseInscricaoMunicipalTomadorsetInscricaoMunicipalTomador()intInscricaoEstadualTomadorsetInscricaoEstadualTomador()intRazaoSocialTomadorsetRazaoSocialTomador()stringEmailTomadorsetEmailTomador()stringCpfCnpjTomadorsetCpfCnpjTomador()stringTipoLogradourosetTipoLogradouro()stringLogradourosetLogradouro()stringNumeroEnderecosetNumeroEndereco()intComplementoEnderecosetComplementoEndereco()stringBairrosetBairro()stringCidadesetCidade()stringdefault: 3550308 (São Paulo)UFsetUF()stringCepsetCep()stringCpfsetCpf()stringCnpjsetCnpj()stringDiscriminacaosetDiscriminacao()stringcpfIntermediariosetcpfIntermediario()stringcnpjIntermediariosetcnpjIntermediario()stringInscricaoMunicipalIntermediariosetInscricaoMunicipalIntermediario()intIssRetidoIntermediariosetIssRetidoIntermediario()booleanEmailIntermediariosetEmailIntermediario()stringValorCargaTributariasetValorCargaTributaria()floatPercentualCargaTributariasetPercentualCargaTributaria()floatFonteCargaTributariasetFonteCargaTributaria()stringCodigoCEIsetCodigoCEI()stringMatriculaObrasetMatriculaObra()stringMunicipioPrestacaosetMunicipioPrestacao()stringValortotalRecebidosetValortotalRecebido()floatNumeroEncapsulamentosetNumeroEncapsulamento()int

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance55

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 80.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/6486f733b37a06dc299a24630819c6cf1d76081a99d10591f7cd091a373722aa?d=identicon)[lucastmax](/maintainers/lucastmax)

---

Top Contributors

[![kaio-souza](https://avatars.githubusercontent.com/u/16223766?v=4)](https://github.com/kaio-souza "kaio-souza (45 commits)")[![lucastmax](https://avatars.githubusercontent.com/u/84201045?v=4)](https://github.com/lucastmax "lucastmax (6 commits)")[![mayloncorrea](https://avatars.githubusercontent.com/u/23480351?v=4)](https://github.com/mayloncorrea "mayloncorrea (5 commits)")

### Embed Badge

![Health badge](/badges/lucastmax-notafiscalsp/health.svg)

```
[![Health](https://phpackages.com/badges/lucastmax-notafiscalsp/health.svg)](https://phpackages.com/packages/lucastmax-notafiscalsp)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M475](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M270](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M186](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M33](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M452](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
