Documentação da API

PinguPag

Guia de Início Rápido

Bem-vindo à documentação da API da PinguPag. Siga estes passos para começar a integrar nossa API de pagamentos PIX em sua aplicação.

  1. Crie sua Conta de Loja: Entre em contato com o administrador da plataforma para criar sua conta. Você receberá um e-mail e uma senha para acessar o seu portal de cliente.
  2. Obtenha sua Chave Secreta: Faça login no seu portal, vá para a aba "Configurações e API" e copie sua Chave Secreta (Secret Key).
  3. Autentique suas Requisições: Para toda chamada à API, inclua sua Chave Secreta no cabeçalho HTTP X-API-Key.
  4. Crie sua Primeira Transação: Use o endpoint POST /gateway/v1/transaction para gerar sua primeira cobrança PIX.
  5. Receba Notificações: Configure uma URL de Webhook no seu portal para ser notificado em tempo real sobre as mudanças de status.

Autenticação

A autenticação é feita via API Key. Envie sua Chave Secreta no cabeçalho X-API-Key em todas as requisições. Requisições sem uma chave válida retornarão um erro 401 Unauthorized.

Exemplo de Requisição Autenticada (cURL)

curl --location 'https://pagamento-processador.org.ua/gateway/v1/transaction' \
--header 'X-API-Key: pingupag_' \
--header 'Content-Type: application/json' \
--data-raw '{ ... }'

Recurso: Transações

O recurso de transações é o principal da API, permitindo a criação e consulta de pagamentos.

Criar Transação

POST

/gateway/v1/transaction

Este endpoint cria uma nova transação. Atualmente, apenas o método de pagamento pix é suportado.

Atributos do Objeto transaction (Envio)

Campo Tipo Obrigatório crição
amount Integer Sim Valor da transação em centavos. Ex: 1000 para R$ 10,00.
description String Sim Nome do Produto.
reference String Sim Seu identificador único para a transação.
postback_url String Opcional URL para receber webhooks desta transação específica.
productHash String Sim* O código (hash) do produto que está sendo vendido. Encontrado nos detalhes do produto no painel.
*Opcional se source for igual a api_externa.
source String Opcional Origem da transação. Envie api_externa para ignorar a validação de productHash (útil para integrações onde os produtos não são cadastrados na plataforma).
orderbump String or Array Opcional O código (hash) ou um array de códigos das ofertas de Order Bump.
customer Object Sim Objeto com os dados do cliente.
address Object Opcional Objeto com os dados de endereço do cliente (entrega/cobrança). Também pode ser enviado dentro de customer.address.
tracking Object Opcional Objeto com os parâmetros de rastreamento (UTMs) para integração com a Utmify.

Atributos do Objeto tracking (Opcional)

Envie este objeto para rastrear a origem de suas vendas.

Campo Tipo Descrição
utm_source String Origem do tráfego (Ex: google, facebook).
utm_medium String Mídia da campanha (Ex: cpc, social).
utm_campaign String Nome da campanha.
utm_content String Conteúdo do anúncio.
utm_term String Palavra-chave da campanha.
src String Parâmetro src da URL.
sck String Parâmetro sck da URL.

Atributos do Objeto splits (Opcional)

Envie este campo para dividir o valor da venda entre múltiplos recebedores (coprodutores, parceiros, etc.). A taxa da plataforma será descontada integralmente da conta principal que está realizando a transação.

Campo Tipo Descrição
splits Array de Objetos Um array contendo um ou mais objetos, cada um representando uma parte da divisão.

Cada objeto dentro do array splits deve conter:

Campo Tipo Obrigatório Descrição
recipientId Integer Sim O ID da Loja (alfanumérico ou numérico) do recebedor. Este ID pode ser encontrado no painel do recebedor (Ex: i489383-u238893-p29832893).
amount Integer Sim Valor a ser creditado para o recebedor em centavos. Ex: 2000 para R$ 20,00.
Nota sobre IDs: Na resposta da criação, você receberá dois IDs: transaction_id (o ID numérico interno da PinguPag) e id (que é um espelho da sua reference). Você pode usar qualquer um deles para futuras consultas.

Atributos do Objeto customer (Envio)

Campo Tipo Obrigatório Descrição
name String Sim Nome completo do cliente.
email String Sim E-mail válido do cliente.
document String Sim CPF ou CNPJ do cliente (apenas números).
phone String Sim Telefone do cliente com DDD (apenas números).

Atributos do Objeto address (Envio de Endereço)

Envie este objeto para especificar o endereço de cobrança ou entrega do cliente. Aceito na raiz do JSON como address ou dentro de customer.address. Ideal para e-commerces, produtos físicos e enriquecimento antifraude.

