Skip to main content
POST
/
v1
/
pix
/
qrcode
Gerar cobrança PIX (QR Code dinâmico)
curl --request POST \
  --url https://api.paysurebr.com/v1/pix/qrcode \
  --header 'Content-Type: application/json' \
  --header 'ci: <api-key>' \
  --data '
{
  "external_id": "order-12345",
  "value_cents": 10000,
  "postbackUrl": "https://seu-site.com/webhooks/paysure",
  "generator_name": "João da Silva",
  "generator_document": "12345678900",
  "description": "Pedido #12345",
  "expiration_seconds": 3600,
  "splits": [
    {
      "clientId": "parceiro1",
      "value": 5
    }
  ]
}
'
{
  "qrcode": {
    "reference_code": "PSR-9c8f7a1e-4d2b-4e6a-8c9f-1a2b3c4d5e6f",
    "external_reference": "order-12345",
    "content": "00020126580014br.gov.bcb.pix..."
  }
}
Cria uma nova cobrança PIX e retorna o BR Code (copia-e-cola) que o pagador pode escanear ou colar no app do banco dele.

Fluxo completo

1

Você faz POST /v1/pix/qrcode

Envie external_id, value_cents, postbackUrl e dados opcionais do pagador.
2

Recebe HTTP 201 com BR Code

Use qrcode.content (BR Code copia-e-cola) pra gerar o QR visual no seu frontend.
3

Cliente paga via app do banco dele

Pagador escaneia o QR ou cola o código. Banco processa o PIX.
4

Paysure envia webhook com status paid

Você recebe POST em postbackUrl com cashin.status = "paid". Credite o produto/serviço no seu sistema.

Authorizations

ci
string
header
required

Autenticação por par client-credentials. Envie dois headers em toda requisição:

  • ci: client_id (público)
  • cs: client_secret (privado — nunca exponha no frontend)

Gere as credenciais no painel da Paysure em API Keys. Você pode ter múltiplas chaves ativas.

Body

application/json
external_id
string
required

Seu identificador único da transação. Use idempotência.

Maximum string length: 191
value_cents
integer
required

Valor em centavos (R$ 1,00 = 100).

Required range: x >= 100
postbackUrl
string<uri>
required

URL HTTPS para receber webhook quando o pagamento for confirmado.

generator_name
string | null

Nome do pagador (cliente final). Opcional.

Maximum string length: 191
generator_document
string | null

CPF ou CNPJ do pagador. Opcional.

Maximum string length: 32
description
string | null
Maximum string length: 255
splits
object[]
Maximum array length: 10
expiration_seconds
integer | null
default:3600

Tempo de expiração do QR Code, em segundos (TTL). Opcional — se omitido, usa 3600 (1 hora). Mínimo 60s, máximo 86400s (24h). Após expirar, o QR não pode mais ser pago.

Required range: 60 <= x <= 86400

Response

Cobrança criada

qrcode
object