Guia de Integração Paggo × SAP

Documento de orientação para a integração entre a Paggo e o ERP SAP, descrevendo os dados e operações que precisamos consumir e devolver para suportar Contas a Pagar e Contas a Receber.

Cliente:SAP Conteúdo:Guia de integração Paggo × SAP Atualizado em:Maio/2026

1. Introdução

A Paggo é a camada financeira sobre o ERP do cliente. Lemos os títulos a pagar e a receber, executamos os pagamentos e a emissão de cobranças, e devolvemos as confirmações para o ERP escriturar a movimentação. Este guia descreve, por fluxo, quais dados precisamos consumir e em quais momentos a Paggo escreve de volta no ERP.

Este documento é uma orientação geral, não uma especificação rígida. Os endpoints listados aqui descrevem o modelo de referência que usamos com outros ERPs. O SAP não precisa replicar nome de rota, formato de payload ou estrutura de campo idênticos. O que importa é que existam endpoints análogos, capazes de cobrir os mesmos dados e operações. Se a forma como o SAP expõe esses dados divergir estruturalmente do que está aqui, conseguimos adaptar o lado da Paggo.

A integração cobre dois fluxos:

As listagens de dados-mestre e de títulos devem ser paginadas e suportar sincronização incremental por data de alteração, para que a Paggo não precise reler todo o histórico em cada ciclo. A forma como o ERP expõe paginação e filtros pode seguir o padrão natural do SAP.

Os blocos a seguir estão organizados em três seções: Configuração reúne os dados-mestre comuns aos dois fluxos (empresas, obras, contas-correntes, plano financeiro); Contas a Pagar e Contas a Receber trazem os dados e operações específicos de cada fluxo. Cada endpoint pode ser expandido para ver a tabela de campos esperada na resposta.

2. Configuração

Endpoints somente-leitura usados nos dois fluxos. A Paggo consome estes recursos para descobrir as estruturas (empresa, obra, conta corrente, plano financeiro) e classificar corretamente os lançamentos.

EndpointRecurso
GET /companiesEmpresas
GET /enterprisesEmpreendimentos (Obras)
GET /cost-centersCentros de Custo
GET /checking-accountsContas-correntes
GET /payment-categoriesPlanos Financeiros
GET /payment-typesFormas de pagamento
GET /document-typesTipos de documento
GET/companiesEmpresas

Lista todas as empresas (entidades legais com CNPJ próprio). É o ponto de partida do onboarding; cada empresa é referenciada por todos os demais recursos.

Query params

ParâmetroDescrição
pageNúmero da página (default 1).
pageSizeQuantidade de itens por página.
updatedSinceISO-8601. Retorna apenas registros alterados a partir da data informada.
includeInactiveQuando true, inclui empresas inativas. Default false.

Resposta esperada

CampoDescrição
idIdentificador único da empresa no ERP.
codeCódigo curto da empresa (filial).
taxIdCNPJ formatado XX.XXX.XXX/XXXX-XX.
legalNameRazão social.
tradeNameNome fantasia (pode ser vazio).
address.streetLogradouro da sede.
address.numberNúmero.
address.cityCidade.
address.stateUF (sigla de 2 letras).
address.zipCodeCEP no formato XXXXX-XXX.
activeIndica se a empresa está ativa.
updatedAtTimestamp ISO-8601 da última alteração.
GET/enterprisesEmpreendimentos (Obras)

Estrutura operacional sob cada empresa. No contexto de construtoras, equivale à obra. Cada empreendimento agrupa unidades (apartamentos, salas, lotes) e tem ciclo financeiro próprio.

Query params

ParâmetroDescrição
companyIdFiltra empreendimentos por empresa proprietária.
pageNúmero da página.
pageSizeQuantidade de itens por página.
updatedSinceISO-8601 para sync incremental.

Resposta esperada

CampoDescrição
idIdentificador único do empreendimento.
codeCódigo do empreendimento.
nameNome do empreendimento.
companyIdEmpresa proprietária (referência a /companies).
typeTipo (RESIDENTIAL, COMMERCIAL, etc.).
startDateData de início no formato YYYY-MM-DD.
expectedDeliveryDateData prevista de entrega.
address.cityCidade.
address.stateUF.
totalUnitsTotal de unidades vendáveis no empreendimento.
activeEmpreendimento ativo.
updatedAtTimestamp ISO-8601 da última alteração.
GET/cost-centersCentros de Custo

