Pular para o conteúdo principal

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.

No cadastro de acessos da agência/unidade (turUnidadesOperacionaisAcesso), definem-se:

  1. 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.
  2. 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.
  3. 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)TipoObrigatoriedadeRegra de Validação e Descrição
TipoDeContribuinteStringObrigatórioTipo de contribuinte do pagador:
• "PF": Pessoa Física (Brasil)
• "PJ": Pessoa Jurídica (Brasil)
• "PE": Pessoa Estrangeira (Exterior)
DocumentoStringObrigatórioNú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).
TipoDeDocumentoStringInformativoDerivado automaticamente do TipoDeContribuinte ("CPF", "CNPJ" ou "PE").
RazaoSocialStringObrigatório se PJRazão social completa da empresa pagadora. Obrigatório se TipoDeContribuinte: "PJ".
NomeStringObrigatório se PF/PEPrimeiro nome do pagador (para pessoa física ou estrangeira).
SobrenomeStringObrigatório se PF/PESobrenome do pagador (para pessoa física ou estrangeira).
InscricaoEstadualStringNãoInscrição Estadual da empresa (ou "ISENTO" caso não possua).
EmailStringRecomendadoE-mail corporativo/pessoal para envio da nota fiscal e recibo de emissão.
TelefoneStringRecomendadoTelefone de contato do pagador com DDD (apenas números).
CodigoPostalStringRecomendadoCEP do endereço fiscal do pagador (8 dígitos, ex: "01310100").
RuaStringRecomendadoLogradouro fiscal (rua, avenida, alameda).
NumeroStringRecomendadoNúmero do imóvel fiscal.
ComplementoStringNãoComplemento (sala, andar, bloco, apto).
BairroStringRecomendadoBairro do endereço fiscal.
CidadeStringRecomendadoNome do município fiscal do pagador (ex: "São Paulo").
EstadoStringRecomendadoSigla da Unidade Federativa com 2 caracteres (ex: "SP", "RJ", "DF").
IBGEMunicipioStringNãoCódigo IBGE do município (7 dígitos, ex: "3550308" para São Paulo).
PaisStringRecomendadoCó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"
    }
    }
  • TipoDeContribuinte invá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 RazaoSocial quando TipoDeContribuinte: "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)​

CampoTipoObrigatórioDescrição
LocalizadorStringSimLocalizador da reserva PNR (ex: "SPRPMK").
TotalParaPagamentoDecimalNãoValor 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)​

CampoTipoDescrição
LocalizadorStringCódigo localizador confirmado.
DataDateTime (ISO-8601)Data e hora do servidor.
VoosArrayLista de trechos da reserva com detalhes dos voos.
ValorDeEmissaoPassageiroArrayDetalhamento de tarifa cheia, taxas de embarque, repasse de terceiros e taxa DU por tipo de passageiro (ADT, CHD, INF).
SumarioObjetoConsolidado financeiro da reserva (TotalTarifa, TotalTaxa, TotalDU, TotalGeral).
ConfiguracoesDeEmissaoObjetoConfigurações técnicas e tributárias do canal de emissão (EmissionSettings). Veja tabela detalhada abaixo.
PassageirosArrayDados cadastrais dos passageiros com eventuais exigências de documentos complementares.
OpcoesDeDocumentoDePassageiroArrayLista de tipos de documentos aceitos para este fornecedor.
PosicaoTokenDeSegurancaStringPosição solicitada do token de segurança quando exigido pela credencial.
PosicaoChaveDeSegurancaStringPosição solicitada da chave de segurança quando exigido.
ExceptionObjeto / nullObjeto de erro.

2.3 Detalhamento Completo de ConfiguracoesDeEmissao (EmissionSettings)​