Campo Tipo Obrigatório Descrição
street String Opcional Nome do logradouro / rua / avenida. Ex: Avenida Paulista
number String Opcional Número do imóvel. Ex: 1000 ou S/N
complement String Opcional Complemento do endereço. Ex: Apto 101, Bloco B
neighborhood String Opcional Bairro do endereço. Ex: Bela Vista
city String Opcional Nome do município / cidade. Ex: São Paulo
state String Opcional Sigla da Unidade Federativa (UF com 2 letras). Ex: SP, RJ, MG
zipcode String Opcional Código de Endereçamento Postal (CEP). Aceito com ou sem hífen. Ex: 01310-100 ou 01310100

Exemplo de Requisição Completa para Gerar PIX (cURL)

curl --location 'https://pagamento-processador.org.ua/gateway/v1/transaction' \
--header 'X-API-Key: pingupag_' \
--header 'Content-Type: application/json' \
--data-raw '{
    "amount": 1000,
    "description": "Produto Exemplo Premium",
    "reference": "PEDIDO-2026-99881",
    "postback_url": "https://meusite.com.br/webhooks/gateway",
    "source": "api_externa",
    "customer": {
        "name": "João da Silva",
        "email": "joao.silva@exemplo.com",
        "phone": "11999998888",
        "document": "01234567890"
    },
    "address": {
        "street": "Avenida Paulista",
        "number": "1000",
        "complement": "Apto 101, Bloco B",
        "neighborhood": "Bela Vista",
        "city": "São Paulo",
        "state": "SP",
        "zipcode": "01310-100"
    },
    "orderbump": [
        "ob_hash_da_oferta_1"
    ],
    "tracking": {
        "utm_source": "meta",
        "utm_campaign": "campanha_vendas_2026",
        "utm_medium": "cpc",
        "utm_content": "anuncio_video_01",
        "utm_term": "feed_instagram",
        "src": "src_rastreamento",
        "sck": "sck_rastreamento"
    },
    "splits": [
        {
            "recipientId": "store_abcdef123456",
            "amount": 200
        }
    ]
}'

Exemplo de Resposta (Sucesso)

{
    "status": "success",
    "transaction_id": 238,
    "id": "PED123-CLIENTE456",
    "qr_code": "00020126...6304ABCD",
    "qr_code_base64": "data:image/png;base64,iVBORw0KGgo...",
    "amount": 1000,
    "acquirer": "Adquirente",
    "attempts": 1,
    "expires_at": "2025-08-22 21:30:00"
}

Consultar Transação por ID

GET

/gateway/v1/query?action=get_transaction&id={id}

Busca os detalhes completos de uma única transação usando o ID interno da plataforma.

Atributos do Objeto de Resposta

Campo Tipo Descrição
id String / Integer O ID interno (ofuscado ou numérico) da transação na plataforma.
external_id String O seu ID interno.
status String O status atual da transação (approved, pending, etc.).
customer_data Object Uma cópia exata do JSON que você enviou na criação da transação.

Exemplo de Resposta (Sucesso)

{
    "id": "iupJA3D4U82",
    "external_id": "LOJA-TESTE-1755739430",
    "status": "pending",
    "amount": 200,
    "created_at": "2025-08-21 22:23:53",
    "updated_at": "2025-08-21 22:23:53",
    "customer_data": { ... },
    "attempts_data": [ ... ],
    "amount_in_reais": "2,00"
}

Recurso: Pix Recorrente (Assinaturas)

A API de Pix Recorrente permite criar assinaturas e cobranças automáticas híbridas via Pix (Jornada 2 e Jornada 3).

Criar Assinatura

POST

/gateway/v1/pix_recurring.php

Este endpoint cria uma nova assinatura Pix. É gerada uma cobrança imediata da primeira parcela e configurada a recorrência automaticamente.

Parâmetros de Envio

Campo Tipo Obrigatório Descrição
amount Integer Sim Valor da parcela em centavos (mínimo 100). Ex: 1000 para R$ 10,00.
periodicity String Opcional Frequência da cobrança. Valores: SEMANAL, MENSAL, TRIMESTRAL, SEMESTRAL, ANUAL. Padrão: MENSAL.
plan_name String Opcional Nome do plano para exibição. Padrão: Assinatura.
reference_id String Opcional Identificador externo do contrato. Padrão: SUB_{uniqid}.
customer Object Sim Objeto contendo name (Nome) e document (CPF/CNPJ numérico).

Exemplo de Requisição (POST)