Unidade de apropriação de despesa. Pode estar vinculada a um empreendimento ou ser corporativa. Toda confirmação de pagamento referencia um centro de custo.

Resposta esperada

CampoDescrição
idIdentificador único do centro de custo.
codeCódigo numérico ou alfanumérico.
nameNome descritivo.
enterpriseIdEmpreendimento vinculado, quando aplicável.
companyIdEmpresa proprietária.
activeCentro de custo ativo.
updatedAtÚltima atualização (ISO-8601).
GET/checking-accountsContas-correntes

Contas bancárias da empresa, usadas como origem de pagamentos (Contas a Pagar) e destino de recebimentos (Contas a Receber). Também é a chave para conciliação por extrato bancário.

Resposta esperada

CampoDescrição
idIdentificador único da conta corrente.
codeCódigo interno da conta.
companyIdEmpresa titular.
bankCodeCódigo FEBRABAN do banco (3 dígitos).
bankNameNome do banco.
agencyAgência (com dígito quando aplicável).
accountNumberNúmero da conta com dígito.
holderTaxIdCNPJ do titular (deve corresponder ao da empresa).
linkedEnterpriseIdsLista de empreendimentos com permissão de uso da conta.
currencyCódigo ISO da moeda (default BRL).
activeConta ativa.
updatedAtÚltima atualização.
O campo holderTaxId é validado contra o CNPJ da empresa antes de qualquer movimentação financeira.
GET/payment-categoriesPlanos Financeiros

Plano de contas e classificação contábil. Cada lançamento financeiro é associado a uma categoria. Estrutura hierárquica (pai/filho).

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo hierárquico (ex.: 3.1.01).
nameNome da categoria.
parentCodeCódigo da categoria-pai (raiz se vazio).
typeEXPENSE (despesa) ou REVENUE (receita).
activeCategoria ativa.
GET/payment-typesFormas de pagamento

Códigos que o SAP reconhece como meio de pagamento (PIX, TED, Boleto, Dinheiro). A Paggo informa o código correto a cada baixa.

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo curto reconhecido pelo ERP (ex.: PIX, TED, BOL).
nameNome legível.
activeTipo ativo.
GET/document-typesTipos de documento

Classificação do documento financeiro (NF, NFS-e, Recibo, Boleto, Contrato). A Paggo encaminha o tipo correspondente a cada baixa.

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo (ex.: NF, BOL, REC).
nameNome legível.
activeTipo ativo.

3. Contas a Pagar

Endpoints exclusivos do fluxo de Contas a Pagar. A Paggo lê fornecedores e títulos abertos do SAP, executa o pagamento, e devolve a confirmação de baixa para o ERP escriturar a movimentação.

EndpointPropósito
GET /suppliersCadastro de fornecedores
GET /suppliers/{id}Detalhe e dados bancários
GET /billsListagem de títulos a pagar
GET /bills/{id}Detalhe do título e parcelas
GET /bills/{id}/attachmentsNF, boleto, comprovantes
POST /bills/{id}/installments/{n}/paymentsConfirmação de baixa
PATCH /bills/{id}/installments/{n}/payments/{paymentId}/notesAtualização de observações
DELETE /bills/{id}/installments/{n}/payments/{paymentId}Estorno
GET/suppliersFornecedores

Cadastro de fornecedores cuja relação financeira a Paggo vai operar. Inclui pessoa física e jurídica.

Query params

ParâmetroDescrição
pageNúmero da página.
pageSizeQuantidade de itens por página.
updatedSinceISO-8601 para sync incremental.
taxIdBusca pontual por CPF ou CNPJ.

Resposta esperada

CampoDescrição
idIdentificador único do fornecedor.
codeCódigo interno.
personTypePF (pessoa física) ou PJ (jurídica).
taxIdCPF ou CNPJ formatado.
legalNameRazão social ou nome completo.
tradeNameNome fantasia.
activeFornecedor ativo.
updatedAtÚltima atualização.
GET/suppliers/{id}Detalhe do fornecedor