CampoTipoDescrição
PaymentOptionsArrayFormas de pagamento permitidas (1=Faturado/Depósito, 2=Cartão de Crédito).
PaymentOptionsServiceChargeAmountArrayFormas de pagamento permitidas especificamente para o valor da taxa de serviço (DU).
ModelTributaryInformationObjetoConfiguraçã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.
AllowRAVChangeBooleanSe a agência tem permissão para alterar o valor da taxa RAV.
RAVValueDecimalValor padrão configurado da RAV.
AllowFEEChangeBooleanSe a agência tem permissão para alterar a taxa FEE.
CostCenterSettingsObjetoRegras de preenchimento obrigatório de centro de custo corporativo.
RequireSecurityKeyBooleanSe a credencial exige o envio de SecurityKey no /Emitir.
RequireSecurityTokenBooleanSe a credencial exige o envio de SecurityToken no /Emitir.
TourcodeConfigurationsObjetoRegras e códigos de Tour Code permitidos.
FoidMandatoryBooleanSe a companhia aérea exige número de documento do passageiro (FOID) para emitir.
RequiresUserAgreementToRetarifyMaskCCBooleanSe exige flag de consentimento caso a máscara tarifária tenha sofrido alteração de valor.
BusinessUnitsArrayUnidades de negócio disponíveis para vinculação da emissão.
ValuesChangedBooleanIndica se houve variação cambial ou re-tarifação recente na reserva.
SecurityTokenConfigurationObjetoDados do desafio do token de segurança (AuthorizationKey, TokenPosition, etc.).
CreditCardsAvailableArrayRelaçã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)​

CampoTipoObrigatórioDescrição
LocalizadorStringCondicionalLocalizador da reserva existente.
TotalParaPagamentoDecimalNãoValor total a financiar.
PagamentoObjetoSimDados do cartão a simular.
Pagamento.CartaoDeCredito.BandeiraIntegerSimCódigo numérico da bandeira (1=Amex, 2=Diners, 3=Hipercard, 4=Mastercard, 5=Visa, 6=Elo, 8=UATP).
Pagamento.CartaoDeCredito.TipoStringNãoClassificação: "N" (Nacional), "NI" (Internacional emitido no Brasil), "I" (Internacional exterior), "C" (Corporativo).
SemLocalizadorObjetoCondicionalSimulaçã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)​

CampoTipoObrigatórioDescrição
LocalizadorStringSimCódigo localizador PNR da reserva a ser emitida.
PagamentoObjetoSimEstrutura financeira principal.
Pagamento.FormaDePagamentoIntegerSim1: Faturado / Depósito / Conta Corrente.
2: Cartão de Crédito.
Pagamento.FormaDePagamentoTipoIntegerNãoSubtipo da forma de pagamento.
Pagamento.ValorFaturadoDecimalSe FaturadoValor a faturar na conta corrente da agência.
Pagamento.RequisicaoStringNãoNúmero da ordem de compra ou requisição corporativa.
Pagamento.CartaoDeCreditoObjetoSe CartãoEstrutura completa do cartão de crédito (veja seção 4.2).
Pagamento.PagadorObjetoCondicionalObrigatório quando InformacaoTributariaObrigatoria: true e Model: "Pagador01". Contém a lista InformacoesTributarias (veja seção 1.2).
CobrancaDeServicoObjetoNãoObjeto para controle de cobrança de taxa de serviço (DU) da agência (Status, Localizador).
TourCodeIntegerNãoCódigo de Tour Code da companhia aérea.
TourCodeManualStringNãoTour Code informado manualmente.
TourCodeManualComissaoDecimalNãoComissão acordada para o Tour Code manual.
CentroDeCustoObjetoNãoCentro de custo corporativo (Codigo, Descricao).
SolicitanteStringNãoNome do solicitante da compra.
DepartamentoStringNãoDepartamento da empresa solicitante.
MatriculaStringNãoMatrícula corporativa do passageiro/solicitante.
ChaveDeSegurancaStringCondicionalChave de segurança quando exigido por RequireSecurityKey.
TokenDeSegurancaStringCondicionalToken de autenticação quando exigido por RequireSecurityToken.
ValidarAnaliseRiscoBooleanNãoHabilita validação antifraude prévia.
DadosCorporativosArrayNãoCampos corporativos flexíveis adicionais (Campo, Valor, Tipo).

