Conheças as soluções Webmania® para o seu negócio. Aproveite 30 dias grátis para testar nossas soluções*
Conversar no WhatsApp*Teste grátis para novos clientes. Consulte condições e serviços disponíveis para teste grátis.
Utilize a REST API da Webmania®, para emissão de MDF-e. Deseja emitir outros modelos? Ver documentação
Todas as solicitações na API devem ser realizadas em ambiente criptografado HTTPS através da URL https://api.webmaniabr.com
. O prefixo /2/ indica que atualmente nós estamos utilizando a versão 2.0 da API.
URL | HTTP Verb | Função |
---|---|---|
/2/mdfe/emissao | POST | Emissão de MDF-e |
/2/mdfe/consulta | GET | Consulta de MDF-e |
/2/mdfe/encerrar | PUT | Encerrar MDF-e |
/2/mdfe/cancelar | PUT | Cancelar MDF-e |
/2/mdfe/condutor | PUT | Incluir Condutor na MDF-e (Apenas modalidade Rodoviário) |
Todas as respostas são no formato objeto JSON.
Uma requisição bem sucedida é indicada através do status HTTP, o status 2xx indica sucesso. Quando uma requisição ocorre falha o corpo da resposta [body] continua no formato JSON, mas sempre contém o campo error
. Por exemplo, caso a sua autenticação não seja bem sucedida irá retornar a seguinte mensagem:
{
"msg": "Acesso restrito."
}
Realize a emissão com apenas um clique na sua Loja Virtual através dos módulos da Webmania® ou realize a integração para os diversos tipos de linguagens de programação.
Para as solicitações o corpo da requisição [body] deve ser enviado no formato JSON com os headers Content-Type
e Accept
definido para application/json
.
A autenticação é realizada através do cabeçalho HTTP (HTTP headers). É necessário o envio do header Authorization Bearer Token
com o Access-Token da API 2.0, que é encontrado no painel Webmania®.
Mantenha as credenciais de acesso em segurança. Nunca publique as credenciais de acesso no código fonte do site, aplicativo ou software onde o usuário possa ter fácil acesso.
Para aplicativos mobile iOS e Android recomendamos que o processo de emissão seja realizado no servidor (back-end). No código fonte do aplicativo deve possuir somente a solicitação de emissão, enquanto o processo deve ser realizado em seu servidor.
Para que a sua plataforma se mantenha sempre atualizada a Webmania disponibiliza as notificações automáticas para todos os status da MDF-e.
Cada MDF-e possui um número único de identificação chamado de UUID, este número deve ser utilizado para recepcionar e identificar a MDF-e para atualizar as informações no seu banco de dados.
No momento que realizado a emissão da MDF-e, caso tenha informado o parâmetro url_notificacao
, será enviado o retorno no formato POST para a URL especificada contendo no corpo os parâmetros uuid
, chave
, serie
, numero
, status
, motivo
, xml
, damdfe
e log
.
Parâmetro | Tipo | Descrição |
---|---|---|
uuid | string | Número único de identificação da MDF-eDeve ser utilizado a UUID para recepcionar o retorno da notificação. |
chave | string | Chave de identificação da MDF-e na Sefaz |
serie | número | Série de emissão |
numero | número | Número da MDF-e Gerenciado automaticamente pelo emissor. |
status | string | Status da MDF-eaprovado |
motivo | string | Motivo do statusEx.: Autorizado o uso da MDF-e |
xml | string | URL do XML da MDF-e |
damdfe | string | URL do DAMDFE |
log | array | Log de retorno da Sefaz |
A requisição via POST é realizada no formato application/json
:
-X POST \
-header "Content-type: application/json" \
Segue exemplo do retorno via POST:
{
"uuid": "00000000-0000-0000-0000-000000000000",
"chave": "00000000000000000000000000000000000000000000",
"serie": 1,
"numero": 123,
"status": "aprovado",
"motivo": "Autorizado o uso da MDF-e",
"xml": "https://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "https://api.webmaniabr.com/damdfe/[chave]",
"log": { ... }
}
Para emitir um Manifesto Eletrônico de Documentos Fiscais, envie a requisição no método POST para a URL /2/mdfe/emissao
contendo no corpo da requisição os objetos no formato JSON.
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 1,
"modalidade": 1,
"emitente": 2,
...
}' \
https://api.webmaniabr.com/2/mdfe/emissao
Segue abaixo exemplo de como Emitir MDF-e:
{
"ambiente": 1,
"emitente": 2,
"transportador": 1,
"modalidade": 1,
"uf_carregamento": "GO",
"uf_descarregamento": "PR",
"valor_carga": "500.00",
"unidade": "01",
"peso_bruto": "50.0000",
"carregamento": [
{
"codigo_municipio": "5208707",
"nome_municipio": "Goiânia",
},
{
"codigo_municipio": "5201405",
"nome_municipio": "Aparecida de Goiânia",
}
],
"descarregamento": [
{
"codigo_municipio": "4106902",
"nome_municipio": "Curitiba",
"documentos_fiscais": [
{
"chave": "00000000000000000000000000000000000000000000",
}
]
}
],
"percurso": ["MG", "SP"],
"rodoviario": {
"rntrc": "12345678",
"veiculo_tracao": {
"placa": "AB12E4R",
"tara": "20",
"uf_licenciamento": "GO",
"tipo_rodado": "01",
"tipo_carroceria": "00",
"proprietario": {
"cnpj": "00.000.000/0000-00",
"razao_social": "Proprietário 1",
"ie": "00000",
"uf": "GO",
"tipo_proprietario": "2",
}
},
"condutor": [
{
"cpf": "000.000.000-00",
"nome": "Condutor 1",
}
],
"ciot": [
{
"codigo_ciot": "000000000000",
"cpf_responsavel": "000.000.000-00",
}
]
},
"seguro": [
{
"responsavel": {
"tipo_responsavel": "1"
}
}
],
"produto_predominante": {
"tipo_carga": "01",
"nome": "Produto 1",
"lotacao": {
"carregamento": {
"cep": "00000-000",
},
"descarregamento": {
"cep": "00000-000",
}
}
}
}
A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos uuid
, chave
, serie
, numero
, status
, motivo
, xml
, damdfe
e log
:
{
"uuid": "90d30c80-d0be-4c8f-a749-a818989222ca", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"serie": 1, // Série da MDF-e
"numero": 123, // Número da MDF-e
"status": "aprovado", // aprovado, reprovado, cancelado, encerrado, processando ou contingencia
"motivo": "Autorizado o uso da MDF-e", // Motivo do status
"xml": "http://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "http://api.webmaniabr.com/damdfe/[chave]",
"log": "{...}" // Log de retorno da Sefaz
}
No momento que realizado a emissão da Nota Fiscal, caso tenha informado o parâmetro url_notificacao
, será enviado o retorno no formato POST para a URL especificada. Saiba mais
O Manifesto Eletrônico de Documentos Fiscais possui quatro modalidades diferentes dependendo do tipo de transporte da carga: Rodoviário, Aéreo, Aquaviário e Ferroviário. Cada modalidade possui um grupo de campos específicos que são identificados pelos parâmetros: rodoviario
, aereo
, aquaviario
e ferroviario
.
Preencha os campos conforme finalidade da sua emissão, alguns parâmetros possuem informações adicionais que podem ser acessadas ao clicar em cima. A tabela abaixo possui os campos necessários para a emissão de um MDF-e.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
ambiente | número | 1 | Identificação do Ambiente da Sefaz 1 - Produção | |
url_notificacao | string | --- | URL de notificação para todas as atualizações de status da MDF-e | |
emitente | número | 1 | Tipo do Emitente da MDF-e 1 - Prestador de serviço de transporte Obs.: Deve ser preenchido com 2, para emitentes de NF-e e pelas transportadoras quando estiverem fazendo transporte de carga própria. Deve ser preenchido com 3, para transportador de carga que emitirá à posteriori CT-e Globalizado relacionando as NF-e. | |
transportador | número | 1 | Tipo do Transportador da MDF-e 1 - ETC | |
modalidade | número | 1 | Modalidade de transporte 1 - Rodoviário | |
uf_carregamento | string | 2 | Sigla da UF do Carregamento | |
uf_descarregamento | string | 2 | Sigla da UF do Descarregamento | |
valor_carga | string | 13v2 | Valor total da carga/mercadorias transportadas | |
unidade | string | 2 | Código da unidade de medida do Peso Bruto da Carga/Mercadorias transportadas 01 – KG | |
peso_bruto | string | 11v4 | Peso Bruto Total da Carga/Mercadorias transportadas | |
data_inicio_viagem | string | 19 | Data e hora previstos de início da viagem Formato: Y-m-d H:i:s | |
carregamento | array | 1-50 | Informações dos Municípios de Carregamento | |
descarregamento | array | 1-10000 | Informações dos Municípios de Descarregamento e Documentos Fiscais | |
produto_predominante | objeto | --- | Informações do Produto Predominante da Carga | |
seguro | array | 0-n | Informações do Seguro da Carga | |
rodoviario | objeto | --- | Informações do Modelo Rodoviário. *Obrigatório para modalidade Rodoviário. | |
aereo | objeto | --- | Informações do Modelo Aéreo. *Obrigatório para modalidade Aéreo. | |
aquaviario | objeto | --- | Informações do Modelo Aquaviário. *Obrigatório para modalidade Aquaviário. | |
ferroviario | objeto | --- | Informações do Modelo Ferroviário. *Obrigatório para modalidade Ferroviário. |
As informações sobre o Carregamento da Carga são montados dentro do array carregamento
, onde cada elemento do array corresponde à um município de carregamento.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
nome_municipio | string | 2-60 | Nome do Município de Carregamento | |
codigo_municipio | string | 7 | Código do Município de Carregamento Caso o município não seja identificado pelo nome, será solicitado o código do município |
Segue abaixo exemplo de como informar o carregamento ao emitir uma MDF-e:
{
...
"carregamento": [
{
"nome_municipio": "Curitiba",
"codigo_municipio": "4106902"
},
{
"nome_municipio": "Maringá",
"codigo_municipio": "4115200"
}
],
...
}
As informações sobre o Descarregamento da Carga são montados dentro do array descarregamento
, onde cada elemento do array corresponde à um município de descarregamento. Podem ter vários Documentos Fiscais (NF-e, CT-e ou MDF-e) vinculados ao município de descarregamento.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
nome_municipio | string | 2-60 | Nome do Município de Descarregamento | |
codigo_municipio | string | 7 | Código do Município de Descarregamento Caso o município não seja identificado pelo nome, será solicitado o código do município | |
documentos_fiscais | array | 1-10000 | Documentos Fiscais das mercadorias que serão descarregadas no município NF-e, CT-e ou MDF-e |
Segue abaixo exemplo de como informar o descarregamento ao emitir uma MDF-e:
{
...
"descarregamento": [
{
"nome_municipio": "São Paulo",
"codigo_municipio": "3550308",
"documentos_fiscais": [...]
}
],
...
}
As informações sobre os Documentos Fiscais são montados dentro do array documentos_fiscais
, onde cada elemento do array corresponde à um Documento Fiscal, podendo ser NF-e, CT-e ou MDF-e.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
chave | string | 44 | Chave de acesso | |
codigo_barra | string | 36 | Segundo código de barras | |
indicador_reentrega | boolean | --- | Indicador de Reentrega | |
unidade_transporte | array | 0-n | Informações das Unidades de Transporte (Carreta/Reboque/Vagão) |
Segue abaixo exemplo de como informar um Documento Fiscal:
{
...
"documentos_fiscais": [
{
"chave": "00000000000000000000000000000000000000000000"
},
{
"chave": "00000000000000000000000000000000000000000000"
},
{
"chave": "00000000000000000000000000000000000000000000"
}
],
...
}
As informações sobre as Unidades de Transporte são montados dentro do array unidade_transporte
, onde cada elemento do array corresponde à uma Unidade de Transporte.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
tipo | número | 1 | Tipo da Unidade de Transporte 1 - Rodoviário Tração | |
identificacao | string | 1-20 | Identificação da Unidade de Transporte Informar a identificação conforme o tipo de unidade de transporte. Por exemplo, para rodoviário tração ou reboque deverá informar a placa do veículo. | |
lacres | array (string) | 0-n | Lacres das Unidades de Transporte | |
quantidade_rateada | string | 3v2 | Quantidade rateada (Peso,Volume) | |
unidade_carga | array | 0-n | Informações das Unidades de Carga (Containeres/ULD/Outros) |
Segue abaixo exemplo de como informar uma Unidade de Transporte:
{
...
"unidade_transporte": [
{
"tipo": 1,
"identificacao": "Placa ABCXXXX",
"lacres": [
"00000000", "00000000"
],
"unidade_carga": [...]
}
],
...
}
As informações sobre as Unidades de Carga são montados dentro do array unidade_carga
, onde cada elemento do array corresponde à uma Unidade de Carga.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
tipo | número | 1 | Tipo da Unidade de Carga 1 - Container | |
identificacao | string | 1-20 | Identificação da Unidade de Carga Informar a identificação da unidade de carga, por exemplo: número do container. | |
lacres | array (string) | 0-n | Lacres das Unidades de Carga | |
quantidade_rateada | string | 3v2 | Quantidade rateada (Peso,Volume) |
Segue abaixo exemplo de como informar uma Unidade de Carga:
{
...
"unidade_carga": [
{
"tipo": 1,
"identificacao": "Container 00000",
"lacres": [
"00000000", "00000000"
]
}
],
...
}
As informações sobre Periculosidade são montados dentro do array periculosidade
, onde cada elemento do array corresponde às informações de periculosidade sobre um produto. Essas informações devem ser preenchidas quando houver transporte de produtos classificados pela ONU como perigosos.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
numero_onu | string | 4 | Número ONU/UN | |
quantidade_total | string | 1-20 | Quantidade total por produto | |
nome_embarque | string | 1-150 | Nome apropriado para embarque do produto | |
classe_risco | string | 1-40 | Classe ou subclasse/divisão, e risco subsidiário/risco secundário | |
grupo_embalagem | string | 1-6 | Grupo de Embalagem | |
quantidade_volumes | string | 1-60 | Quantidade e Tipo de volumes | |
entrega_parcial | objeto | --- | Informações da Entrega Parcial (Corte de Voo) |
Segue abaixo exemplo de como informar periculosidade:
{
...
"periculosidade": [
{
"numero_onu": "XXXX",
"nome_embarque": "Produto Perigoso 1",
"classe_risco": "Classe de Risco XX",
"grupo_embalagem": "XXXXXX",
"quantidade_total": "40000",
"entrega_parcial": "35000"
}
],
...
}
As informações sobre o Produto Predominante da Carga são montados dentro do objeto produto_predominante
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
tipo_carga | string | 2 | Tipo da Carga 01-Granel sólido | |
nome | string | 2-120 | Nome/Descrição do Produto Predominante | |
gtin | string | 14 | GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras | |
ncm | string | 8 | Código NCM do Produto | |
lotacao | objeto | --- | Informações da carga lotação. Informar somente quando MDF-e for de carga lotação |
Segue abaixo exemplo de como informar o Produto Predominante
{
...
"produto_predominante": {
"tipo_carga": "02",
"nome": "Produto X",
"gtin": "00000000000000",
"ncm": "00000000",
"lotacao": {
...
},
},
...
}
As informações sobre a Lotação do Produto Predominante da Carga são montados dentro do objeto lotacao
, devem ser informados a localização do local de carregamento e descarregamento da carga de lotação.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
cep | string | 8-9 | CEP do Local de Carregamento/Descarregamento | |
latitude | string | 2v6 | Latitude do Local de Carregamento/Descarregamento | |
longitude | string | 3v6 | Longitude do Local de Carregamento/Descarregamento |
Segue abaixo exemplo de como informar a Lotação do Produto Predominante
{
...
"lotacao": {
"carregamento": {
"cep": "00000-000",
"latitude": "00.000",
"longitude": "00.000"
},
"descarregamento": {
"cep": "00000-000",
"latitude": "00.000",
"longitude": "00.000"
},
},
...
}
As informações sobre o Seguro da Carga são montados dentro do array seguro
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
responsavel | objeto | --- | Informações do responsável pelo seguro da carga | |
seguradora | objeto | --- | Informações da seguradora | |
numero_apolice | string | 1-20 | Número da Apólice | |
numero_averbacao | array | 0-n | Número das Averbações |
Segue abaixo exemplo de como informar o seguro da carga
{
...
"seguro": [
{
"responsavel": {
"tipo_responsavel": 2,
"cnpj": "00.000.000/0000-00",
},
"seguradora": {
"nome_seguradora": "Seguradora 1",
"cnpj": "00.000.000/0000-00",
},
"numero_apolice": "00000000000000",
"numero_averbacao": ["000000", "000000"]
},
{
"responsavel": {
"tipo_responsavel": 1
},
"seguradora": {
"nome_seguradora": "Seguradora 2",
"cnpj": "00.000.000/0000-00",
},
"numero_apolice": "00000000000000",
"numero_averbacao": ["000000", "000000"]
}
],
...
}
As informações sobre o responsável pelo seguro são montados dentro do objeto responsavel
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
tipo_responsavel | número | 1 | Responsável pelo seguro 1 - Emitente do MDF-e | |
cpf Pessoa Física | string | 11 | Número do CPF Obs.: Não é necessário informar caso o responsável seja o emitente do MDF-e 000.000.000-00 | |
cnpj Pessoa Jurídica | string | 14 | Número do CNPJ Obs.: Não é necessário informar caso o responsável seja o emitente do MDF-e 00.000.000/0000-00 |
As informações sobre a seguradora são montados dentro do objeto seguradora
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
nome_seguradora | string | 1-30 | Nome da Seguradora | |
cnpj | string | 14 | Número do CNPJ00.000.000/0000-00 |
As informações sobre a modalidade Rodoviário são montados dentro do array rodoviario
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
rntrc | string | 8 | Registro Nacional de Transportadores Rodoviários de Carga | |
combinacao_veicular NOVO | string | 2 | Categoria de Combinação Veicular *Obrigatório quando definido o vale_pedagio 02-Veículo Comercial 2 eixos | |
veiculo_tracao | objeto | --- | Informações do Veículo de Tração | |
veiculo_reboque | array | 0-3 | Informações dos Veículos de Reboque | |
condutor | array | 1-10 | Condutores do Veículo | |
ciot | array | 0-n | Dados do CIOT (Código Identificador da Operação de Transporte) | |
vale_pedagio | array | 0-n | Informações de Vale Pedágio *Obrigatório quando definido o combinacao_veicular | |
contratante | array | 0-n | Informações dos Contratantes do Serviço de Transporte |
Segue abaixo exemplo de como informar a modalidade Rodoviário
{
...
"rodoviario": {
"rntrc": "00000000",
"veiculo_tracao": {...},
"condutor": [...]
}
...
}
As informações sobre o veículo de tração/reboque são montados dentro do objeto veiculo_tracao
ou do array veiculo_reboque
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
codigo_interno | string | 1-10 | Código interno do veículo | |
placa | string | 7 | Placa do veículo | |
renavam | string | 9-11 | RENAVAM do veículo | |
tara | string | 1-6 | Tara em KG | |
capacidade_kg | string | 1-6 | Capacidade em KG do veículo *Obrigatório para veículo de reboque | |
capacidade_m3 | string | 1-3 | Capacidade em m3 do veículo | |
tipo_rodado | string | 2 | Tipo de rodado Obs.: Informar somente para veículo de tração 01 - Truck | |
tipo_carroceria | string | 2 | Tipo de Carroceria 00 - não aplicável | |
uf_licenciamento | string | 2 | Sigla da UF de Licenciamento do veículo | |
proprietario | objeto | --- | Proprietário do veículoSó preenchido quando o veículo não pertencer à empresa emitente do MDF-e. |
Segue abaixo exemplo de como informar o veículo de tração ou reboque
{
...
"veiculo_tracao": {
"codigo_interno": "XX123",
"placa": "ABC67H2",
"renavam": "000000000",
"tara": "30",
"tipo_rodado": "01",
"tipo_carroceria": "00",
"proprietario": {
"cnpj": "00.000.000/0000-00",
"razao_social": "Proprietário 1",
"rntrc": "00000000",
"ie": "12345",
"uf": "SP",
"tipo_proprietario": "0",
},
},
"veiculo_reboque": [
{
"codigo_interno": "XX456",
"placa": "DEF22H1",
"renavam": "000000000",
"tara": "20",
"capacidade_kg": "50",
"tipo_carroceria": "00",
"proprietario": {
"cnpj": "00.000.000/0000-00",
"razao_social": "Proprietário 2",
"rntrc": "00000000",
"ie": "67890",
"uf": "SP",
"tipo_proprietario": "0",
}
}
]
...
}
As informações sobre o proprietário do veículo, somente preenchido quando o veículo não pertencer à empresa emitente do MDF-e, são montados dentro do objeto proprietario
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
cpf Pessoa Física | string | 11 | Número do CPF000.000.000-00 | |
cnpj Pessoa Jurídica | string | 14 | Número do CNPJ00.000.000/0000-00 | |
nome_completo Pessoa Física | string | 2-60 | Nome completo | |
razao_social Pessoa Jurídica | string | 2-60 | Razão Social00.000.000/0000-00 | |
ie | string | 0-14 | Inscrição Estadual | |
rntrc | string | 8 | RNTRC do proprietário | |
uf | string | 2 | Sigla da UF do proprietário | |
tipo_proprietario | string | 1 | Tipo do proprietário 0-TAC – Agregado |
As informações sobre os condutores dos veículos são montados dentro do array condutor
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
cpf | string | 11 | Número do CPF 000.000.000-00 | |
nome | string | 2-60 | Nome completo |
Segue abaixo exemplo de como informar o condutor
{
...
"condutor": [
{
"cpf": "000.000.000-00",
"nome": "Condutor 1",
},
{
"cpf": "000.000.000-00",
"nome": "Condutor 2",
}
],
...
}
As informações sobre o CIOT (Código Identificador da Operação de Transporte) são montados dentro do array ciot
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
codigo_ciot | string | 12 | Código CIOT | |
cpf_responsavel Pessoa Física | string | 11 | Número do CPF do Responsável pela geração do CIOT000.000.000-00 | |
cnpj_responsavel Pessoa Jurídica | string | 14 | Número do CNPJ do Responsável pela geração do CIOT00.000.000/0000-00 |
Segue abaixo exemplo de como informar o CIOT
{
...
"ciot": [
{
"codigo_ciot": "000000000000",
"cpf_responsavel": "000.000.000-00",
},
{
"codigo_ciot": "000000000000",
"cnpj_responsavel": "00.000.000/0000-00",
}
],
...
}
As informações sobre o Vale Pedágio são montados dentro do array vale_pedagio
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
cnpj_fornecedor | string | 14 | Número do CNPJ do Fornecedor do Vale Pedágio 00.000.000/0000-00 | |
cpf_responsavel Pessoa Física | string | 11 | Número do CPF do Responsável pelo pagamento do Vale Pedágio000.000.000-00 | |
cnpj_responsavel Pessoa Jurídica | string | 14 | Número do CNPJ do Responsável pelo pagamento do Vale Pedágio00.000.000/0000-00 | |
comprovante | string | 1-20 | Número do comprovante de compra | |
valor | string | 13v2 | Valor do Vale Pedágio |
Segue abaixo exemplo de como informar o Vale Pedágio
{
...
"vale_pedagio": [
{
"cnpj_fornecedor": "00.000.000/0000-00",
"cpf_responsavel": "000.000.000-00",
"comprovante": "00000",
"valor": "15.00",
},
{
"cnpj_fornecedor": "00.000.000/0000-00",
"cnpj_responsavel": "00.000.000/0000-00",
"comprovante": "00000",
"valor": "12.00",
}
],
...
}
As informações sobre os contratantes do serviço de transporte são montados dentro do array contratante
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
cpf Pessoa Física | string | 11 | Número do CPF000.000.000-00 | |
cnpj Pessoa Jurídica | string | 14 | Número do CNPJ00.000.000/0000-00 |
Segue abaixo exemplo de como informar o Contratante
{
...
"contratante": [
{
"cpf": "000.000.000-00"
},
{
"cnpj": "00.000.000/0000-00"
}
],
...
}
As informações sobre a modalidade Aéreo são montados dentro do array aereo
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
nacionalidade_aeronave | string | 1-4 | Marca de nacionalidade da Aeronave | |
matricula_aeronave | string | 1-6 | Marca de matrícula da Aeronave | |
numero_voo | string | 5-9 | Número do Voo Formato = AB1234, sendo AB a designação da empresa e 1234 o número do voo. Quando não for possível incluir as marcas de nacionalidade e matrícula sem hífen. | |
aerodromo_embarque | string | 3-4 | Aeródromo de Embarque O código de três letras IATA do aeroporto de partida deverá ser incluído como primeira anotação. Quando não for possível, utilizar a sigla OACI. | |
aerodromo_destino | string | 3-4 | Aeródromo de Destino O código de três letras IATA do aeroporto de destino deverá ser incluído como primeira anotação. Quando não for possível, utilizar a sigla OACI. | |
data_voo | string | 10 | Data do Voo Formato Y-m-d |
Segue abaixo exemplo de como informar a modalidade Aéreo
{
...
"aereo": {
"nacionalidade_aeronave": "XXXX",
"matricula_aeronave": "XXXXXX",
"numero_voo": "AB1234",
"aerodromo_embarque": "AB1",
"aerodromo_destino": "AB2",
"data_voo": "2022-07-11",
}
...
}
As informações sobre a modalidade Aquaviário são montados dentro do array aquaviario
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
irin | string | 1-10 | Irin do navio | |
tipo_embarcacao | string | 2 | Código do tipo de embarcação Preencher com código da Tabela de Tipo de Embarcação definida no Ministério dos Transportes | |
codigo_embarcacao | string | 1-10 | Código da embarcação | |
nome_embarcacao | string | 1-60 | Nome da embarcação | |
numero_viagem | string | 1-10 | Número da viagem | |
codigo_porto_embarque | string | 1-5 | Código do Porto de Embarque Preencher de acordo com Tabela de Portos definida no Ministério dos Transportes | |
codigo_porto_destino | string | 1-5 | Código do Porto de Destino Preencher de acordo com Tabela de Portos definida no Ministério dos Transportes | |
porto_transbordo | string | 1-60 | Porto de Transbordo | |
tipo_navegacao | string | 1 | Tipo de navegação 0 - Interior | |
terminal_carregamento | array | 0-5 | Informações dos Terminais de Carregamento | |
terminal_descarregamento | array | 0-5 | Informações dos Terminais de Descarregamento | |
embarcacao_comboio | array | 0-30 | Informações das Embarcações do Comboio | |
carga_vazia | array | 0-n | Informações das Unidades de Carga vazias | |
transporte_vazio | array | 0-n | Informações das Unidades de Transporte vazias |
Segue abaixo exemplo de como informar a modalidade Aéreo
{
...
"aquaviario": {
"irin": "XXXX12345",
"tipo_embarcacao": "01",
"codigo_embarcacao": "AB12345",
"nome_embarcacao": "Embarcação 1",
"numero_viagem": "AA12345",
"codigo_porto_embarque": "XXXXX",
"codigo_porto_destino": "XXXXX",
"terminal_carregamento": [
{
"codigo": "TC1",
"nome": "Terminal Carregamento 1",
}
],
"terminal_descarregamento": [
{
"codigo": "TD1",
"nome": "Terminal Descarregamento 1",
}
],
"embarcacao_comboio": [
{
"codigo": "EC1",
"identificador_balsa": "Balsa 1",
}
],
"carga_vazia": [
{
"identificador": "UCV1",
"tipo_unidade": 1,
}
],
"transporte_vazio": [
{
"identificador": "UTV1",
"tipo_unidade": 1,
}
],
}
...
}
As informações sobre os terminais de carregamento e descarregamento são montados dentro do array terminal_carregamento
ou terminal_descarregamento
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
codigo | string | 1-8 | Código do Terminal Preencher de acordo com a Tabela de Terminais de Carregamento/Descarregamento. O código de cada Porto está definido no Ministério de Transportes. | |
nome | string | 1-60 | Nome do Terminal |
As informações sobre as embarcações do comboio são montados dentro do array embarcacao_comboio
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
codigo | string | 1-10 | Código da embarcação do comboio | |
identificador_balsa | string | 1-60 | Identificador da Balsa |
As informações sobre as unidades de carga vazias são montados dentro do array carga_vazia
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
identificador | string | 1-20 | Identificação da unidade | |
tipo_unidade | string | 1 | Tipo da unidade 1 - Container |
As informações sobre as unidades de transporte vazias são montados dentro do array transporte_vazio
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
identificador | string | 1-20 | Identificação da unidade | |
tipo_unidade | string | 1 | Tipo da unidade 1 - Rodoviário Tração do tipo caminhão |
As informações sobre a modalidade Ferroviário são montados dentro do array ferroviario
, a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
trem | objeto | --- | Informações da composição do trem | |
vagoes | array | 1-n | Informações dos vagões |
Segue abaixo exemplo de como informar a modalidade Ferroviário
{
...
"ferroviario": {
"trem": {
"prefixo": "ABC123",
"data_liberacao": "2022-07-11 10:00:00",
"origem": "A12",
"destino": "B34",
},
"vagoes": [
{
"peso_bc": "0.000",
"peso_real": "0.000",
"tipo_vagao": "ABC",
"serie": "XYZ",
"numero": "110",
"sequencia_vagao": "1",
"tonelada_util": "0.000,
},
{
"peso_bc": "0.000",
"peso_real": "0.000",
"tipo_vagao": "ABC",
"serie": "XYZ",
"numero": "120",
"sequencia_vagao": "2",
"tonelada_util": "0.000,
}
]
}
...
}
As informações sobre o trem são montados dentro do objeto trem
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
prefixo | string | 1-10 | Prefixo do trem | |
data_liberacao | string | 19 | Data e hora de liberação do trem na origem Formato Y-m-d H:i:s | |
origem | string | 1-3 | Sigla da estação de origem do trem | |
destino | string | 1-3 | Sigla da estação de destino do trem |
As informações sobre os vagões do trem são montados dentro do objeto vagoes
,
a tabela abaixo lista os parâmetros que podem ser informados.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
peso_bc | string | 3v3 | Peso Base de Cálculo de Frete em Toneladas | |
peso_real | string | 3v3 | Peso Real em Toneladas | |
tipo_vagao | string | 3 | Tipo de vagão | |
serie | string | 3 | Série de identificação | |
numero | string | 1-8 | Número de identificação | |
sequencia_vagao | string | 1-3 | Sequência na composição | |
tonelada_util | string | 3v3 | Tonelada Útil |
Na Webmania, a segurança da informação é nossa prioridade máxima. Por esse motivo, aplicamos restrições de acesso aos arquivos XML e PDF para garantir a segurança dos documentos fiscais.
O documento fiscal é criptografado com senha, e só pode ser visualizado após a confirmação do CPF/CNPJ do tomador da nota fiscal ou conforme formas de autenticação através do IP emissor
, Credenciais de acesso
, Token
ou Conectado no painel Webmania®
.
Segue abaixo as condições de acesso disponibilizados, após as restrições serem aplicadas:
Autenticação | Acesso autorizado | Exige senha? | Descrição |
---|---|---|---|
Credenciais de acesso | ✅ | Não | Ao enviar as credenciais de acesso da empresa na HEADER da requisição, podem ser acessados todos os documentos fiscais emitidos pela empresa. Authorization: Bearer SEU_ACCESS_TOKEN |
Token | ❌ | --- | Recurso não disponível para MDF-e |
IP emissor | ✅ | Não | Ao emitir uma nota fiscal o IP do computador/servidor é registrado como autorizado de forma permanente, onde pode acessar todos os documentos fiscais emitidos pelas empresas às quais possui acesso. IPs autorizados automaticamente |
Painel Webmania® | ✅ | Não | Ao realizar o login no painel Webmania® é permitido o acesso para todos os documentos fiscais emitidos pelas empresas da sua conta. O acesso é vinculado ao período que está conectado no painel Webmania®.Acesso enquanto estiver conectado |
Sem autenticação | ❌ | --- | Recurso não disponível para MDF-e |
Ao enviar as credenciais de acesso da empresa na HEADER da requisição, podem ser acessados todos os documentos fiscais emitidos pela empresa. Segue abaixo exemplo de como visualizar o PDF, utilizando as credenciais de acesso:
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
https://api.webmaniabr.com/damdfe/00000000000000000000000000000000000000000000
A resposta do corpo da mensagem será no formato application/pdf
ou text/xml
, contendo no corpo da requisição o arquivo.
Para consultar o status de emissão da MDF-e, envie a requisição no método GET para URL /2/mdfe/consulta/
contendo na URL da requisição o UUID ou Chave de Acesso da MDF-e.
Segue abaixo exemplo da consulta de uma MDF-e:
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
}' \
https://api.webmaniabr.com/2/mdfe/consulta/00000000000000000000000000000000000000000000
A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos uuid
, chave
, status
, motivo
, serie
, numero
, xml
, damdfe
, log
:
{
"uuid": "90d30c80-d0be-4c8f-a749-a818989222ca", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "aprovado", // aprovado, reprovado, cancelado, encerrado, processando ou contingencia
"motivo": "Autorizado o uso da MDF-e", // Motivo do status
"serie": 1, // Série da MDF-e
"numero": 123, // Número da MDF-e
"xml": "http://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "http://api.webmaniabr.com/damdfe/[chave]",
"log": "{...}" // Log de retorno da Sefaz
}
O encerramento do Manifesto Eletrônico de Documentos Fiscais deve ser realizado sempre que uma entrega for finalizada, dessa forma é possível reconhecer que o serviço de transporte foi realmente finalizado.
Para encerrar uma MDF-e, envie a requisição no método PUT para URL /2/mdfe/encerrar
contendo na requisição os parâmetros uuid
ou chave
da MDF-e, uf
e municipio
do encerramento.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
uuid | chave | string | 36 | 44 | UUID ou Chave da MDF-e | |
uf | string | 2 | Sigla da UF de Encerramento | |
municipio | string | 2-60 | Município de Encerramento | |
codigo_municipio | string | 7 | Código do Município de Encerramento. Obs.: Necessário informar caso o município não seja identificado apenas pelo nome e UF. |
Segue abaixo exemplo de encerramento da MDF-e:
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "00000000000000000000000000000000000000000000",
"uf": "PR",
"municipio": "Curitiba"
}' \
https://api.webmaniabr.com/2/mdfe/encerrar
A resposta do corpo da mensagem será no formato objeto JSON:
{
"uuid": "90d30c80-d0be-4c8f-a749-a818989222ca", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "encerrado",
"motivo": "MDF-e encerrada", // Motivo do status
"serie": 1, // Série da MDF-e
"numero": 123, // Número da MDF-e
"xml": "http://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "http://api.webmaniabr.com/damdfe/[chave]",
"log": "{...}" // Log de retorno da Sefaz
}
Para cancelar uma MDF-e, envie a requisição no método PUT para URL /2/mdfe/cancelar
contendo na requisição os parâmetros uuid
ou chave
da MDF-e e justificativa
do cancelamento.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
uuid | chave | string | 36 | 44 | UUID ou Chave da MDF-e | |
justificativa | string | 15-255 | Motivo do cancelamento |
Segue abaixo exemplo de cancelamento da MDF-e:
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "00000000000000000000000000000000000000000000",
"justificativa": "Cancelado por motivos administrativos."
}' \
https://api.webmaniabr.com/2/mdfe/cancelar
A resposta do corpo da mensagem será no formato objeto JSON:
{
"uuid": "90d30c80-d0be-4c8f-a749-a818989222ca", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "cancelado",
"motivo": "Cancelado por motivos administrativos.", // Motivo do status
"serie": 1, // Série da MDF-e
"numero": 123, // Número da MDF-e
"xml": "http://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "http://api.webmaniabr.com/damdfe/[chave]",
"log": "{...}" // Log de retorno da Sefaz
}
Para incluir um novo condutor em uma MDF-e do modelo Rodoviário, envie a requisição no método PUT para URL /2/mdfe/condutor
contendo na requisição os parâmetros uuid
ou chave
da MDF-e e nome
e cpf
do condutor que será incluído.
Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
---|---|---|---|---|
uuid | chave | string | 36 | 44 | UUID ou Chave da MDF-e | |
cpf | string | 11 | Número do CPF do Condutor000.000.000-00 | |
nome | string | 2-60 | Nome do Condutor |
Segue abaixo exemplo de inclusão do condutor na MDF-e:
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "00000000000000000000000000000000000000000000",
"cpf": "000.000.000-00",
"nome": "Novo Condutor"
}' \
https://api.webmaniabr.com/2/mdfe/condutor
A resposta do corpo da mensagem será no formato objeto JSON:
{
"uuid": "90d30c80-d0be-4c8f-a749-a818989222ca", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "aprovado",
"motivo": "Evento registrado e vinculado ao MDF-e.", // Motivo do status
"serie": 1, // Série da MDF-e
"numero": 123, // Número da MDF-e
"xml": "http://api.webmaniabr.com/xmlmdfe/[chave]",
"damdfe": "http://api.webmaniabr.com/damdfe/[chave]",
"log": "{...}" // Log de retorno da Sefaz
}
A Manifesto Eletrônico (MD-e) é emitida no modo assíncrono junto ao Sefaz, ou seja, o procedimento de análise e liberação da Nota Fiscal em alguns momentos podem variar de segundos a minutos, e nestes casos o status da Nota Fiscal é definida inicialmente como processando
. É necessário aguardar o retorno do Sefaz, antes de enviar o produto ou solicitar a emissão de uma nova Nota Fiscal.
No momento que realizado a emissão da MDF-e, caso tenha informado o parâmetro url_notificacao
, será enviado o retorno no formato POST para a URL especificada. Saiba mais
A Webmania® desenvolveu uma tecnologia exclusiva que trabalha com o ambiente de contingência do Sefaz automaticamente, assim que identificado que as operações do Sefaz se encontram offline.
As notas fiscais são enviadas para os ambientes SVC-RS do Sefaz, para que sejam emitidas com validade legal podendo imprimir o DAMDFE.
No momento que realizado a emissão da Nota Fiscal, caso tenha informado o parâmetro url_notificacao
, será enviado o retorno no formato POST para a URL especificada. Saiba mais
O servidores da Webmania estão localizados na Amazon AWS, líder global em cloud computing, na região us-east-1 (Leste dos EUA) com ponto de presença em sa-east-1 (São Paulo). Manter a sua estrutura perto de algumas das duas localidades, garante um menor tempo de resposta nas requisições na API.
Utilizamos uma infraestrutura na Amazon AWS anycast de alta disponibilidade, o que significa que ao se comunicar com API da Webmania a requisição será redirecionada para o servidor mais próximo da sua localidade. As requisições dos endpoints são gerenciados através de IPs estáticos, caso necessite autorize no firewall a comunicação com os IPs abaixo.
IPs estáticos de entrada:API da Webmania® é protegida por um firewall que identifica de forma automática os acessos indevidos, suspeitos, credenciais incorretas e a localização da requisição, onde também pode limitar solicitações por segundo e o total de requisições para evitar o mal uso da API e a sobrecarga dos servidores. O uso indevido da API pode gerar mensagens de erro 503 ou 403 no retorno do cabeçalho da requisição. Segue abaixo especificações para uma correta integração:
https://webmaniabr.com/api/
ou https://api.webmaniabr.com
retorne 403 Erro Forbidden por engano, por favor, entre em contato para liberarmos o IP do seu servidor.