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 cadastros 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 cadastros 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 /projectsEmpreendimentos (Obras)
GET /cost-centersCentros de Custo
GET /banking-accountsContas-correntes
GET /financial-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.
nameRazão social ou denominação.
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/projectsEmpreendimentos (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.
projectIdEmpreendimento vinculado, quando aplicável.
companyIdEmpresa proprietária.
activeCentro de custo ativo.
updatedAtÚltima atualização (ISO-8601).
GET/banking-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.
accountNameNome legível da conta (descrição usada pelo financeiro).
accountNumberNúmero da conta com dígito.
bankNumberCódigo FEBRABAN do banco (3 dígitos).
bankNameNome do banco.
agencyNumberNúmero da agência com dígito.
agencyNameNome da agência (quando aplicável).
typeINTERNAL (própria da empresa) ou EXTERNAL (de terceiros usada para conciliação).
activeConta ativa.
updatedAtÚltima atualização.
GET/financial-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
GET /bills/{id}/installments/{n}/allocationsRateio da parcela por categoria, centro de custo e empreendimento
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.
nameRazã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.
nameRazão social ou denominação.
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.bankNumberCódigo FEBRABAN do banco.
bankAccounts.agencyNumberAgência com dígito.
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.
projectIdFiltra 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 no ERP.
billIdCódigo/numeração interna do título no ERP (legível pelo financeiro).
companyIdEmpresa devedora.
supplierIdFornecedor (referência a /suppliers).
documentTypeCodeCódigo do tipo de documento (ex.: NF).
documentNumberNúmero do documento (ex.: número da NF).
documentAccessKeyChave de acesso da NF-e (44 dígitos), quando aplicável.
documentAmountValor total do documento original (NF). Pode diferir da soma das parcelas em caso de retenções.
documentIssuedDateData de emissão do documento (NF).
issueDateData de entrada do título no ERP (pode diferir de documentIssuedDate).
totalInstallmentsQuantidade total de parcelas.
notesObservações livres.
statusopen, partially_paid, paid, cancelled.
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.
billIdCódigo/numeração interna do título.
supplierIdFornecedor.
statusStatus atual do título.
installments.installmentNumberNúmero da parcela (1, 2, 3...).
installments.dueDateVencimento da parcela.
installments.grossAmountValor bruto da parcela (antes de retenções e descontos).
installments.netAmountValor líquido a pagar (após retenções e descontos).
installments.discountAmountDesconto aplicado.
installments.taxAmountTotal de impostos retidos sobre a parcela.
installments.documentDueDateVencimento do documento (pode diferir do vencimento financeiro).
installments.paymentConfirmationDateData de confirmação do pagamento, se já liquidada.
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).
GET/bills/{id}/installments/{installmentNumber}/allocationsRateio da parcela

Distribuição da parcela por categoria financeira, centro de custo e empreendimento, com percentuais de rateio. Universal em ERPs de construção: um título pode ser dividido entre vários projetos, centros de custo e contas contábeis. A Paggo usa esses percentuais para escriturar a baixa na proporção correta.

Resposta esperada

CampoDescrição
idIdentificador único do rateio.
projectIdEmpreendimento (referência a /projects).
costCenterIdCentro de custo (referência a /cost-centers).
financialCategoryIdCategoria financeira (referência a /financial-categories).
ratePercentual do rateio (0 a 100). A soma dos rateios de uma parcela deve totalizar 100%.
descriptionDescrição livre do rateio (opcional).
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.
bankingAccountIdConta corrente de origem do pagamento.
paymentTypeCodeCódigo da forma de pagamento (PIX, TED, etc.).
documentTypeCodeTipo de documento (NF, BOL, REC).
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 /counterpartiesPagadores (compradores)
GET /buildingsEmpreendimentos imobiliários (blocos/torres dentro do empreendimento)
GET /unitsUnidades vendáveis
GET /contractsContratos de venda
GET /contracts/{id}/installmentsParcelas a receber
GET /contracts/{id}/installments/{n}/attachmentsBoleto ou 2ª via
GET /indexersTabelas de correção (INCC, IPCA, IGP-M)
POST /contracts/{id}/installments/{n}/receiptsConfirmação de recebimento
DELETE /contracts/{id}/installments/{n}/receipts/{receiptId}Estorno de recebimento
GET/counterpartiesClientes

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.
nameNome completo ou razão social.
taxIdCPF ou CNPJ formatado.
emailsLista de e-mails do cliente (um cliente pode ter múltiplos contatos).
phonesLista de telefones do cliente.
address.streetLogradouro.
address.numberNúmero.
address.complementComplemento (apto, bloco, sala).
address.neighborhoodBairro.
address.cityCidade.
address.stateUF.
address.zipCodeCEP.
activeCliente ativo.
updatedAtÚltima atualização.
GET/buildingsEmpreendimentos imobiliários

Bloco ou torre dentro de um empreendimento (no contexto imobiliário, "edifício"). Funciona como camada intermediária entre o empreendimento financeiro (/projects) e as unidades vendáveis. Necessário para que cada unidade tenha referência ao bloco onde está localizada.

Query params