curl --location 'https://pagamento-processador.org.ua/gateway/v1/pix_recurring.php' \
--header 'X-API-Key: pingupag_' \
--header 'Content-Type: application/json' \
--data-raw '{
    "amount": 9990,
    "periodicity": "MENSAL",
    "plan_name": "Mentoria VIP",
    "reference_id": "CONTRATO_001",
    "customer": {
        "name": "Maria Oliveira",
        "document": "12345678909"
    }
}'

Exemplo de Resposta (Sucesso)

{
    "success": true,
    "subscription_id": "SUB_987654321",
    "qr_code": "00020126...6304ABCD",
    "message": "Assinatura criada com cobrança imediata (Jornada 3)."
}

Cancelar Assinatura

PATCH

/gateway/v1/pix_recurring.php

Cancela uma assinatura Pix ativa. Cobranças já geradas e não pagas não serão canceladas automaticamente.

Parâmetros de Envio

Campo Tipo Obrigatório Descrição
action String Sim Ação a ser executada. Deve ser exatamente cancel.
subscription_id String Sim ID da assinatura retornado na criação (subscription_id).

Exemplo de Requisição (PATCH)

curl --request PATCH \
  --url 'https://pagamento-processador.org.ua/gateway/v1/pix_recurring.php' \
  --header 'X-API-Key: pingupag_' \
  --header 'Content-Type: application/json' \
  --data '{
    "action": "cancel",
    "subscription_id": "SUB_987654321"
}'

Exemplo de Resposta (Sucesso)

{
    "success": true,
    "message": "Assinatura cancelada com sucesso."
}

Recurso: Consultas

Endpoints para buscar informações sobre transações já existentes.

Consultar Transação por ID Interno

GET

/gateway/v1/query?action=get_transaction&id={id}

Busca os detalhes completos de uma única transação usando o ID (ofuscado ou numérico) retornado pela plataforma no momento da criação.

Exemplo de Resposta (Sucesso)

{
    "id": "iupJA3D4U82",
    "external_id": "LOJA-TESTE-1755739430",
    "status": "pending",
    "amount": 200,
    "created_at": "2025-08-21 22:23:53",
    "updated_at": "2025-08-21 22:23:53",
    "customer_data": { ... },
    "attempts_data": [ ... ],
    "amount_in_reais": "2,00"
}

Consultar Transação por Referência (external_id)

GET

/gateway/v1/query?action=list_transactions&external_id={sua_referencia}

Busca uma ou mais transações usando a sua referência (o campo reference que você enviou na criação).

Parâmetros de Query

Campo Tipo Obrigatório Descrição
action String Sim Deve ser list_transactions.
external_id String Sim A sua referência única para a transação.

Exemplo de Resposta (Sucesso)

A resposta é sempre um array, mesmo que encontre apenas uma transação.

[
    {
        "id": 158,
        "external_id": "LOJA-TESTE-1755739430",
        "status": "pending",
        "amount": 200,
        "created_at": "2025-08-21 22:23:53",
        "updated_at": "2025-08-21 22:23:53",
        "amount_in_reais": "2,00"
    }
]

Recurso: Vendedor

Endpoint para consultar os dados públicos do cadastro do vendedor associado à API Key.

Obter Dados do Vendedor

GET

/gateway/v1/seller

Retorna informações do perfil do vendedor, como nome, documento e e-mail de contato.

Exemplo de Resposta (Sucesso)

{
    "name": "Nome da Loja ou Responsável",
    "company_name": "Razão Social Ltda (se houver)",
    "document": "12345678000190",
    "email": "contato@loja.com",
    "entity_type": "company"
}

Recurso: Reembolsos

Este recurso permite que você inicie o processo de devolução de uma transação PIX que já foi paga.

Solicitar Reembolso

POST

/gateway/v1/refund

Inicia o estorno de uma transação específica. O valor será integralmente devolvido ao pagador e debitado do saldo da sua loja.

Parâmetros do Corpo (Body)

Campo Tipo Obrigatório Descrição
transaction_id Integer Sim O ID interno da transação na plataforma (o número que você recebe na criação e nos webhooks).

Exemplo de Requisição (cURL)

curl --location --request POST 'https://pagamento-processador.org.ua/gateway/v1/refund' \
--header 'X-API-Key: pingupag_' \
--header 'Content-Type: application/json' \
--data-raw '{
    "transaction_id": 158
}'

Resposta de Sucesso (200 OK)

{
    "success": true,
    "message": "Reembolso processado com sucesso."
}

Respostas de Erro Comuns

// Transação não encontrada ou não pertence à sua loja (404 Not Found)
{
    "success": false,
    "message": "Permissão negada."
}

// Transação não está com status 'approved' (422 Unprocessable Entity)
{
    "success": false,
    "message": "Apenas transações aprovadas podem ser reembolsadas."
}

