Developers, plugins, snippets e OpenAPI

Integre o gateway em lojas, sites, ERPs e portais.

Use client_id e client_secret para obter o token, depois envie o bearer token nos endpoints protegidos para emitir PIX, boleto, consultar transações e configurar split.

POST /api/v1/auth/token client_id: uuid client_secret: sk_live_... access_token: pgw_... Authorization: Bearer pgw_...
OpenAPI 3.1

Documentação da API externa

Estrutura baseada em Swagger API Doc, com autenticação, contratos de request, exemplos de resposta, webhooks e códigos HTTP esperados.

Fluxo de autenticação

  1. O integrador envia client_id e client_secret para POST /api/v1/auth/token.
  2. O gateway retorna access_token, token_type, expires_at e expires_in.
  3. Nos endpoints protegidos, envie Authorization: Bearer {access_token}.
  4. O token deve ser renovado quando expirar. Nunca exponha client_secret em HTML, JavaScript público ou app sem backend seguro.
POST/api/v1/auth/tokenGerar token de acesso

Endpoint público usado para autenticar o cliente externo.

{
  "client_id": "b233e9de-4641-467f-8d38-1221f17259bb",
  "client_secret": "sk_live_xxx"
}

Resposta 200:

{
  "access_token": "pgw_xxx",
  "token_type": "Bearer",
  "expires_at": "2026-06-25T22:53:12Z",
  "expires_in": 1800
}
POST/api/v1/pix/chargesEmitir cobrança PIX

Endpoint protegido por bearer token. Cria um pedido de PIX e retorna QR Code quando o provedor estiver configurado.

{
  "external_id": "pedido-1001",
  "amount": 150.75,
  "description": "Pedido teste via API",
  "expires_in": 3600,
  "split_rule_id": "uuid-da-regra-opcional",
  "customer": {
    "name": "João da Silva",
    "document": "12345678901"
  },
  "metadata": {
    "order_id": "1001"
  }
}
GET/api/v1/pix/charges/{id}Consultar cobrança PIX

Consulta uma cobrança PIX pelo identificador público retornado na criação.

POST/api/v1/boletosEmitir boleto
{
  "external_id": "boleto-1001",
  "amount": 250.00,
  "due_date": "2026-07-10",
  "description": "Boleto do pedido 1001",
  "customer": {
    "name": "Maria Souza",
    "document": "98765432100",
    "email": "maria@email.com",
    "phone": "11988888888"
  }
}
GET/api/v1/transactionsListar transações

Permite filtrar por method, status, external_id e per_page.

GET /api/v1/transactions?method=PIX&status=PENDING&per_page=20
POST/api/v1/pix/split-rulesCriar regra de split
{
  "name": "Split marketplace",
  "apply_mode": "MANUAL",
  "priority": 100,
  "destinations": [
    {
      "label": "Comissão marketplace",
      "destination_type": "PIX_KEY",
      "percentage": 10,
      "pix_key_type": "CNPJ",
      "pix_key": "12345678000199",
      "name": "Marketplace LTDA",
      "document": "12345678000199"
    }
  ]
}
Plugins para players de mercado

Downloads e manuais de uso

Os plugins são starters técnicos. Cada loja deve configurar URL base, client_id, client_secret, webhook secret e regras comerciais antes de publicar em produção.

W

WooCommerce

Gateway de pagamento para checkout WooCommerce, geração de PIX e webhook para marcar pedido como pago.

WP

WordPress

Shortcode para gerar pagamento PIX em páginas, landing pages, portais e áreas restritas.

S

Shopify

Guia de integração para Payment App, app customizado com backend próprio ou manual payment method para MVP.

Snippets por linguagem

Códigos prontos para projetos proprietários

Selecione a linguagem e copie o fluxo completo: autenticação com client_id e client_secret, emissão de PIX usando bearer token e consulta de transações.

Baixar todos
Exibindo snippet: curl
TOKEN=$(curl -s -X POST "https://gateway.seudominio.com.br/api/v1/auth/token" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"client_id":"SEU_CLIENT_ID","client_secret":"SEU_CLIENT_SECRET"}' | jq -r '.access_token')

curl -s -X POST "https://gateway.seudominio.com.br/api/v1/pix/charges" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer '$TOKEN'" \
  -d '{
    "external_id":"pedido-1001",
    "amount":150.75,
    "description":"Pedido via curl",
    "expires_in":3600,
    "customer":{"name":"João da Silva","document":"12345678901"}
  }'
$baseUrl = 'https://gateway.seudominio.com.br';
$clientId = 'SEU_CLIENT_ID';
$clientSecret = 'SEU_CLIENT_SECRET';

$tokenResponse = Http::post($baseUrl . '/api/v1/auth/token', [
    'client_id' => $clientId,
    'client_secret' => $clientSecret,
])->json();

$pix = Http::withToken($tokenResponse['access_token'])
    ->post($baseUrl . '/api/v1/pix/charges', [
        'external_id' => 'pedido-1001',
        'amount' => 150.75,
        'description' => 'Pedido via PHP',
        'expires_in' => 3600,
        'customer' => [
            'name' => 'João da Silva',
            'document' => '12345678901',
        ],
    ])->json();
const baseUrl = 'https://gateway.seudominio.com.br';

const tokenRes = await fetch(`${baseUrl}/api/v1/auth/token`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
  body: JSON.stringify({ client_id: 'SEU_CLIENT_ID', client_secret: 'SEU_CLIENT_SECRET' })
});

const { access_token } = await tokenRes.json();

const pixRes = await fetch(`${baseUrl}/api/v1/pix/charges`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${access_token}`
  },
  body: JSON.stringify({
    external_id: 'pedido-1001',
    amount: 150.75,
    customer: { name: 'João da Silva', document: '12345678901' }
  })
});
using var http = new HttpClient { BaseAddress = new Uri("https://gateway.seudominio.com.br") };

var tokenResponse = await http.PostAsJsonAsync("/api/v1/auth/token", new {
    client_id = "SEU_CLIENT_ID",
    client_secret = "SEU_CLIENT_SECRET"
});

var token = await tokenResponse.Content.ReadFromJsonAsync<TokenResponse>();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token!.access_token);

var pixResponse = await http.PostAsJsonAsync("/api/v1/pix/charges", new {
    external_id = "pedido-1001",
    amount = 150.75,
    customer = new { name = "João da Silva", document = "12345678901" }
});
import requests

base_url = 'https://gateway.seudominio.com.br'

token = requests.post(f'{base_url}/api/v1/auth/token', json={
    'client_id': 'SEU_CLIENT_ID',
    'client_secret': 'SEU_CLIENT_SECRET',
}).json()['access_token']

pix = requests.post(f'{base_url}/api/v1/pix/charges',
    headers={'Authorization': f'Bearer {token}'},
    json={
        'external_id': 'pedido-1001',
        'amount': 150.75,
        'customer': {'name': 'João da Silva', 'document': '12345678901'},
    }
).json()
tokenPayload := strings.NewReader(`{"client_id":"SEU_CLIENT_ID","client_secret":"SEU_CLIENT_SECRET"}`)
req, _ := http.NewRequest("POST", baseURL+"/api/v1/auth/token", tokenPayload)
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
// faça decode do JSON e leia access_token

pixPayload := strings.NewReader(`{"external_id":"pedido-1001","amount":150.75,"customer":{"name":"João da Silva","document":"12345678901"}}`)
req, _ = http.NewRequest("POST", baseURL+"/api/v1/pix/charges", pixPayload)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+accessToken)
<!-- Nunca coloque client_secret no navegador. O HTML chama o backend do cliente. -->
<form id="pix-form">
  <input name="amount" value="150.75">
  <button>Gerar PIX</button>
</form>
<script>
document.querySelector('#pix-form').addEventListener('submit', async (event) => {
  event.preventDefault();
  const response = await fetch('/seu-backend/gerar-pix', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ amount: 150.75, external_id: 'pedido-1001' })
  });
  const pix = await response.json();
  console.log(pix.pix.qr_code);
});
</script>