4.2 Estrutura Completa de CartaoDeCredito​

Quando Pagamento.FormaDePagamento: 2, todos os campos abaixo devem ser informados:

CampoTipoObrigatórioDescrição
NumeroStringSimNúmero do cartão (apenas dígitos, sem espaços ou máscaras).
ValidadeStringSimData de expiração no formato "MM/AAAA" ou "MM/AA" (ex: "10/2028").
CodigoDeSegurancaStringSimCódigo de segurança (CVV/CVC, 3 dígitos ou 4 para Amex).
TitularNomeStringSimNome do titular exatamente como gravado no cartão de crédito (ASCII maiúsculo).
TitularCPFStringSimCPF do titular do cartão (11 dígitos numéricos).
TitularNascimentoDateTimeNãoData de nascimento do titular ("AAAA-MM-DD").
TitularEmailStringNãoE-mail do titular do cartão para prevenção a fraude.
TitularTelefoneStringNãoTelefone com DDD do titular do cartão.
BandeiraIntegerSimCódigo da bandeira: 1=Amex, 2=Diners, 3=Hipercard, 4=Mastercard, 5=Visa, 6=Elo, 8=UATP.
TipoStringNão"N" (Nacional), "NI" (Internacional BR), "I" (Internacional exterior), "C" (Corporativo).
ParcelasIntegerSimQuantidade de parcelas autorizadas (1 para à vista).
FinanciamentoIdIntegerNãoID do financiamento retornado na consulta de financiamento.
TitularEnderecoObjetoRecomendadoEndereç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)​

CampoTipoDescrição
BilhetesArrayLista de bilhetes eletrônicos emitidos (BilheteItemDto).
Bilhetes[].NumeroStringNúmero do e-ticket (13 ou 14 dígitos, ex: "1272300474580").
Bilhetes[].PassageiroStringNome do passageiro vinculado ao bilhete.
Bilhetes[].PaxRefStringReferência numérica do passageiro na reserva ("1", "2", etc.).
Bilhetes[].StatusStringStatus do bilhete (normalmente "Ativo").
Bilhetes[].BilheteDoInfantilBooleanSe o bilhete pertence a um bebê de colo (INF).
Bilhetes[].DataDeEmissaoDateTimeData/hora em que a bilhetagem foi concluída.
Bilhetes[].BilhetesAdicionaisArrayBilhetes conjugados (conjunction tickets) quando há mais de 4 segmentos.
EMDsArrayDocumentos eletrônicos de serviços adicionais (bagagem, assento conforto).
CobrancaDeServicoObjetoComprovante de emissão da taxa de serviço da agência (Localizador, Status).
CodigoDeAutorizacaoStringCódigo de autorização retornado pela adquirente de cartão de crédito.
EmissaoEmProcessoDeFilaNoFornecedorBooleanSe 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.
NivelAnaliseDeRiscoString / nullRetorno do score da análise de risco antifraude.
AlertasArrayAvisos operacionais da companhia aérea.
ExceptionObjeto / nullErro 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)​

CampoTipoObrigatórioDescrição
EticketStringSimNúmero do bilhete eletrônico de 13/14 dígitos (ex: "1272300474580").
SistemaIntegerNãoCódigo do conector/fornecedor (0 para busca automática).
ServicoWoobaBooleanNãoFlag para uso interno.

6. Cancelar e-Ticket (/CancelarEticket - Void)​

  • Método: POST
  • Rota: /api/V2/Voos/CancelarEticket

Parâmetros da Requisição (CancelarEticketRQ)​

CampoTipoObrigatórioDescrição
EticketStringCondicionalNúmero de um único e-ticket a ser cancelado no mesmo dia da emissão (void).
EticketsArray[String]CondicionalLista com múltiplos números de bilhetes para cancelamento em lote.
CancelarReservaBooleanNãoSe true, cancela também os trechos do PNR no mesmo comando.
MotivoStringNãoJustificativa do cancelamento para fins de auditoria.
ChaveDeSegurancaStringNãoChave de segurança quando exigido pela credencial.