The Pix Charges API lets clients create dynamic Pix charges: a single-use Pix QR code that the payer can scan or paste into their banking app. Each charge carries pixCopyPaste (the copy-and-paste payload) and qrCodeImage (a base64-encoded JPEG of the QR code).
Charges are not pushed to you: poll GET /v1/pix-charges/{id} to follow a charge until it reaches a final status.
A charge has one of these statuses:
| Status | Meaning |
|---|
active | The charge can be paid. Only active charges can be canceled. |
under_review | The charge is under review. |
paid | The charge was paid. paymentDetails is present. Final status. |
canceled | The charge was canceled with POST /v1/pix-charges/{id}/cancel. Final status. |
expired | The charge was not paid before payableUntil. Final status. It can be set 1 to 3 days after payableUntil, not right at the end of that day. |
Due date and payable period. Without dueDate, the charge is due 365 days from today (Brasilia time) and daysPayableAfterDue is 0. daysPayableAfterDue can only be sent together with dueDate; when dueDate is sent without it, it defaults to 180. The response always carries the effective dueDate and daysPayableAfterDue, and payableUntil, the last day the QR code can be paid.
Your own reference. externalId is unique per organization. Reusing one returns a 409 whose errorData.chargeId is the id of the existing charge.