Automatic Pix
Automatic Pix (Pix Automático) is the Banco Central arrangement that lets you debit a payer's account on a recurring basis, without the payer approving each payment. The payer authorizes once, in their banking app; from then on, PixToPay issues the debits on the agreed schedule.
In this section you will find everything you need to charge subscriptions, monthly fees and recurring plans from your backend.
Recurrences
Authorization solicitations
Charges
Notifications
Complete walkthrough
Errors
Available Endpoints
- Production:
https://api.pixtopay.com.br/v2/automatic-pix
Authentication is the same as the rest of the API: the Authorization: YOUR_API_KEY header on every request.
The two objects: recurrence and charge
The integration has two objects. The difference between them is the most important thing in this documentation:
| Object | What it is | How many |
|---|---|---|
Recurrence (recurrence) | The payer's mandate: their authorization. It defines who pays, how often, from when, until when, how much, and whether failed debits may be retried. It does not move money. | One per subscription |
Charge (charge) | One concrete debit under a recurrence that is already authorized. It has its own amount and due date. | One per billing cycle |
Lifecycle
Three practical consequences:
- No API call moves a recurrence from
CREATEDtoAPPROVED. Approval is something the payer does inside their banking app. Your backend follows it; it cannot force it. - PixToPay only creates charges under
APPROVEDrecurrences. Until the payer authorizes, nothing is charged. - You do not create charges: PixToPay does. Each cycle's charge is issued automatically
charge_lead_daysdays before the due date: 5 by default, or the value from 3 to 10 you choose when creating the recurrence (Banco Central requires the debit instruction to be sent between 10 and 2 days before the due date). You are notified by thecharge.createdevent, and you can cancel a specific cycle before its due date.
How each cycle's due date is calculated
The due date is calculated from schedule.start_date and the periodicity:
- Same day in the following periods. A monthly recurrence starting on October 15, 2026 falls due on the 15th of the following months.
- Shorter months use their last day. A recurrence starting on the 31st falls due on the last day of February, April and so on.
- Business days, if you want. By default the debit happens on the exact date, weekends and holidays included. With
business_day_adjust: truewhen creating the recurrence, a due date that falls on a weekend or holiday moves to the next business day. The charge'sdue_datealways carries the effective date. - Journey 3. The activation payment is separate and covers no cycle: automatic charges start at
schedule.start_date, as on any recurrence. To charge the activation today and the next debit a month from now, sendstart_dateone month ahead.
The two authorization journeys
You choose one of the two for each recurrence. They cannot be combined.
| QR code route | Notification route | |
|---|---|---|
| How the payer authorizes | Scans a QR code (or pastes the code) in their banking app | Receives an alert from their own bank and approves there |
| What you need | A screen, email or message where you can show the QR | The payer's bank details: branch, account, CPF/CNPJ and the institution's ISPB |
| Calls | POST /recurrences | POST /recurrences + POST /solicitations |
| Resulting journey | JOURNEY_2 (or JOURNEY_3, see below) | JOURNEY_1 |
| When to choose it | Web or app checkout, with the payer on your screen right now | Onboarding where you already collected bank details, or reactivating a customer off your screen |
The QR route is the default choice for most integrations: it does not require collecting bank details and works on any channel that can carry an image or copyable text. The notification route skips showing the QR, but requires you to have, and keep correct, the payer's branch, account and ISPB. Wrong details mean an alert that never arrives, with no visible error.
Variant: authorize and charge in the same scan (journey 3)
The QR route has a variant in which the first payment happens in the same scan that authorizes the recurrence. A single QR code charges, for example, the first monthly fee and authorizes the next ones.
To use it, send activation_amount in POST /recurrences. The API creates the immediate payment, binds it to the recurrence and returns everything in a single response.
- Always show the recurrence's code:
qrcode(image to scan) andpix_copy_paste(copy-and-paste text). In journey 3, that code carries both things: the payment and the authorization. - The activation payment appears in
GET /chargesas one of the recurrence's charges, with"type": "activation". It is paid on the spot, so it cannot be cancelled or rescheduled, and it produces no charge events. The payment arrives as a paid Pix deposit, like any other.
Statuses
Recurrence statuses
| Status | Description |
|---|---|
CREATED | The recurrence exists and is waiting for the payer to authorize. No charge is created yet. |
APPROVED | The payer authorized. It is the only status under which PixToPay creates the cycles' charges. |
REJECTED | The payer or their bank refused the authorization. It does not go back: create another recurrence, with a new transaction_id. |
CANCELLED | The recurrence was ended: by you (via PATCH), by the payer in their banking app, or by the bank. It cannot be reactivated. |
EXPIRED | The authorization deadline passed with no answer from the payer. Create another recurrence. |
Charge statuses
| Status | Description |
|---|---|
CREATED | The charge was registered and has not been scheduled by the payer's bank yet. |
ACTIVE | The payer's bank scheduled the debit for the due date. It is the normal state of a charge awaiting its due date. |
CANCELLED | The charge was cancelled and will not be debited. |
SETTLED | The money came in. It is the only status that means payment. |
A charge is born CREATED or already ACTIVE, depending on how fast the payer's bank answers. Treat both as "created successfully".
Debit attempt statuses
A charge may accumulate debit attempts. The attempts field in responses is their count; the status of the last attempt (last_attempt_status) comes in the notifications.
| Status | Description |
|---|---|
SCHEDULED | The debit is scheduled. |
REQUESTED | The debit was requested from the payer's bank. |
EXPIRED | The debit did not go through, typically because of insufficient funds. The charge stays ACTIVE: the attempt status tells this story, not the charge status. |
Authorization solicitation statuses
Only for the notification route.
| Status | Description |
|---|---|
CREATED | The solicitation was registered. |
SENT | It was forwarded to the payer's institution. |
RECEIVED | The payer's institution received it. The payer should be seeing the alert. |
CANCELLED | The solicitation was cancelled before the payer answered. |
The solicitation status describes the path of the alert, not the payer's decision. The decision appears in the recurrence status, which moves to APPROVED or REJECTED.
Periodicity
| Value | Interval |
|---|---|
WEEKLY | Weekly |
MONTHLY | Monthly |
QUARTERLY | Quarterly |
SEMIANNUAL | Semiannual |
ANNUAL | Annual |
Retry policy
| Value | Description |
|---|---|
NOT_ALLOWED | If the debit fails on the due date, that cycle is not charged. |
ALLOWS_3R_7D | Up to three new attempts, all within seven days of the due date, and never on the due date itself. |
3R_7D is the arrangement's own naming: 3 retries, 7 days. Prefer ALLOWS_3R_7D unless you have a reason not to retry: it is the difference between losing a cycle to funds that arrived the next day and not losing it. The policy is set when the recurrence is created and cannot be changed afterwards.
Journey
Read-only field. You do not send it: the payer's institution classifies the journey when the authorization happens.
| Value | Description |
|---|---|
AWAITING_DEFINITION | No authorization yet. It is the value of every new recurrence. |
JOURNEY_1 | Authorized through the notification route (/solicitations). |
JOURNEY_2 | Authorized by QR code, recurrence only. |
JOURNEY_3 | Authorized by a QR code that also charged an immediate payment. |
JOURNEY_4 | Variant classified by the payer's institution. |
Endpoints
Creating charges is not on this list: PixToPay creates them, automatically.
| Method | Route | Purpose |
|---|---|---|
POST | /recurrences | Create the recurrence |
GET | /recurrences | List recurrences in a period |
GET | /recurrences/:recurrence_id | Get a recurrence, with its current state |
PATCH | /recurrences/:recurrence_id | Change name, start date or webhook; cancel |
POST | /solicitations | Request authorization by notification |
GET | /solicitations/:solicitation_id | Get a solicitation |
PATCH | /solicitations/:solicitation_id | Cancel a solicitation |
GET | /charges | List charges in a period |
GET | /charges/:charge_id | Get a charge, with its current state |
PATCH | /charges/:charge_id | Cancel one cycle |
POST | /charges/:charge_id/retry/:date | Reschedule a debit that failed |