Detalhe completo do fornecedor com endereço, contatos e contas bancárias para crédito de pagamentos.

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo interno.
personTypePF ou PJ.
taxIdCPF ou CNPJ.
legalNameRazão social.
tradeNameNome fantasia.
address.streetLogradouro.
address.numberNúmero.
address.cityCidade.
address.stateUF.
address.zipCodeCEP.
contacts.typeTipo do contato (EMAIL ou PHONE).
contacts.valueValor do contato.
bankAccounts.idIdentificador da conta bancária do fornecedor.
bankAccounts.bankCodeCódigo FEBRABAN do banco.
bankAccounts.agencyAgência.
bankAccounts.accountNumberConta com dígito.
bankAccounts.typeCHECKING ou SAVINGS.
bankAccounts.pixKeyChave PIX para crédito.
bankAccounts.pixKeyTypeCPF, CNPJ, EMAIL, PHONE ou EVP.
activeFornecedor ativo.
updatedAtÚltima atualização.
GET/billsTítulos a pagar

Títulos e faturas registrados no ERP. A Paggo consome este endpoint periodicamente para identificar contas a pagar e gerar pacotes de pagamento.

Query params

ParâmetroDescrição
statusopen, partially_paid, paid, cancelled (default open).
dueDateFromVencimento mínimo (ISO-8601).
dueDateToVencimento máximo (ISO-8601).
supplierIdFiltra por fornecedor.
companyIdFiltra por empresa devedora.
enterpriseIdFiltra por empreendimento.
updatedSinceISO-8601 para sync incremental.
pageNúmero da página.
pageSizeQuantidade de itens por página.

Resposta esperada

CampoDescrição
idIdentificador único do título.
codeCódigo interno.
companyIdEmpresa devedora.
supplierIdFornecedor (referência a /suppliers).
enterpriseIdEmpreendimento associado.
costCenterIdCentro de custo.
paymentCategoryIdCategoria financeira (despesa).
documentTypeCodeCódigo do tipo de documento (ex.: NF).
documentNumberNúmero do documento (ex.: número da NF).
issueDateData de emissão.
totalAmountValor total bruto do título.
currencyMoeda (default BRL).
statusopen, partially_paid, paid, cancelled.
notesObservações livres.
installmentsCountQuantidade de parcelas.
updatedAtÚltima atualização.
GET/bills/{id}Detalhe do título

Retorna o título com todas as parcelas. A baixa é feita parcela a parcela.

Resposta esperada

CampoDescrição
idIdentificador do título.
codeCódigo interno.
supplierIdFornecedor.
totalAmountValor total.
statusStatus atual do título.
installments.numberNúmero da parcela (1, 2, 3...).
installments.dueDateVencimento da parcela.
installments.amountValor da parcela.
installments.statusopen, paid, cancelled.
GET/bills/{id}/attachmentsAnexos do título

Recupera arquivos anexados ao título (NF em PDF, boleto, comprovantes). Devolver URLs presigned (expirando em ≥ 30 minutos) para download direto, sem proxy.

Resposta esperada

CampoDescrição
idIdentificador do anexo.
fileNameNome do arquivo.
mimeTypeMIME type (ex.: application/pdf).
sizeBytesTamanho do arquivo em bytes.
downloadUrlURL presigned para download direto.
expiresAtQuando a URL expira (ISO-8601).
POST/bills/{id}/installments/{installmentNumber}/paymentsConfirmação de baixa

Endpoint crítico do fluxo. Após a Paggo executar o pagamento (PIX, TED, boleto), envia ao SAP a confirmação para que o ERP escriture a movimentação financeira.

Headers

Idempotency-Key: {uuid}. Repetições com a mesma chave devem retornar a mesma resposta sem duplicar lançamento.

Request body

CampoDescrição
paymentDateData efetiva do pagamento (YYYY-MM-DD).
paidAmountValor líquido pago.
interestAmountJuros aplicados, quando houver.
fineAmountMulta aplicada, quando houver.
discountAmountDesconto concedido, quando houver.
checkingAccountIdConta corrente de origem do pagamento.
paymentTypeCodeCódigo da forma de pagamento (PIX, TED, etc.).
documentTypeCodeTipo de documento (NF, BOL, REC).
transactionEntryNumberNúmero de lançamento no ERP, se exigido pelo modelo de escrituração.
transactionSequenceNumberSequência do lançamento, se aplicável.
notesObservações livres. A Paggo inclui o link do comprovante.

Resposta

CampoDescrição
paymentIdIdentificador único da baixa criada.
billIdIdentificador do título.
installmentNumberNúmero da parcela liquidada.
settledAtTimestamp da baixa.
remainingBalanceSaldo remanescente do título.
newBillStatusNovo status do título (partially_paid, paid).
PATCH/bills/{id}/installments/{installmentNumber}/payments/{paymentId}/notesAtualização de observações

