Para lojas, marketplaces e parceiros
Checkout plug & play.
Rode na sua infraestrutura. Qualquer sistema conversa com ele por um token assinado — sem SDK, sem integrar API. Recebedores, split e Pagar.me já vêm no pacote.
Carta lacrada
O pedido inteiro viaja num token assinado.
Valor, itens, cliente e quem recebe vão dentro de um JWT assinado com o segredo da loja. Sem a chave, não existe checkout.
eyJhbGciOiJIUzI1NiJ9.eyJzdG9yZV9pZCI6….mj0-uju…
Anatomia do tokenO notebook
Qualquer sistema assina. Sem SDK, sem integrar API.
Seu ERP, CMS, app ou um parceiro assina o token e redireciona o cliente. Se ele assina JWT, ele já integra.
NodePythonGoPHPRuby
Ver o códigoPix, cartão e boleto
O checkout hospedado cobra e confirma o pagamento.
O cliente paga numa página sua, na sua infraestrutura: cartão, Pix ou boleto. Você acompanha pedidos, estornos e recebedores no painel.
Pago · Pix · R$ 150,00 (exemplo)
Na sua infraO mercado
Vários recebedores, uma venda: o split divide o valor.
Cada vendedor da sua praça é um recebedor. Com o seller_id no token, a venda é dividida entre a plataforma e quem recebe.
Recebedor · 90%Plataforma · 10%
Exemplo: taxa de 10% por venda.
Outros gateways
Pagar.me hoje. Os outros, por um contrato único.
Só o Pagar.me está integrado hoje. Woovi, Pague.dev, AbacatePay, CriptoPag e Hodle estão no roadmap e entram por um contrato único.
Pagar.me ✓WooviPague.devAbacatePayCriptoPagHodle
Ver os gateways
ICarta lacrada
Valor, itens, cliente e quem recebe vão dentro de um JWT assinado com o segredo da loja. Sem a chave, não existe checkout.
eyJhbGciOiJIUzI1NiJ9.eyJzdG9yZV9pZCI6….mj0-uju…
Anatomia do tokenIIO notebook
Seu ERP, CMS, app ou um parceiro assina o token e redireciona o cliente. Se ele assina JWT, ele já integra.
NodePythonGoPHPRuby
Ver o códigoIIIPix, cartão e boleto
O cliente paga numa página sua, na sua infraestrutura: cartão, Pix ou boleto. Você acompanha pedidos, estornos e recebedores no painel.
Pago · Pix · R$ 150,00 (exemplo)
Na sua infraIVO mercado
Cada vendedor da sua praça é um recebedor. Com o seller_id no token, a venda é dividida entre a plataforma e quem recebe.
Recebedor · 90%Plataforma · 10%
Exemplo: taxa de 10% por venda.
VOutros gateways
Só o Pagar.me está integrado hoje. Woovi, Pague.dev, AbacatePay, CriptoPag e Hodle estão no roadmap e entram por um contrato único.
Pagar.me ✓WooviPague.devAbacatePayCriptoPagHodle
Ver os gatewaysFig. I — Holbein (1532) e Beuckelaer (1561), em colagemO notebook, a maquininha, o Pix e o bitcoin são licença poética.
I Como funciona
Um token no lugar de uma integração.
O pedido inteiro viaja dentro de um token assinado. Não há chamada de API do seu lado: só um redirecionamento.
- I Assine
Cartas lacradas · Holbein, 1532 Seu sistema assina o pedido
Sua loja, seu ERP ou um parceiro assina um JWT com o pedido: valor, itens, cliente e, se houver, quem recebe.
- II Redirecione
A carta na mão · Holbein, 1532 O cliente abre o checkout
O checkout hospedado abre em
/pay?session_token=…O servidor confere a assinatura e cria o pedido uma única vez. - III Receba
A pesagem · Massys, 1514 O pagamento é dividido
Pix, cartão ou boleto são cobrados pelo Pagar.me. Com um seller_id no token, a venda é dividida entre a plataforma e o recebedor.
import { SignJWT } from 'jose';
const secret = new TextEncoder().encode(process.env.ORDER_SECRET);
const token = await new SignJWT({
store_id: 'MINHA_LOJA',
seller_id: 'seller_123', // opcional: habilita o split
external_id: 'PED_1042',
idempotency_key: 'PED_1042_v1',
customer: { email: '[email protected]', name: 'Ana Lima' },
order: { amount: 15000, items: [{ desc: 'Plano anual', qty: 1, price: 15000 }] },
})
.setProtectedHeader({ alg: 'HS256' })
.setExpirationTime('30m')
.sign(secret);
redirect(`https://checkout.suaempresa.com/pay?session_token=${token}`);import os, time
import jwt # PyJWT
token = jwt.encode({
"store_id": "MINHA_LOJA",
"seller_id": "seller_123", # opcional: habilita o split
"external_id": "PED_1042",
"idempotency_key": "PED_1042_v1",
"customer": {"email": "[email protected]", "name": "Ana Lima"},
"order": {"amount": 15000, "items": [{"desc": "Plano anual", "qty": 1, "price": 15000}]},
"exp": int(time.time()) + 30 * 60,
}, os.environ["ORDER_SECRET"], algorithm="HS256")
return redirect(f"https://checkout.suaempresa.com/pay?session_token={token}")// github.com/golang-jwt/jwt/v5
token, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"store_id": "MINHA_LOJA",
"seller_id": "seller_123", // opcional: habilita o split
"external_id": "PED_1042",
"idempotency_key": "PED_1042_v1",
"customer": map[string]any{"email": "[email protected]", "name": "Ana Lima"},
"order": map[string]any{"amount": 15000, "items": []map[string]any{
{"desc": "Plano anual", "qty": 1, "price": 15000},
}},
"exp": time.Now().Add(30 * time.Minute).Unix(),
}).SignedString([]byte(os.Getenv("ORDER_SECRET")))
if err != nil { return err }
http.Redirect(w, r, "https://checkout.suaempresa.com/pay?session_token="+token, http.StatusSeeOther)use Firebase\JWT\JWT;
$token = JWT::encode([
'store_id' => 'MINHA_LOJA',
'seller_id' => 'seller_123', // opcional: habilita o split
'external_id' => 'PED_1042',
'idempotency_key' => 'PED_1042_v1',
'customer' => ['email' => '[email protected]', 'name' => 'Ana Lima'],
'order' => ['amount' => 15000, 'items' => [
['desc' => 'Plano anual', 'qty' => 1, 'price' => 15000],
]],
'exp' => time() + 30 * 60,
], getenv('ORDER_SECRET'), 'HS256');
header("Location: https://checkout.suaempresa.com/pay?session_token=$token");require "jwt"
token = JWT.encode({
store_id: "MINHA_LOJA",
seller_id: "seller_123", # opcional: habilita o split
external_id: "PED_1042",
idempotency_key: "PED_1042_v1",
customer: { email: "[email protected]", name: "Ana Lima" },
order: { amount: 15000, items: [{ desc: "Plano anual", qty: 1, price: 15000 }] },
exp: Time.now.to_i + 30 * 60,
}, ENV.fetch("ORDER_SECRET"), "HS256")
redirect_to "https://checkout.suaempresa.com/pay?session_token=#{token}"Se o seu sistema assina um JWT, ele já integra.
Ver todos os campos do tokenII Anatomia do token
O pedido inteiro, num único token.
- cabeçalho
- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
- conteúdo
- eyJzdG9yZV9pZCI6Ik1JTkhBX0xPSkEiLCJzZWxsZXJfaWQiOiJzZWxsZXJfMTIzIiwi….
- assinatura
- mj0-ujuQ0flLcHZriraYeifSohYuCMoEYG1XYffvLjU
{ "store_id": "MINHA_LOJA",
"seller_id": "seller_123",
"external_id": "PED_1042",
"idempotency_key": "PED_1042_v1",
"order": {
"amount": 15000,
"items": [{ "desc": "Plano anual", "qty": 1, "price": 15000 }]
}, "customer": { "email": "[email protected]", "name": "Ana Lima" },
"exp": 1791366000
} assinatura = HMAC_SHA256(
base64url(cabeçalho) + "." + base64url(conteúdo),
segredo_da_loja
)
- I
De qual loja vem. Escolhe o segredo que valida a assinatura.
- II
Opcional: o seu id do recebedor. Com ele, a venda é dividida.
- III
O mesmo token nunca cobra duas vezes.
- IV
Valor em centavos e itens do pedido.
- V
Quem paga. Qualquer JSON, guardado junto com o pedido.
- VI
Assinado com o segredo da loja. Sem a chave, não existe checkout.
Fig. II — Anatomia de um token de checkout
Split · exemplo
R$ 150,00
- Recebedor · 90%
- R$ 135,00
- Plataforma · 10%
- R$ 15,00
Convite · válido por 7 dias
/onboarding?token=eyJhbGciOiJIUzI1NiIs…
III Recebedores
Quem recebe, recebe certo.
Marketplace e plataforma de parceiros precisam saber quem recebe quanto, sem cada vendedor virar uma integração. O cadastro é um link; o split é uma linha do token.
- I
Convite. Você gera um link assinado no painel. Ele vale por 7 dias.
- II
Cadastro. O recebedor preenche quatro passos e é registrado no gateway. O status aparece no seu painel.
- III
Split. Com o seller_id no token, a venda é dividida pela taxa configurada do recebedor, percentual ou fixa.
IV Gateways
Um gateway hoje. Os outros, por um contrato único.
Gateway
Estado
- Disponível
Pagar.me
Cartão, Pix e boleto · API v5 · recebedores e split
- Em breve
Woovi
- Em breve
Pague.dev
- Em breve
AbacatePay
- Em breve
CriptoPag
- Em breve
Hodle
Pagar.me v5 é o único gateway integrado hoje. Os próximos entram por um contrato único, a interface Provider (ProcessPayment e RegisterSeller). É roadmap, sem data.
Seu sistema
assina o token
CheckoutPP
valida, cobra, divide
Provider · contrato
ProcessPayment · RegisterSeller
- Pagar.meintegrado hoje
- Woovi
- Pague.dev
- AbacatePay
- CriptoPag
- Hodle
V Alfaiataria
Um checkout sob medida.
Escolha o tecido, a linha, o corte e a letra. O checkout hospedado veste a sua marca, e você vê o resultado antes de salvar.

