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 criar links de pagamento, emitir PIX, boleto, cartão, 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/payment-linksCriar link de pagamento hospedado

Cria uma URL pĆŗblica de checkout hospedado pela RenkoPay. Ɖ possĆ­vel liberar somente um meio de pagamento, por exemplo PIX, ou combinar vĆ”rios. title e external_id sĆ£o opcionais e sĆ£o gerados automaticamente com base no cliente/tenant quando omitidos.

Exemplo, link PIX com valor fixo:

{
  "description": "Pagamento via PIX",
  "amount": 150.00,
  "allowed_methods": ["PIX"],
  "default_method": "PIX",
  "expires_at": "2026-12-20T23:59:59-03:00"
}

Exemplo, valor informado pelo pagador:

{
  "description": "Pagamento aberto",
  "allow_customer_amount": true,
  "suggested_amount": 150.00,
  "minimum_amount": 10.00,
  "maximum_amount": 5000.00,
  "allowed_methods": ["PIX"],
  "default_method": "PIX",
  "expires_at": "2026-12-20T23:59:59-03:00"
}

Resposta 201:

{
  "id": "uuid-do-link",
  "external_id": "link-cliente-tenant-20261220153000-abc12",
  "title": "Pagamento - Nome do cliente",
  "checkout_url": "https://gateway.renkopay.com.br/pay/uuid-do-link",
  "amount_mode": "CUSTOMER_DEFINED",
  "amount": null,
  "minimum_amount": 10.00,
  "maximum_amount": 5000.00,
  "allowed_methods": ["PIX"],
  "status": "ACTIVE"
}
GET/api/v1/payment-links/{id}Consultar link e últimas transações

Consulta o link pelo identificador público e retorna os dados do checkout, status, URL pública e últimas transações geradas.

GerencialCancelamento e reembolsoTotal e parcial por transação

No gerencial, acesse /admin/transactions para cancelar cobranças pendentes ou solicitar reembolso total/parcial das transações suportadas pela adquirente padrão do tenant.

PIX pendente: POST /api/v2/charges/{id}/pix/cancel
PIX pago: POST /api/v2/charges/{id}/pix/return, total
Boleto pendente: POST /api/v2/charges/{id}/boleto/cancel
Cartão: POST /api/v2/charges/{id}/credit-card/refund, total ou parcial
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",
    "email": "joao@email.com",
    "phone": "11999999999",
    "birthdate": "1990-01-01"
  },
  "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-12-10",
  "payment_limit_date": "2026-12-15",
  "description": "Boleto do pedido 1001",
  "instructions": "Não receber após a data limite.",
  "customer": {
    "name": "Maria Souza",
    "document": "98765432100",
    "email": "maria@email.com",
    "phone": "11988888888",
    "birthdate": "1990-01-01",
    "address": {
      "street": "Avenida Rio Verde",
      "number": "SN",
      "neighborhood": "Vila SĆ£o Tomaz",
      "city": "Aparecida de Goiânia",
      "state": "GO",
      "zip_code": "74915515"
    }
  }
}
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, criação de link de pagamento hospedado, emissão de PIX e consulta de transações.

Baixar todos
Exibindo snippet: curl
TOKEN=$(curl -s -X POST "https://gateway.renkopay.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.renkopay.com.br/api/v1/payment-links" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "description":"Checkout hospedado PIX com valor informado pelo pagador",
    "allow_customer_amount":true,
    "suggested_amount":150.00,
    "minimum_amount":10.00,
    "maximum_amount":5000.00,
    "allowed_methods":["PIX"],
    "default_method":"PIX",
    "customer":{
      "name":"João da Silva",
      "document":"12345678901",
      "email":"joao@email.com",
      "phone":"11999999999",
      "birthdate":"1990-01-01",
      "address":{
        "street":"Avenida Rio Verde",
        "number":"SN",
        "neighborhood":"Vila SĆ£o Tomaz",
        "city":"Aparecida de Goiânia",
        "state":"GO",
        "zip_code":"74915515"
      }
    },
    "metadata":{"order_id":"1001"}
  }'
$baseUrl = 'https://gateway.renkopay.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',
            'email' => 'joao@email.com',
            'phone' => '11999999999',
            'birthdate' => '1990-01-01',
        ],
    ])->json();
const baseUrl = 'https://gateway.renkopay.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',
      email: 'joao@email.com',
      phone: '11999999999',
      birthdate: '1990-01-01'
    }
  })
});
using var http = new HttpClient { BaseAddress = new Uri("https://gateway.renkopay.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",
        email = "joao@email.com",
        phone = "11999999999",
        birthdate = "1990-01-01"
    }
});
import requests

base_url = 'https://gateway.renkopay.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',
            'email': 'joao@email.com',
            'phone': '11999999999',
            'birthdate': '1990-01-01',
        },
    }
).json()
baseURL := "https://gateway.renkopay.com.br"

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","email":"joao@email.com","phone":"11999999999","birthdate":"1990-01-01"}}`)
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>