Após a baixa, eventualmente a Paggo precisa atualizar as observações da movimentação (por exemplo, novo número de comprovante ou retificação).

Request body

CampoDescrição
notesTexto atualizado das observações.

Resposta

CampoDescrição
paymentIdIdentificador da baixa.
updatedAtTimestamp da atualização.
DELETE/bills/{id}/installments/{installmentNumber}/payments/{paymentId}Estorno

Reverte uma baixa. A parcela retorna ao status anterior.

Request body

CampoDescrição
reasonMotivo do estorno (campo livre).

Resposta

CampoDescrição
paymentIdIdentificador da baixa estornada.
reversedAtTimestamp do estorno.
newInstallmentStatusNovo status da parcela (open).

4. Contas a Receber

Endpoints exclusivos do fluxo de Contas a Receber. A Paggo lê do ERP os contratos de venda, parcelas a receber e clientes finais; emite boletos ou PIX para os pagadores; e devolve a baixa quando a parcela é liquidada.

EndpointPropósito
GET /customersPagadores (compradores)
GET /unitsUnidades vendáveis
GET /sales-contractsContratos de venda
GET /sales-contracts/{id}/installmentsParcelas a receber
GET /sales-contracts/{id}/installments/{n}/attachmentsBoleto ou 2ª via
GET /indexersTabelas de correção (INCC, IPCA, IGP-M)
POST /sales-contracts/{id}/installments/{n}/receiptsConfirmação de recebimento
DELETE /sales-contracts/{id}/installments/{n}/receipts/{receiptId}Estorno de recebimento
GET/customersClientes

Pessoas físicas ou jurídicas que assinaram contrato com a empresa, ou seja, os compradores de unidade. Necessário para emissão de boletos no nome correto.

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo interno.
personTypePF ou PJ.
taxIdCPF ou CNPJ formatado.
nameNome completo ou razão social.
emailE-mail principal.
phoneTelefone principal.
address.streetLogradouro.
address.numberNúmero.
address.cityCidade.
address.stateUF.
address.zipCodeCEP.
activeCliente ativo.
updatedAtÚltima atualização.
GET/unitsUnidades

Unidades vendáveis (apartamentos, salas, lotes), vinculadas a um empreendimento. Necessárias para resolver o contexto de cada contrato.

Query params

ParâmetroDescrição
enterpriseIdFiltra unidades de um empreendimento específico.
statusavailable, reserved, sold.
updatedSinceISO-8601 para sync incremental.

Resposta esperada

CampoDescrição
idIdentificador único.
codeCódigo da unidade.
enterpriseIdEmpreendimento ao qual pertence.
blockCodeBloco ou torre.
phaseCodeEtapa ou fase.
areaSqmÁrea em m².
bedroomsNúmero de dormitórios.
statusavailable, reserved, sold.
activeUnidade ativa.
updatedAtÚltima atualização.
GET/sales-contractsContratos de venda

Contrato firmado entre cliente final e a empresa. É a origem das parcelas a receber e inclui referência ao empreendimento, à unidade e ao cliente.

Query params

ParâmetroDescrição
customerIdFiltra contratos de um cliente.
enterpriseIdFiltra contratos de um empreendimento.
unitIdFiltra contratos de uma unidade.
statusStatus do contrato (ex.: ATIVO, DISTRATADO).
updatedSinceISO-8601 para sync incremental.
pageNúmero da página.
pageSizeQuantidade de itens por página.

Resposta esperada

CampoDescrição
idIdentificador único do contrato.
contractCodeCódigo numérico do contrato.
proposalCodeCódigo da proposta originária.
companyIdEmpresa vendedora.
branchCodeCódigo da filial.
branchNameNome da filial.
customerIdCliente comprador.
customerCodeCódigo do cliente no ERP.
customerNameNome do cliente.
personTypePF ou PJ.
cpfCnpjDocumento do cliente.
enterpriseIdEmpreendimento.
enterpriseCodeCódigo numérico do empreendimento.
enterpriseNameNome do empreendimento.
unitIdUnidade vendida.
unitCodeCódigo numérico da unidade.
unitNameDescrição da unidade.
blockCodeBloco ou torre.
phaseCodeEtapa.
contractTypeTipo (VENDA, LOCACAO, etc.).
contractStatusStatus (ATIVO, DISTRATADO, etc.).
contractValueValor total do contrato.
registrationDateData de cadastro.
signatureDateData de assinatura.
deliveryDateData prevista de entrega.
keysDeliveryDateData efetiva de entrega das chaves.
finePercentagePercentual de multa por atraso.
lateInterestPercentagePercentual de juros de mora ao mês.
classificationClassificação interna do contrato.
updatedAtÚltima atualização.
GET/sales-contracts/{id}/installmentsParcelas do contrato