ParâmetroDescrição
projectIdFiltra blocos de um empreendimento específico.
updatedSinceISO-8601 para sync incremental.
pageNúmero da página.
pageSizeQuantidade de itens por página.

Resposta esperada

CampoDescrição
idIdentificador único do bloco.
nameNome do bloco/torre.
abbreviationSigla curta (ex.: "A", "Torre 1"), quando aplicável.
projectIdEmpreendimento ao qual pertence (referência a /projects).
costCenterIdCentro de custo associado (referência a /cost-centers).
companyIdEmpresa proprietária (referência a /companies).
deliveryDateData prevista de entrega (quando aplicável).
updatedAtÚltima atualização.
GET/unitsUnidades

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

Query params

ParâmetroDescrição
buildingIdFiltra unidades de um bloco específico.
statusavailable ou sold.
updatedSinceISO-8601 para sync incremental.

Resposta esperada

CampoDescrição
idIdentificador único.
nameNome/identificação da unidade (ex.: "Apto 1201").
buildingIdBloco ao qual pertence (referência a /buildings).
floorAndar (quando aplicável).
privateAreaÁrea privativa em m².
commonAreaÁrea comum em m².
terrainAreaÁrea de terreno em m² (quando aplicável).
idealFractionFração ideal da unidade no condomínio.
deliveryDateData prevista de entrega.
statusavailable ou sold.
updatedAtÚltima atualização.
GET/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
counterpartyIdFiltra contratos de um cliente.
projectIdFiltra 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.
billIdNumeração do contrato no ERP (legível pelo financeiro).
typeTipo do contrato: SALE (venda), RENT (locação), EXCHANGE (permuta).
statusStatus: ACTIVE, OVERDUED, CANCELLED, DELETED.
signatureDateData de assinatura.
deliveryDateData prevista de entrega das chaves (quando aplicável).
counterpartyIdCliente principal (referência a /counterparties). Em caso de múltiplos compradores, o cliente principal vem aqui e os demais em coCounterpartyIds.
coCounterpartyIdsLista de IDs de outros clientes vinculados ao contrato (cônjuge, sócio, etc.). Vazio se houver apenas um comprador.
buildingIdBloco/torre vendido (referência a /buildings).
unitIdUnidade vendida (referência a /units).
companyIdEmpresa vendedora.
lateFeeRateMulta por atraso, em pontos percentuais multiplicados por 100 (ex.: 200 = 2%).
lateInterestRateJuros de mora ao mês, em pontos percentuais multiplicados por 100 (ex.: 100 = 1%).
preventNegativeIndexRatesQuando true, índices negativos não reduzem o valor da parcela.
financingNumberNúmero do contrato de financiamento bancário (quando aplicável).
updatedAtÚltima atualização.
GET/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
idIdentificador único da parcela.
contractIdIdentificador do contrato.
installmentNumberNúmero da parcela (1, 2, 3...).
billIdNumeração da parcela no ERP (referência cobrada do cliente).
dueDateData de vencimento.
originalAmountValor original da parcela (sem correção).
paidAmountValor já recebido (em recebimentos parciais).
statusACTIVE, CANCELLED ou DELETED.
paymentConfirmationStatusStatus de confirmação do pagamento (NOT_PAID, PAID, etc.).
indexerIdIndexador aplicado à parcela (referência a /indexers).
charges.lateFeePaidMulta paga (preenchido quando a parcela está liquidada).
charges.lateInterestPaidJuros de mora pagos.
charges.discountPaidDesconto concedido na liquidação.
charges.monetaryCorrectionPaidCorreção monetária paga.
charges.chargeAmountPaidValor total cobrado e recebido.
charges.chargePaymentDateData efetiva do recebimento.
charges.paymentSourceOrigem do pagamento (PIX, BOLETO_AVULSO, TED, CHEQUE, BENS, PERMUTA, etc.).
GET/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
idIdentificador único do indexador.
nameNome completo do indexador (ex.: "Índice Nacional de Custo da Construção").
typeTipo padronizado: INCC_M, INCC_DI, IPCA, IGP_M, IGP_DI, INPC, IPC, SINAPI_PR, CDI, UFIR, CUB_SC, CUB_PR.
valueFator de correção mais recente (multiplicado por 100, ex.: 10041 = 1.0041).
lastDateData de referência do valor atual (mês/ano).
POST/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
chargePaymentDateData do recebimento (YYYY-MM-DD).
chargeAmountPaidValor total recebido (incluindo juros, multa e descontando desconto).
lateInterestPaidJuros de mora recebidos, quando houver.
lateFeePaidMulta por atraso recebida, quando houver.
discountPaidDesconto concedido na liquidação, quando houver.
monetaryCorrectionPaidCorreção monetária recebida, quando houver.
bankingAccountIdConta corrente destino do recebimento.
paymentSourceOrigem do pagamento: PIX, BOLETO_AVULSO, TED, CHEQUE, BENS, PERMUTA, CARTAO_DEBITO, CARTAO_CREDITO, DEPOSITO, DOC, DINHEIRO, CARTA_DE_CREDITO, REPASSE.
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/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).