Tecido nº 7
Petróleo
#0f5c63
Tecido · a cor da marca
Linha · o destaque
Corte · os cantos
Letra · a tipografia
Isto é uma demonstração: nada é salvo. No painel, Alfaiataria guarda a sua escolha, e o próximo checkout aberto já a usa.
- I
Nome e logo no recibo. O nome da loja e o logo (por https) ficam no alto do recibo, no lugar do identificador.
- II
Contraste sempre à vista. Se uma cor ficar pálida demais no papel claro ou no escuro, ajustamos o tom para ela continuar legível.
- III
Vale no próximo checkout. Salve no painel e o próximo checkout aberto já usa o tema. Sem deploy, sem mexer em código.
VI Na sua infraestrutura
Seu checkout, seu domínio, seu banco.
- Um binário
- Go, com a interface web embutida.
- Banco
- PostgreSQL.
- Orquestração
- Temporal, opcional. Sem ele, os pagamentos rodam de forma síncrona.
- Deploy
- docker compose up, ou Railway em um clique.
- Taxa
- Nenhuma da plataforma: você paga só o gateway.
docker compose up
Sobe o PostgreSQL e o app, roda as migrações e abre em localhost:8091.
O livro-razão
Cada centavo, de onde veio e para onde vai.
Quando a venda é dividida, os dois lados ficam registrados — a mesma ideia das partidas dobradas que Luca Pacioli descreveu em 1494.
Fig. V — Jacopo de' Barbari, Luca Pacioli e um aluno, c. 1495