Parcelas a receber, com vencimento, valor original, valor corrigido pelo indexador e juros ou multa quando em atraso. É a base para emissão de boleto ou PIX.

Resposta esperada

CampoDescrição
contractIdIdentificador do contrato.
installmentNumberNúmero da parcela.
conditionCodeCódigo da condição comercial.
seriesCodeCódigo da série da parcela.
installmentTypePeriodicidade (MENSAL, ANUAL, etc.).
installmentStatusABERTA, QUITADA, PARCIAL ou CANCELADA.
statusDateData da última mudança de status.
sequenceSequência amigável (012/240).
dueDateVencimento.
movementDateData do último movimento financeiro.
originalAmountValor original da parcela.
correctedAmountValor corrigido pelo indexador.
fineAmountMulta acumulada.
interestAmountJuros acumulados.
discountAmountDesconto aplicado.
feesAmountTarifas.
delayAmountAcréscimo total por atraso.
paidAmountValor já pago em pagamentos parciais.
settlementDateData da baixa total, se ocorreu.
presentValueValor presente líquido.
ourNumberNosso número do boleto.
boletoDueDateVencimento do boleto.
bankNameBanco emissor do boleto.
agencyAgência.
checkingAccountConta corrente do boleto.
indexerCodeCódigo do indexador (INCC, IPCA, IGPM).
monetaryCorrectionAmountValor de correção monetária acumulado.
GET/sales-contracts/{id}/installments/{installmentNumber}/attachmentsAnexos da parcela

Boleto, comprovante de recebimento ou outros arquivos vinculados à parcela. URLs presigned com expiração mínima de 30 minutos.

Resposta esperada

CampoDescrição
idIdentificador do anexo.
fileNameNome do arquivo.
mimeTypeMIME type.
downloadUrlURL presigned para download direto.
expiresAtQuando a URL expira (ISO-8601).
GET/indexersIndexadores

Tabelas de correção monetária (INCC, IPCA, IGP-M) com valores mensais, usadas para conferir o cálculo de correção das parcelas.

Resposta esperada

CampoDescrição
codeCódigo do indexador (INCC, IPCA, IGPM).
nameNome completo do indexador.
monthlyValues.monthMês de referência no formato YYYY-MM.
monthlyValues.valueFator de correção do mês.
POST/sales-contracts/{id}/installments/{installmentNumber}/receiptsConfirmação de recebimento

Endpoint crítico do fluxo. Quando o pagador quita a parcela (boleto pago, PIX recebido), a Paggo envia ao ERP a baixa para liquidar o título a receber.

Headers

Idempotency-Key: {uuid}. Repetições com a mesma chave devem retornar a mesma resposta sem duplicar lançamento.

Request body

CampoDescrição
paymentDateData do recebimento (YYYY-MM-DD).
paidAmountValor recebido.
interestAmountJuros recebidos, quando houver.
fineAmountMulta recebida, quando houver.
discountAmountDesconto concedido, quando houver.
feesAmountTarifas, quando houver.
checkingAccountIdConta corrente destino.
paymentTypeCodeForma do recebimento (PIX, TED, BOL).
ourNumberNosso número conciliado, quando boleto.
notesObservações. A Paggo inclui o link do comprovante.

Resposta

CampoDescrição
receiptIdIdentificador único da baixa criada.
contractIdIdentificador do contrato.
installmentNumberParcela liquidada.
settledAtTimestamp da baixa.
remainingBalanceSaldo remanescente da parcela.
newInstallmentStatusQUITADA ou PARCIAL.
DELETE/sales-contracts/{id}/installments/{installmentNumber}/receipts/{receiptId}Estorno de recebimento

Reverte a baixa de uma parcela (boleto cancelado, devolução PIX, retorno bancário negativo).

Request body

CampoDescrição
reasonMotivo do estorno (campo livre).

Resposta

CampoDescrição
receiptIdIdentificador estornado.
reversedAtTimestamp do estorno.
newInstallmentStatusNovo status da parcela (ABERTA).