Quickstart: PIX em minutos
Do zero a um QR Code Pix pago em sandbox.
Do zero a um QR Code Pix pago em sandbox.
Vamos do zero a um QR Code Pix funcional pago em sandbox. Sem enrolação.
Node 18+ instalado, conta no Dashboard Stone e suas credenciais de sandbox em mãos.
Node.js
npm install @stone/node
Python
pip install stone-payments
Node.js
import Stone from '@stone/node';
import crypto from 'crypto';
const client = new Stone({
clientId: process.env.STONE_CLIENT_ID,
clientSecret: process.env.STONE_CLIENT_SECRET,
environment: 'sandbox'
});
const charge = await client.charges.create({
amount: 1990,
currency: 'BRL',
payment_method: 'pix',
customer: {
name: 'Maria da Silva',
tax_id: '11144477735'
},
expires_in: 3600,
reference_id: 'pedido-1042'
}, { idempotencyKey: crypto.randomUUID() });
console.log(charge.pix.qr_code);
console.log(charge.pix.qr_code_image);
Python
from stone import Stone
import os, uuid
client = Stone(
client_id=os.environ["STONE_CLIENT_ID"],
client_secret=os.environ["STONE_CLIENT_SECRET"],
environment="sandbox",
)
charge = client.charges.create(
amount=1990,
currency="BRL",
payment_method="pix",
customer={"name": "Maria da Silva", "tax_id": "11144477735"},
expires_in=3600,
reference_id="pedido-1042",
idempotency_key=str(uuid.uuid4()),
)
print(charge.pix.qr_code)
Configure um endpoint público (use ngrok em dev) e cadastre-o em Dashboard → Webhooks. Você vai receber:
{
"id": "evt_1Q9k...",
"type": "charge.paid",
"created_at": "2026-04-28T14:32:11Z",
"data": {
"id": "ch_2M8x...",
"status": "paid",
"amount": 1990,
"paid_at": "2026-04-28T14:32:08Z",
"reference_id": "pedido-1042",
"pix": { "end_to_end_id": "E60746948202604281432..." }
}
}
Em sandbox, o webhook chega em ~3 segundos automaticamente. Em produção, é instantâneo após o pagador concluir o Pix no banco.
Você fez sua primeira transação. Próximos passos: