PixGo API Documentation
Simple and powerful PIX payment integration
Last updated: October 9, 2026
Introduction
The PixGo API allows you to integrate PIX payments into your application quickly and securely. Our RESTful API uses JSON for communication and provides webhooks for real-time notifications.
Key Features:
- Instant PIX payment generation
- Real-time payment status
- Automatic webhook notifications
- CPF/CNPJ validation support
- Secure API key authentication
- Detailed transaction logs
Base URL:
Authentication
All API requests require authentication using your API key in the X-API-Key header.
Getting your API Key:
- Create an account at pixgo.org
- Validate your Liquid wallet information
- Navigate to "Checkouts" section
- Generate your API key
Header Example:
API Endpoints
POST /api/v1/payment/create
Create Payment
Creates a new PIX payment request
The receiver_cpf field (payer CPF or CNPJ) is MANDATORY on every payment creation, as required by the settlement provider. Charges created without it are rejected.
Ownership lock: once the QR Code is generated, only the informed CPF/CNPJ can pay it. If a third party pays, the payment is automatically rejected and the refund to the third party's account can take up to 48 hours. Make sure the document sent belongs to the person who will actually pay. The field is already available: update your integration now.
Parameters:
- amount: Required. Minimum R$ 10.00, maximum varies by your level
- receiver_cpf: Mandatory since 06/25/2026. Payer CPF (11 digits) or CNPJ (14 digits), numbers only, with valid check digit. Only this document will be able to pay the generated QR
- receiver_name: Optional (recommended). Payer full name, 2 to 100 characters
- receiver_email: Optional. Valid email, maximum 255 characters
- receiver_phone: Optional. Phone with area code, 10 or 11 digits, numbers only
- receiver_address: Optional. Complete address, 10 to 500 characters
- external_id: Optional. Maximum 50 characters
- description: Optional. Maximum 200 characters
Success Response: (201)
Error Response: (400)
GET /api/v1/payment/{id}/status
Check Payment Status
Retrieves the current status of a payment
Success Response: (200)
About the CPF: the customer_cpf field is returned masked (***.456.789-**). The full document is never returned by the API.
payer_euid: payer identifier at the provider. Comes as null until the payment is confirmed, and may remain null afterwards depending on the provider — do not use this field as a signal that the payment was made; use status for that.
GET /api/v1/payment/{id}
Get Payment Details
Retrieves complete payment information
Success Response: (200)
When the payment reaches a final state (
expired, canceled, cancelled or refunded), the response comes with HTTP 410 Gone and "terminal": true — the body is identical to the 200 one. Treat 200 and 410 as valid responses; a 410 means "this payment exists and will not change anymore", not an error. These responses also come with Cache-Control: immutable for 24h, so they can be safely cached. This endpoint does not return customer_cpf. If you need the masked document, use GET /api/v1/payment/{id}/status.
GET /api/v1/payments
Search payments by your external_id
Use this when you only have the external_id you sent at creation and did not store the payment_id. Always returns a list, because external_id is defined by you and may repeat. If yours is unique, just read data[0].
Parameters (query string)
- external_id: Required. Maximum 50 characters
- limit: Optional. Default 20, maximum 100
- offset: Optional. Default 0
Success Response: (200)
No results: returns 200 with "data": [] and "total": 0 — not 404. A 404 here would mean the URL is wrong, not that the search found nothing.
Payment Status Values:
- pending - Awaiting payment
- completed - Payment confirmed
- expired - Payment expired (see expires_at field)
- cancelled - Payment cancelled
Webhooks
Webhooks allow your application to receive automatic real-time notifications when a payment status changes. Configure a webhook URL when creating a payment to receive instant updates.
Configuration
To receive webhooks, include the webhook_url parameter when creating a payment:
Endpoint Requirements
- Your endpoint must accept POST requests
- Respond with HTTP 200-299 to confirm receipt
- Timeout: 10 seconds per attempt
- We recommend using HTTPS for security
Available Events
- payment.completed - Payment confirmed successfully
- payment.expired - Payment expired (see expires_at field)
- payment.refunded - Payment refunded
Payload Structure
Update 2026-04: enriched payload with (1) customer form data (customer object), (2) separate PIX payer data (payer object, masked by BCB/LGPD), (3) full fee breakdown and net amount (amounts object), (4) product/checkout data (product object).
Event: payment.completed
How to interpret:
customer = data the customer typed in your checkout (name, CPF, phone). Use these for your spreadsheet/CRM. payer = data of who actually paid via PIX (masked by LGPD). May differ from customer (e.g. parent paying for child). amounts.net = net amount you actually receive (after all fees deducted).
Events: payment.expired and payment.refunded
Same structure as payment.completed. The completed_at, expired_at and refunded_at fields indicate which event occurred (only the relevant one is filled).
Request Headers
Each webhook sent includes the following headers:
Signature Verification (Webhook Secret)
Each webhook is signed with your Webhook Secret using HMAC-SHA256. The secret is available in the "Checkouts" section of your dashboard, along with your API Key.
How to verify the signature:
- Extract the
X-Webhook-TimestampandX-Webhook-Signaturefrom the headers - Concatenate:
timestamp+"."+ raw JSON request body - Generate the HMAC-SHA256 using your Webhook Secret
- Compare with the
X-Webhook-Signatureheader using timing-safe comparison
Verification Example (PHP):
Verification Example (Node.js):
Complete Handler Example (PHP)
external_id field to easily identify the order in your system when receiving the webhook. Code Examples
PHP Example:
JavaScript Example:
Check Status (PHP):
Getting Started
Follow these steps to start using the PixGo API:
Registration Process:
- Access pixgo.org and create your account
- Validate your Liquid wallet information
- Navigate to the "Checkouts" section
- Generate your production API Key
- Start integrating PIX payments
API Keys:
All API keys are for production use - there is no separate test environment
Progression System - 7 Levels:
- Level 1 - Beginner (0 to R$ 299.99 confirmed): Limit of R$ 300.00 per QR Code
- Level 2 - Bronze (R$ 300.00 to R$ 499.99 confirmed): Limit of R$ 500.00 per QR Code
- Level 3 - Silver (R$ 500.00 to R$ 999.99 confirmed): Limit of R$ 1,000.00 per QR Code
- Level 4 - Gold (R$ 1,000.00 to R$ 2,999.99 confirmed): Limit of R$ 1,500.00 per QR Code
- Level 5 - Platinum (R$ 3,000.00 to R$ 4,999.99 confirmed): Limit of R$ 2,000.00 per QR Code
- Level 6 - Diamond (R$ 5,000.00 to R$ 5,999.99 confirmed): Limit of R$ 2,500.00 per QR Code
- Maximum Level - Elite (R$ 6,000.00+ confirmed): Limit of R$ 6,000.00 per QR Code
- Limits are based on total confirmed payments (status "completed")
- Liquid wallet must be validated to use the API
- Minimum amount: R$ 10.00 per payment
- Daily limit per payer CPF/CNPJ: R$ 6,000.00
- Unlimited QR Codes per day
- Automatic evolution based on transaction history
Status Monitoring:
To track payments, query the status endpoint periodically (recommended every 30 seconds).
Payment Expiration:
Each PIX charge has its own expiration window. Always use the expires_at field returned on creation and on payment lookup — do not assume a fixed value.
Support
Need help? Contact our development team:
- Email: [email protected]
- Telegram: Access the support group through the button available in the PixGo dashboard
- Documentation: Always up-to-date on this page
- Documentation always updated on this page
- Technical support via email and Telegram for developers
- API limit increase requests available