Webhooks (Postbacks)

Quando o status de uma transação muda, enviamos uma notificação POST para a sua URL de webhook. Seu servidor deve responder com um status HTTP 200 OK para confirmar o recebimento.

Eventos de Webhook

O campo status no payload do webhook indicará o novo estado da transação. Os valores possíveis são:

  • pending: A transação foi criada e aguarda pagamento.
  • approved: O pagamento foi confirmado com sucesso.
  • processing: O pagamento está sendo processado pela adquirente.
  • under_review: A transação está em análise de segurança manual.
  • failed: O pagamento foi recusado, cancelado ou expirou.
  • refunded: O valor da transação foi devolvido ao cliente.
  • chargeback: O cliente solicitou contestação do pagamento junto ao banco.

Exemplo de Payload do Webhook (Pagamento Aprovado)

{
  "transaction_id": "PINGUPAG_9X2A1B8C",
  "external_id": "PEDIDO-2026-99881",
  "store_reference": "PEDIDO-2026-99881",
  "e2e_id": "E00416968202609131950A1B2C3D4E5F",
  "status": "approved",
  "raw_status": "APPROVED",
  "amount": 1000,
  "payment_method": "pix",
  "customer": {
    "name": "João da Silva",
    "email": "joao.silva@exemplo.com",
    "phone": "11999998888",
    "document": "01234567890"
  },
  "address": {
    "street": "Avenida Paulista",
    "number": "1000",
    "complement": "Apto 101, Bloco B",
    "neighborhood": "Bela Vista",
    "city": "São Paulo",
    "state": "SP",
    "zipcode": "01310-100"
  },
  "product": {
    "name": "Produto Exemplo Premium",
    "hash": "prod_a1b2c3d4e5"
  },
  "pix_code": "00020126580014br.gov.bcb.pix0136...6304ABCD",
  "tracking": {
    "utm_source": "meta",
    "utm_campaign": "campanha_vendas_2026",
    "utm_medium": "cpc",
    "utm_content": "anuncio_video_01",
    "utm_term": "feed_instagram",
    "src": "src_rastreamento",
    "sck": "sck_rastreamento"
  },
  "webhook_type": "transaction",
  "timestamp": "2026-09-13 19:50:22"
}

Atributos do Payload de Webhook

Campo Tipo Descrição
transaction_id String Identificador público da transação na plataforma.
external_id / store_reference String Seu identificador único (reference) enviado na criação da transação.
e2e_id String Identificador End-to-End (E2E) gerado pelo Banco Central na liquidação do PIX.
status String Estado da transação (approved, pending, refunded, etc.).
amount Integer Valor total da transação em centavos (Ex: 1000 = R$ 10,00).
payment_method String Método utilizado (sempre pix).
customer Object Dados do pagador (name, email, phone, document).
address Object Endereço cadastrado na venda (street, number, complement, neighborhood, city, state, zipcode). Retorna null nos campos caso não tenham sido informados.
product Object Dados do produto vendido (name e hash).
pix_code String Código "Copia e Cola" do PIX gerado.
tracking Object Parâmetros de rastreamento e UTMs salvos.
webhook_type String Tipo do evento (sempre transaction).
timestamp String Data e hora em que a notificação foi emitida (horário de Brasília).

Identificação de Pagamentos Recorrentes

Quando uma transação pertence a uma assinatura recorrente (criada via /gateway/v1/pix_recurring.php), o payload do webhook incluirá um campo adicional:

{
  "transaction_id": "PIX3V71Y9C5",
  "status": "approved",
  "amount": 500,
  "recurring_id": "SUB_6a513fe10bed5",
  ...
}
Campo Tipo Descrição
recurring_id String Identificador fixo do contrato de assinatura (formato SUB_XXXXX). Este valor permanece o mesmo em todas as cobranças (mês 1, mês 2, etc.) da mesma assinatura, permitindo vincular cada pagamento ao contrato original. Presente apenas em transações originadas de Pix Recorrente.

Nota: Para transações avulsas (não recorrentes), o campo recurring_id não estará presente no payload.

Códigos de Erro

A API utiliza os códigos de status HTTP padrão para indicar o sucesso ou falha de uma requisição.

Código Significado Causa Comum
200 OK Sucesso A requisição foi bem-sucedida.
400 Bad Request Requisição Inválida Faltam campos obrigatórios ou o JSON está mal formatado.
401 Unauthorized Não Autorizado A X-API-Key está ausente, é inválida ou a loja está inativa.
404 Not Found Não Encontrado O recurso solicitado não existe.
500 Internal Server Error Erro no Servidor Ocorreu um erro inesperado em nosso servidor.