Emissão de Bilhetes (Ticketing), Formas de Pagamento e Dados Fiscais/Tributários
A etapa de emissão processa as instruções financeiras (cartão de crédito, faturado em conta corrente, split de taxa de serviço de agência DU) e submete a ordem definitiva de bilhetagem ao GDS ou companhia aérea para gerar os bilhetes eletrônicos (e-tickets) e eventuais cupons de serviços adicionais (EMDs).
Ciclo de Vida da Emissão
1. Regra de Informações Tributárias e Fiscais do Pagador (Baseada em Configuração)
A exigência de documentos fiscais e tributários não é arbitrária: ela depende da parametrização contratual da agência/unidade operacional no Travellink e das regras homologadas por cada companhia aérea ou GDS.
1.1 Como a Regra é Parametrizada no Travellink
No cadastro de acessos da agência/unidade (turUnidadesOperacionaisAcesso), definem-se:
HabilitarInformacaoTributaria:Opcional(ou desabilitado): O envio é facultativo.Obrigatorio: A API bloqueia a emissão caso os dados tributários não sejam enviados ou contenham inconsistências.
InformacaoTributariaModelo:Pagador01(Modelo Pagador Brasil): Exigido para companhias aéreas com emissão direta via NDC ou API própria no Brasil (NDC LATAM, Azul, Gol). Os dados fiscais pertencem à entidade pagadora da venda (empresa contratante ou comprador individual).Passageiro01(Modelo Viajante GDS): Aplicável a sistemas de distribuição global (Amadeus, Sabre, Galileo). Os dados fiscais (CPF, passaporte ou ID local) são associados individualmente a cada passageiro no PNR.
FonteDosDados:Pagador(1): Coletado no momento da emissão pela agência integradora via payload.Contratante(2): Herdado do cadastro da empresa contratante corporativa.Unidade(3): Herdado dos dados da unidade operacional da agência.Agência(4): Herdado dos dados da matriz da agência.
1.2 Catálogo Completo de Campos do Pagador (Pagador01 - Modelo Brasil)
Quando o modelo retornado for Pagador01, os dados tributários devem ser transmitidos dentro de Pagamento.Pagador.InformacoesTributarias como uma lista de objetos contendo Key (ou Chave) e Value (ou Valor).
Abaixo está o catálogo exaustivo com todos os 18 campos suportados:
Campo (Key) | Tipo | Obrigatoriedade | Regra de Validação e Descrição |
|---|---|---|---|
TipoDeContribuinte | String | Obrigatório | Tipo de contribuinte do pagador: • "PF": Pessoa Física (Brasil)• "PJ": Pessoa Jurídica (Brasil)• "PE": Pessoa Estrangeira (Exterior) |
Documento | String | Obrigatório | Número do documento fiscal sem pontuação: • Para "PF": CPF válido com 11 dígitos.• Para "PJ": CNPJ válido com 14 dígitos.• Para "PE": Documento de identificação estrangeiro (máximo 30 caracteres). |
TipoDeDocumento | String | Informativo | Derivado automaticamente do TipoDeContribuinte ("CPF", "CNPJ" ou "PE"). |
RazaoSocial | String | Obrigatório se PJ | Razão social completa da empresa pagadora. Obrigatório se TipoDeContribuinte: "PJ". |
Nome | String | Obrigatório se PF/PE | Primeiro nome do pagador (para pessoa física ou estrangeira). |
Sobrenome | String | Obrigatório se PF/PE | Sobrenome do pagador (para pessoa física ou estrangeira). |
InscricaoEstadual | String | Não | Inscrição Estadual da empresa (ou "ISENTO" caso não possua). |
Email | String | Recomendado | E-mail corporativo/pessoal para envio da nota fiscal e recibo de emissão. |
Telefone | String | Recomendado | Telefone de contato do pagador com DDD (apenas números). |
CodigoPostal | String | Recomendado | CEP do endereço fiscal do pagador (8 dígitos, ex: "01310100"). |
Rua | String | Recomendado | Logradouro fiscal (rua, avenida, alameda). |
Numero | String | Recomendado | Número do imóvel fiscal. |
Complemento | String | Não | Complemento (sala, andar, bloco, apto). |
Bairro | String | Recomendado | Bairro do endereço fiscal. |
Cidade | String | Recomendado | Nome do município fiscal do pagador (ex: "São Paulo"). |
Estado | String | Recomendado | Sigla da Unidade Federativa com 2 caracteres (ex: "SP", "RJ", "DF"). |
IBGEMunicipio | String | Não | Código IBGE do município (7 dígitos, ex: "3550308" para São Paulo). |
Pais | String | Recomendado | Código ISO ou nome do país. Padrão: "BR". |
1.3 Mensagens de Validação e Erro no Motor de Emissão
Caso a agência tenha a configuração HabilitarInformacaoTributaria = Obrigatorio ativada e o payload viole alguma regra, a API retornará HTTP 200 com o objeto Exception preenchido com as seguintes mensagens literais do motor:
- Ausência total de dados tributários:
{"Exception": {"Codigo": 1,"Message": "AIR - Obrigatório: Informação Tributária"}}
- Ausência do campo
TipoDeContribuinte:{"Exception": {"Codigo": 1,"Message": "AIR - Informação Tributária - Obrigatório: TipoDeContribuinte"}} TipoDeContribuinteinválido (diferente de PF, PJ ou PE):{"Exception": {"Codigo": 1,"Message": "AIR - Informação Tributária - TipoDeContribuinte inválida: XX"}}- Ausência do campo
Documento(CPF/CNPJ):{"Exception": {"Codigo": 1,"Message": "AIR - Informação Tributária - Obrigatório: Documento"}} - Ausência de
RazaoSocialquandoTipoDeContribuinte: "PJ":{"Exception": {"Codigo": 1,"Message": "AIR - Informação Tributária - Obrigatório: RazaoSocial"}}
2. Iniciar Emissão (/IniciarEmissao)
Executa a pré-checagem técnica e financeira da reserva antes do faturamento definitivo. Retorna o detalhamento das regras exigidas pelo fornecedor (EmissionSettings), prazos de bilhetagem e valores finais discriminados.
- Método:
POST - Rota:
/api/V2/Voos/IniciarEmissao
2.1 Parâmetros da Requisição (IniciarEmissaoRQ)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Localizador | String | Sim | Localizador da reserva PNR (ex: "SPRPMK"). |
TotalParaPagamento | Decimal | Não | Valor total esperado para verificação de integridade financeira antes da emissão. |
Exemplo de Requisição
{
"Localizador": "SPRPMK",
"TotalParaPagamento": 902.03
}
2.2 Estrutura da Resposta (IniciarEmissaoRS)
| Campo | Tipo | Descrição |
|---|---|---|
Localizador | String | Código localizador confirmado. |
Data | DateTime (ISO-8601) | Data e hora do servidor. |
Voos | Array | Lista de trechos da reserva com detalhes dos voos. |
ValorDeEmissaoPassageiro | Array | Detalhamento de tarifa cheia, taxas de embarque, repasse de terceiros e taxa DU por tipo de passageiro (ADT, CHD, INF). |
Sumario | Objeto | Consolidado financeiro da reserva (TotalTarifa, TotalTaxa, TotalDU, TotalGeral). |
ConfiguracoesDeEmissao | Objeto | Configurações técnicas e tributárias do canal de emissão (EmissionSettings). Veja tabela detalhada abaixo. |
Passageiros | Array | Dados cadastrais dos passageiros com eventuais exigências de documentos complementares. |
OpcoesDeDocumentoDePassageiro | Array | Lista de tipos de documentos aceitos para este fornecedor. |
PosicaoTokenDeSeguranca | String | Posição solicitada do token de segurança quando exigido pela credencial. |
PosicaoChaveDeSeguranca | String | Posição solicitada da chave de segurança quando exigido. |
Exception | Objeto / null | Objeto de erro. |
2.3 Detalhamento Completo de ConfiguracoesDeEmissao (EmissionSettings)
| Campo | Tipo | Descrição |
|---|---|---|
PaymentOptions | Array | Formas de pagamento permitidas (1=Faturado/Depósito, 2=Cartão de Crédito). |
PaymentOptionsServiceChargeAmount | Array | Formas de pagamento permitidas especificamente para o valor da taxa de serviço (DU). |
ModelTributaryInformation | Objeto | Configuração da Informação Tributária do canal: • RequiredPayer (Boolean): Se o pagador exige dados tributários.• RequiredPassenger (Boolean): Se cada viajante exige dados tributários.• Model (String): Modelo configurado ("Pagador01" ou "Passageiro01").• InformacaoTributariaObrigatoria (Boolean): Se o preenchimento é obrigatório para emissão. |
AllowRAVChange | Boolean | Se a agência tem permissão para alterar o valor da taxa RAV. |
RAVValue | Decimal | Valor padrão configurado da RAV. |
AllowFEEChange | Boolean | Se a agência tem permissão para alterar a taxa FEE. |
CostCenterSettings | Objeto | Regras de preenchimento obrigatório de centro de custo corporativo. |
RequireSecurityKey | Boolean | Se a credencial exige o envio de SecurityKey no /Emitir. |
RequireSecurityToken | Boolean | Se a credencial exige o envio de SecurityToken no /Emitir. |
TourcodeConfigurations | Objeto | Regras e códigos de Tour Code permitidos. |
FoidMandatory | Boolean | Se a companhia aérea exige número de documento do passageiro (FOID) para emitir. |
RequiresUserAgreementToRetarifyMaskCC | Boolean | Se exige flag de consentimento caso a máscara tarifária tenha sofrido alteração de valor. |
BusinessUnits | Array | Unidades de negócio disponíveis para vinculação da emissão. |
ValuesChanged | Boolean | Indica se houve variação cambial ou re-tarifação recente na reserva. |
SecurityTokenConfiguration | Objeto | Dados do desafio do token de segurança (AuthorizationKey, TokenPosition, etc.). |
CreditCardsAvailable | Array | Relação de cartões corporativos/virtuais cadastrados na conta da agência. |
Exemplo de Resposta de /IniciarEmissao
{
"Localizador": "SPRPMK",
"Data": "2026-10-15T15:00:00",
"Sumario": {
"TotalTarifa": 756.80,
"TotalTaxa": 69.55,
"TotalDU": 75.68,
"TotalGeral": 902.03
},
"ConfiguracoesDeEmissao": {
"PaymentOptions": [
{ "Id": 1, "Descricao": "Faturado / Conta Corrente" },
{ "Id": 2, "Descricao": "Cartao de Credito" }
],
"ModelTributaryInformation": {
"RequiredPayer": true,
"RequiredPassenger": false,
"Model": "Pagador01",
"InformacaoTributariaObrigatoria": true
},
"FoidMandatory": false,
"RequireSecurityKey": false,
"RequireSecurityToken": false
},
"Exception": null
}
3. Recuperar Formas de Financiamento (/RecuperarFormasDeFinanciamento)
Consulta os planos de parcelamento autorizados pela companhia aérea ou consolidadora para determinada bandeira de cartão de crédito.
- Método:
POST - Rota:
/api/V2/Voos/RecuperarFormasDeFinanciamento
3.1 Parâmetros da Requisição (RecuperarFinanciamentosRQ)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Localizador | String | Condicional | Localizador da reserva existente. |
TotalParaPagamento | Decimal | Não | Valor total a financiar. |
Pagamento | Objeto | Sim | Dados do cartão a simular. |
Pagamento.CartaoDeCredito.Bandeira | Integer | Sim | Código numérico da bandeira (1=Amex, 2=Diners, 3=Hipercard, 4=Mastercard, 5=Visa, 6=Elo, 8=UATP). |
Pagamento.CartaoDeCredito.Tipo | String | Não | Classificação: "N" (Nacional), "NI" (Internacional emitido no Brasil), "I" (Internacional exterior), "C" (Corporativo). |
SemLocalizador | Objeto | Condicional | Simulação prévia à reserva informando TotalTarifa, TotalTaxas, TotalTaxaDU e TripIdentificationList. |
4. Emitir Bilhetes (/Emitir)
Efetiva a cobrança e gera os e-tickets e EMDs no fornecedor.
- Método:
POST - Rota:
/api/V2/Voos/Emitir
4.1 Parâmetros da Requisição (EmitirRQ)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Localizador | String | Sim | Código localizador PNR da reserva a ser emitida. |
Pagamento | Objeto | Sim | Estrutura financeira principal. |
Pagamento.FormaDePagamento | Integer | Sim | 1: Faturado / Depósito / Conta Corrente.2: Cartão de Crédito. |
Pagamento.FormaDePagamentoTipo | Integer | Não | Subtipo da forma de pagamento. |
Pagamento.ValorFaturado | Decimal | Se Faturado | Valor a faturar na conta corrente da agência. |
Pagamento.Requisicao | String | Não | Número da ordem de compra ou requisição corporativa. |
Pagamento.CartaoDeCredito | Objeto | Se Cartão | Estrutura completa do cartão de crédito (veja seção 4.2). |
Pagamento.Pagador | Objeto | Condicional | Obrigatório quando InformacaoTributariaObrigatoria: true e Model: "Pagador01". Contém a lista InformacoesTributarias (veja seção 1.2). |
CobrancaDeServico | Objeto | Não | Objeto para controle de cobrança de taxa de serviço (DU) da agência (Status, Localizador). |
TourCode | Integer | Não | Código de Tour Code da companhia aérea. |
TourCodeManual | String | Não | Tour Code informado manualmente. |
TourCodeManualComissao | Decimal | Não | Comissão acordada para o Tour Code manual. |
CentroDeCusto | Objeto | Não | Centro de custo corporativo (Codigo, Descricao). |
Solicitante | String | Não | Nome do solicitante da compra. |
Departamento | String | Não | Departamento da empresa solicitante. |
Matricula | String | Não | Matrícula corporativa do passageiro/solicitante. |
ChaveDeSeguranca | String | Condicional | Chave de segurança quando exigido por RequireSecurityKey. |
TokenDeSeguranca | String | Condicional | Token de autenticação quando exigido por RequireSecurityToken. |
ValidarAnaliseRisco | Boolean | Não | Habilita validação antifraude prévia. |
DadosCorporativos | Array | Não | Campos corporativos flexíveis adicionais (Campo, Valor, Tipo). |
4.2 Estrutura Completa de CartaoDeCredito
Quando Pagamento.FormaDePagamento: 2, todos os campos abaixo devem ser informados:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Numero | String | Sim | Número do cartão (apenas dígitos, sem espaços ou máscaras). |
Validade | String | Sim | Data de expiração no formato "MM/AAAA" ou "MM/AA" (ex: "10/2028"). |
CodigoDeSeguranca | String | Sim | Código de segurança (CVV/CVC, 3 dígitos ou 4 para Amex). |
TitularNome | String | Sim | Nome do titular exatamente como gravado no cartão de crédito (ASCII maiúsculo). |
TitularCPF | String | Sim | CPF do titular do cartão (11 dígitos numéricos). |
TitularNascimento | DateTime | Não | Data de nascimento do titular ("AAAA-MM-DD"). |
TitularEmail | String | Não | E-mail do titular do cartão para prevenção a fraude. |
TitularTelefone | String | Não | Telefone com DDD do titular do cartão. |
Bandeira | Integer | Sim | Código da bandeira: 1=Amex, 2=Diners, 3=Hipercard, 4=Mastercard, 5=Visa, 6=Elo, 8=UATP. |
Tipo | String | Não | "N" (Nacional), "NI" (Internacional BR), "I" (Internacional exterior), "C" (Corporativo). |
Parcelas | Integer | Sim | Quantidade de parcelas autorizadas (1 para à vista). |
FinanciamentoId | Integer | Não | ID do financiamento retornado na consulta de financiamento. |
TitularEndereco | Objeto | Recomendado | Endereço de fatura (billing address): • Endereco: Logradouro e número.• Cidade: Município.• Pais: País (ex: "BR" ou "Brasil").• CEP: Código postal (apenas números). |
4.3 Exemplos Reais de Requisição (/Emitir)
Exemplo A: Emissão Faturada com Documentos Tributários de Pessoa Jurídica (PJ)
{
"Localizador": "SPRPMK",
"Pagamento": {
"FormaDePagamento": 1,
"ValorFaturado": 902.03,
"Requisicao": "PO-2026-99881",
"Pagador": {
"InformacoesTributarias": [
{ "Key": "TipoDeContribuinte", "Value": "PJ" },
{ "Key": "Documento", "Value": "04288966000185" },
{ "Key": "RazaoSocial", "Value": "AGENCIA DE TURISMO PARCEIRA LTDA" },
{ "Key": "InscricaoEstadual", "Value": "ISENTO" },
{ "Key": "Email", "Value": "financeiro@agenciaparceira.com.br" },
{ "Key": "Telefone", "Value": "1133334444" },
{ "Key": "CodigoPostal", "Value": "01310100" },
{ "Key": "Rua", "Value": "Avenida Paulista" },
{ "Key": "Numero", "Value": "1000" },
{ "Key": "Complemento", "Value": "Conjunto 501" },
{ "Key": "Bairro", "Value": "Bela Vista" },
{ "Key": "Cidade", "Value": "São Paulo" },
{ "Key": "Estado", "Value": "SP" },
{ "Key": "IBGEMunicipio", "Value": "3550308" },
{ "Key": "Pais", "Value": "BR" }
]
}
}
}
Exemplo B: Emissão via Cartão de Crédito com Documentos Tributários de Pessoa Física (PF) e Billing Address
{
"Localizador": "SPRPMK",
"Pagamento": {
"FormaDePagamento": 2,
"CartaoDeCredito": {
"Bandeira": 4,
"Tipo": "N",
"Numero": "5412345678901234",
"Validade": "10/2028",
"CodigoDeSeguranca": "888",
"TitularNome": "JOSE SILVA",
"TitularCPF": "12345678901",
"TitularNascimento": "1980-05-20T00:00:00",
"TitularEmail": "jose.silva@empresa.com.br",
"TitularTelefone": "11987654321",
"Parcelas": 3,
"FinanciamentoId": 2,
"TitularEndereco": {
"Endereco": "Avenida Paulista, 1000 apto 42",
"Cidade": "São Paulo",
"Pais": "Brasil",
"CEP": "01310100"
}
},
"Pagador": {
"InformacoesTributarias": [
{ "Key": "TipoDeContribuinte", "Value": "PF" },
{ "Key": "Documento", "Value": "12345678901" },
{ "Key": "Nome", "Value": "JOSE" },
{ "Key": "Sobrenome", "Value": "SILVA" },
{ "Key": "Email", "Value": "jose.silva@empresa.com.br" },
{ "Key": "Telefone", "Value": "11987654321" },
{ "Key": "CodigoPostal", "Value": "01310100" },
{ "Key": "Rua", "Value": "Avenida Paulista" },
{ "Key": "Numero", "Value": "1000" },
{ "Key": "Bairro", "Value": "Bela Vista" },
{ "Key": "Cidade", "Value": "São Paulo" },
{ "Key": "Estado", "Value": "SP" },
{ "Key": "Pais", "Value": "BR" }
]
}
},
"CobrancaDeServico": {
"Status": "Confirmado"
}
}
4.4 Estrutura da Resposta (EmitirRS)
| Campo | Tipo | Descrição |
|---|---|---|
Bilhetes | Array | Lista de bilhetes eletrônicos emitidos (BilheteItemDto). |
Bilhetes[].Numero | String | Número do e-ticket (13 ou 14 dígitos, ex: "1272300474580"). |
Bilhetes[].Passageiro | String | Nome do passageiro vinculado ao bilhete. |
Bilhetes[].PaxRef | String | Referência numérica do passageiro na reserva ("1", "2", etc.). |
Bilhetes[].Status | String | Status do bilhete (normalmente "Ativo"). |
Bilhetes[].BilheteDoInfantil | Boolean | Se o bilhete pertence a um bebê de colo (INF). |
Bilhetes[].DataDeEmissao | DateTime | Data/hora em que a bilhetagem foi concluída. |
Bilhetes[].BilhetesAdicionais | Array | Bilhetes conjugados (conjunction tickets) quando há mais de 4 segmentos. |
EMDs | Array | Documentos eletrônicos de serviços adicionais (bagagem, assento conforto). |
CobrancaDeServico | Objeto | Comprovante de emissão da taxa de serviço da agência (Localizador, Status). |
CodigoDeAutorizacao | String | Código de autorização retornado pela adquirente de cartão de crédito. |
EmissaoEmProcessoDeFilaNoFornecedor | Boolean | Se true, a companhia aérea recebeu a instrução mas o bilhete está sendo processado em fila assíncrona. Deve-se consultar o status via /ConsultarEticket após alguns instantes. |
NivelAnaliseDeRisco | String / null | Retorno do score da análise de risco antifraude. |
Alertas | Array | Avisos operacionais da companhia aérea. |
Exception | Objeto / null | Erro negocial retornado pelo fornecedor. |
Exemplo de Resposta de Emissão
{
"Data": "2026-10-15T15:35:12",
"Bilhetes": [
{
"Id": 0,
"Numero": "1272300474580",
"Passageiro": "JOSE SILVA",
"PaxRef": "1",
"Status": "Ativo",
"BilheteDoInfantil": false,
"DataDeEmissao": "2026-10-15T15:35:01",
"BilhetesAdicionais": null,
"DadosCorporativos": []
}
],
"EMDs": [],
"CobrancaDeServico": {
"Localizador": "0001007232",
"Status": "Confirmado"
},
"CodigoDeAutorizacao": "AUTH98741",
"EmissaoEmProcessoDeFilaNoFornecedor": false,
"NivelAnaliseDeRisco": "Aprovado",
"Alertas": null,
"Exception": null
}
5. Consultar e-Ticket (/ConsultarEticket)
- Método:
POST - Rota:
/api/V2/Voos/ConsultarEticket
Parâmetros da Requisição (ConsultarEticketRQ)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Eticket | String | Sim | Número do bilhete eletrônico de 13/14 dígitos (ex: "1272300474580"). |
Sistema | Integer | Não | Código do conector/fornecedor (0 para busca automática). |
ServicoWooba | Boolean | Não | Flag para uso interno. |
6. Cancelar e-Ticket (/CancelarEticket - Void)
- Método:
POST - Rota:
/api/V2/Voos/CancelarEticket
Parâmetros da Requisição (CancelarEticketRQ)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Eticket | String | Condicional | Número de um único e-ticket a ser cancelado no mesmo dia da emissão (void). |
Etickets | Array[String] | Condicional | Lista com múltiplos números de bilhetes para cancelamento em lote. |
CancelarReserva | Boolean | Não | Se true, cancela também os trechos do PNR no mesmo comando. |
Motivo | String | Não | Justificativa do cancelamento para fins de auditoria. |
ChaveDeSeguranca | String | Não | Chave de segurança quando exigido pela credencial. |