Zera

Guias

Consultar e cobrar

A sequência que liga veículo, consulta, pedido e liquidação.

A conta do cliente já existe: o UUID vai em X-Account-Id em todas as chamadas. Cada passo devolve o identificador do próximo. Os exemplos usam os mesmos ids, para copiar a sequência inteira.

No Postman, abra Import → Raw text e cole o JSON da aba Postman. Troque apiKey pela chave da marca. A aba OpenAPI é um trecho para colar em paths.

Passo a passo

Cadastre o veículo na conta do cliente. A placa volta normalizada e o Renavam com 11 dígitos. Guarde o id para a consulta.

POST/api/v1/vehicles

Responde 201.

{
  "plate": "ABC1D23",
  "renavam": "123456789",
  "uf": "SP",
  "owner_document": "12345678901"
}
{
  "id": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e",
  "plate": "ABC1D23",
  "renavam": "00123456789",
  "uf": "SP",
  "nickname": "",
  "owner_document_masked": "***.456.789-**",
  "is_active": true,
  "created_at": "2026-10-20T12:00:00-03:00",
  "latest_consultation_id": null,
  "latest_consultation_status": null,
  "latest_consultation_at": null,
  "open_debts_count": 0,
  "open_debts_amount": "0.00",
  "consultations_count": 0
}
{
  "info": {
    "name": "Zera — Criar veículo",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Criar veículo",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/api/v1/vehicles",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"plate\": \"ABC1D23\",\n  \"renavam\": \"123456789\",\n  \"uf\": \"SP\",\n  \"owner_document\": \"12345678901\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": [
        {
          "name": "201",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{baseUrl}}/api/v1/vehicles",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"plate\": \"ABC1D23\",\n  \"renavam\": \"123456789\",\n  \"uf\": \"SP\",\n  \"owner_document\": \"12345678901\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "Created",
          "code": 201,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"8c1d9e2a-7b34-4f10-9a11-22b33c44d55e\",\n  \"plate\": \"ABC1D23\",\n  \"renavam\": \"00123456789\",\n  \"uf\": \"SP\",\n  \"nickname\": \"\",\n  \"owner_document_masked\": \"***.456.789-**\",\n  \"is_active\": true,\n  \"created_at\": \"2026-10-20T12:00:00-03:00\",\n  \"latest_consultation_id\": null,\n  \"latest_consultation_status\": null,\n  \"latest_consultation_at\": null,\n  \"open_debts_count\": 0,\n  \"open_debts_amount\": \"0.00\",\n  \"consultations_count\": 0\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/vehicles:
    post:
      operationId: createVehicle
      summary: Criar veículo
      security:
        - ApiKey: []
          AccountId: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [plate, renavam, uf, owner_document]
              properties:
                plate:
                  type: string
                renavam:
                  type: string
                uf:
                  type: string
                owner_document:
                  type: string
                nickname:
                  type: string
      responses:
        "201":
          description: Veículo criado
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  plate:
                    type: string
                  renavam:
                    type: string
                  uf:
                    type: string
                  owner_document_masked:
                    type: string
                  is_active:
                    type: boolean

Dispare a consulta de débitos. Não há corpo: o veículo vai no path. A resposta nasce pending. O limite é de 20 criações por hora.

POST/api/v1/vehicles/8c1d9e2a-7b34-4f10-9a11-22b33c44d55e/consultations

Responde 201.

POST https://api.zera.mobi/api/v1/vehicles/8c1d9e2a-7b34-4f10-9a11-22b33c44d55e/consultations
X-Api-Key: zera_live_...
X-Account-Id: 4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f

Sem corpo.
{
  "id": "11aa22bb-33cc-44dd-55ee-66ff77889900",
  "vehicle_id": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e",
  "plate": "ABC1D23",
  "status": "pending",
  "stage": "queued",
  "found_new_debts": false,
  "error_message": "",
  "error_code": "",
  "error_title": "",
  "error_action": "",
  "total_amount": "0.00",
  "items": []
}
{
  "info": {
    "name": "Zera — Consultar débitos",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Consultar débitos",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          }
        ],
        "url": "{{baseUrl}}/api/v1/vehicles/{{vehicleId}}/consultations"
      },
      "response": [
        {
          "name": "201",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              }
            ],
            "url": "{{baseUrl}}/api/v1/vehicles/{{vehicleId}}/consultations"
          },
          "status": "Created",
          "code": 201,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"11aa22bb-33cc-44dd-55ee-66ff77889900\",\n  \"vehicle_id\": \"8c1d9e2a-7b34-4f10-9a11-22b33c44d55e\",\n  \"plate\": \"ABC1D23\",\n  \"status\": \"pending\",\n  \"stage\": \"queued\",\n  \"found_new_debts\": false,\n  \"error_message\": \"\",\n  \"error_code\": \"\",\n  \"error_title\": \"\",\n  \"error_action\": \"\",\n  \"total_amount\": \"0.00\",\n  \"items\": []\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/vehicles/{vehicle_id}/consultations:
    post:
      operationId: createConsultation
      summary: Consultar débitos
      parameters:
        - name: vehicle_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "201":
          description: Consulta criada
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  status:
                    type: string
                    enum: [pending, ready, failed]
                  stage:
                    type: string
                    enum: [queued, contacting_agency, reading_debts, ready, failed]
                  items:
                    type: array
        "429":
          description: Limite de 20 consultas por hora

Leia a consulta até status sair de pending. Com ready, escolha items com is_payable: true. Se um item tiver depends_on, inclua os dois ids no pedido.

GET/api/v1/consultations/11aa22bb-33cc-44dd-55ee-66ff77889900

Responde 200.

GET https://api.zera.mobi/api/v1/consultations/11aa22bb-33cc-44dd-55ee-66ff77889900
X-Api-Key: zera_live_...
X-Account-Id: 4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f

Sem corpo.
{
  "id": "11aa22bb-33cc-44dd-55ee-66ff77889900",
  "vehicle_id": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e",
  "plate": "ABC1D23",
  "status": "ready",
  "stage": "ready",
  "found_new_debts": true,
  "error_message": "",
  "error_code": "",
  "error_title": "",
  "error_action": "",
  "total_amount": "289.90",
  "items": [
    {
      "id": "99aa88bb-77cc-66dd-55ee-4433221100ff",
      "kind": "licensing",
      "group": "licensing",
      "description": "Licenciamento 2026",
      "amount": "160.00",
      "due_date": "2026-07-31",
      "year": 2026,
      "depends_on": null,
      "depends_on_description": "",
      "is_payable": true
    },
    {
      "id": "aa11bb22-cc33-dd44-ee55-ff6677889900",
      "kind": "ipva",
      "group": "ipva",
      "description": "IPVA 2026",
      "amount": "129.90",
      "due_date": "2026-03-15",
      "year": 2026,
      "depends_on": "99aa88bb-77cc-66dd-55ee-4433221100ff",
      "depends_on_description": "Licenciamento 2026",
      "is_payable": true
    }
  ]
}
{
  "info": {
    "name": "Zera — Ler consulta",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Ler consulta",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          }
        ],
        "url": "{{baseUrl}}/api/v1/consultations/{{consultationId}}"
      },
      "response": [
        {
          "name": "200",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              }
            ],
            "url": "{{baseUrl}}/api/v1/consultations/{{consultationId}}"
          },
          "status": "OK",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"11aa22bb-33cc-44dd-55ee-66ff77889900\",\n  \"vehicle_id\": \"8c1d9e2a-7b34-4f10-9a11-22b33c44d55e\",\n  \"plate\": \"ABC1D23\",\n  \"status\": \"ready\",\n  \"stage\": \"ready\",\n  \"found_new_debts\": true,\n  \"error_message\": \"\",\n  \"error_code\": \"\",\n  \"error_title\": \"\",\n  \"error_action\": \"\",\n  \"total_amount\": \"289.90\",\n  \"items\": [\n    {\n      \"id\": \"99aa88bb-77cc-66dd-55ee-4433221100ff\",\n      \"kind\": \"licensing\",\n      \"group\": \"licensing\",\n      \"description\": \"Licenciamento 2026\",\n      \"amount\": \"160.00\",\n      \"due_date\": \"2026-07-31\",\n      \"year\": 2026,\n      \"depends_on\": null,\n      \"depends_on_description\": \"\",\n      \"is_payable\": true\n    },\n    {\n      \"id\": \"aa11bb22-cc33-dd44-ee55-ff6677889900\",\n      \"kind\": \"ipva\",\n      \"group\": \"ipva\",\n      \"description\": \"IPVA 2026\",\n      \"amount\": \"129.90\",\n      \"due_date\": \"2026-03-15\",\n      \"year\": 2026,\n      \"depends_on\": \"99aa88bb-77cc-66dd-55ee-4433221100ff\",\n      \"depends_on_description\": \"Licenciamento 2026\",\n      \"is_payable\": true\n    }\n  ]\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/consultations/{consultation_id}:
    get:
      operationId: getConsultation
      summary: Ler consulta
      parameters:
        - name: consultation_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: Consulta pronta ou ainda em andamento
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [pending, ready, failed]
                  total_amount:
                    type: string
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        amount:
                          type: string
                        depends_on:
                          type: string
                          format: uuid
                          nullable: true
                        is_payable:
                          type: boolean

Abra o checkout com os ids pagáveis. Pix e boleto já nascem no pedido: troque method para boleto e leia boleto_line e boleto_url. Cartão nasce aqui e cobra no passo seguinte.

POST/api/v1/orders

Responde 201.

{
  "debt_item_ids": [
    "99aa88bb-77cc-66dd-55ee-4433221100ff",
    "aa11bb22-cc33-dd44-ee55-ff6677889900"
  ],
  "method": "pix"
}
{
  "id": "55ee44dd-33cc-22bb-11aa-009988776655",
  "status": "awaiting_payment",
  "method": "pix",
  "purpose": "debts",
  "plate": "ABC1D23",
  "uf": "SP",
  "vehicle_id": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e",
  "debts_amount": "289.90",
  "service_fee": "9.90",
  "total_amount": "299.80",
  "refunded_amount": "0.00",
  "latest_attempt": {
    "method": "pix",
    "status": "pending",
    "pix_copy_paste": "00020126360014BR.GOV.BCB.PIX",
    "pix_expires_at": "2026-10-20T12:31:00-03:00"
  }
}
{
  "info": {
    "name": "Zera — Criar pedido",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Criar pedido",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/api/v1/orders",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"debt_item_ids\": [\n    \"99aa88bb-77cc-66dd-55ee-4433221100ff\",\n    \"aa11bb22-cc33-dd44-ee55-ff6677889900\"\n  ],\n  \"method\": \"pix\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": [
        {
          "name": "201",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{baseUrl}}/api/v1/orders",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"debt_item_ids\": [\n    \"99aa88bb-77cc-66dd-55ee-4433221100ff\",\n    \"aa11bb22-cc33-dd44-ee55-ff6677889900\"\n  ],\n  \"method\": \"pix\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "Created",
          "code": 201,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"55ee44dd-33cc-22bb-11aa-009988776655\",\n  \"status\": \"awaiting_payment\",\n  \"method\": \"pix\",\n  \"purpose\": \"debts\",\n  \"plate\": \"ABC1D23\",\n  \"uf\": \"SP\",\n  \"vehicle_id\": \"8c1d9e2a-7b34-4f10-9a11-22b33c44d55e\",\n  \"debts_amount\": \"289.90\",\n  \"service_fee\": \"9.90\",\n  \"total_amount\": \"299.80\",\n  \"refunded_amount\": \"0.00\",\n  \"latest_attempt\": {\n    \"method\": \"pix\",\n    \"status\": \"pending\",\n    \"pix_copy_paste\": \"00020126360014BR.GOV.BCB.PIX\",\n    \"pix_expires_at\": \"2026-10-20T12:31:00-03:00\"\n  }\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/orders:
    post:
      operationId: createOrder
      summary: Criar pedido
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [debt_item_ids, method]
              properties:
                debt_item_ids:
                  type: array
                  minItems: 1
                  items:
                    type: string
                    format: uuid
                method:
                  type: string
                  enum: [pix, boleto, credit_card]
      responses:
        "201":
          description: Pedido criado
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  status:
                    type: string
                    enum: [awaiting_payment, paying_detran, paid, partial, failed, needs_review, refunded]
                  total_amount:
                    type: string
                  latest_attempt:
                    type: object
                    nullable: true
        "429":
          description: Limite de 30 checkouts por hora

Pix: se o copia e cola ainda não veio, ou venceu, chame de novo o pedido. Cartão: o pedido precisa ter nascido com method credit_card e estar awaiting_payment. O número abaixo é de teste; não grave PAN, validade ou CVC.

Reapresentar Pix

POST/api/v1/orders/55ee44dd-33cc-22bb-11aa-009988776655/pix

Responde 200.

POST https://api.zera.mobi/api/v1/orders/55ee44dd-33cc-22bb-11aa-009988776655/pix
X-Api-Key: zera_live_...
X-Account-Id: 4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f

Sem corpo.
{
  "id": "55ee44dd-33cc-22bb-11aa-009988776655",
  "status": "awaiting_payment",
  "method": "pix",
  "total_amount": "299.80",
  "latest_attempt": {
    "method": "pix",
    "status": "pending",
    "pix_copy_paste": "00020126360014BR.GOV.BCB.PIX",
    "pix_qr_code": "00020126360014BR.GOV.BCB.PIX",
    "pix_expires_at": "2026-10-20T13:01:00-03:00"
  }
}
{
  "info": {
    "name": "Zera — Reapresentar Pix",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Reapresentar Pix",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          }
        ],
        "url": "{{baseUrl}}/api/v1/orders/{{orderId}}/pix"
      },
      "response": [
        {
          "name": "200",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              }
            ],
            "url": "{{baseUrl}}/api/v1/orders/{{orderId}}/pix"
          },
          "status": "OK",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"55ee44dd-33cc-22bb-11aa-009988776655\",\n  \"status\": \"awaiting_payment\",\n  \"method\": \"pix\",\n  \"total_amount\": \"299.80\",\n  \"latest_attempt\": {\n    \"method\": \"pix\",\n    \"status\": \"pending\",\n    \"pix_copy_paste\": \"00020126360014BR.GOV.BCB.PIX\",\n    \"pix_qr_code\": \"00020126360014BR.GOV.BCB.PIX\",\n    \"pix_expires_at\": \"2026-10-20T13:01:00-03:00\"\n  }\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/orders/{order_id}/pix:
    post:
      operationId: refreshPix
      summary: Reapresentar Pix
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: Pedido com a cobrança Pix vigente
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  latest_attempt:
                    type: object
                    properties:
                      pix_copy_paste:
                        type: string
                      pix_qr_code:
                        type: string
                      pix_expires_at:
                        type: string
                        format: date-time
                        nullable: true
        "409":
          description: O pedido não é Pix ou não aguarda pagamento

Pagar com cartão

POST/api/v1/orders/55ee44dd-33cc-22bb-11aa-009988776655/pay-card

Responde 200.

{
  "holder_name": "MARIA SILVA",
  "number": "4111111111111111",
  "expiry": "12/30",
  "cvc": "123",
  "installments": 1
}
{
  "id": "55ee44dd-33cc-22bb-11aa-009988776655",
  "status": "paying_detran",
  "method": "credit_card",
  "debts_amount": "289.90",
  "service_fee": "9.90",
  "total_amount": "299.80",
  "refunded_amount": "0.00",
  "latest_attempt": {
    "method": "credit_card",
    "status": "paid"
  }
}
{
  "info": {
    "name": "Zera — Pagar com cartão",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Pagar com cartão",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/api/v1/orders/{{orderId}}/pay-card",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"holder_name\": \"MARIA SILVA\",\n  \"number\": \"4111111111111111\",\n  \"expiry\": \"12/30\",\n  \"cvc\": \"123\",\n  \"installments\": 1\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": [
        {
          "name": "200",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{baseUrl}}/api/v1/orders/{{orderId}}/pay-card",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"holder_name\": \"MARIA SILVA\",\n  \"number\": \"4111111111111111\",\n  \"expiry\": \"12/30\",\n  \"cvc\": \"123\",\n  \"installments\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "OK",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"55ee44dd-33cc-22bb-11aa-009988776655\",\n  \"status\": \"paying_detran\",\n  \"method\": \"credit_card\",\n  \"debts_amount\": \"289.90\",\n  \"service_fee\": \"9.90\",\n  \"total_amount\": \"299.80\",\n  \"refunded_amount\": \"0.00\",\n  \"latest_attempt\": {\n    \"method\": \"credit_card\",\n    \"status\": \"paid\"\n  }\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/orders/{order_id}/pay-card:
    post:
      operationId: payOrderWithCard
      summary: Pagar pedido com cartão
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [holder_name, number, expiry, cvc]
              properties:
                holder_name:
                  type: string
                number:
                  type: string
                expiry:
                  type: string
                cvc:
                  type: string
                installments:
                  type: integer
                  minimum: 1
                  maximum: 12
                  default: 1
      responses:
        "200":
          description: Pedido após a tentativa. O PAN não volta.
        "409":
          description: Pedido fora de awaiting_payment ou method diferente de credit_card
        "429":
          description: Limite de 30 checkouts por hora

Depois do pagamento o status passa por paying_detran. Leia o pedido até paid, partial, failed, needs_review ou refunded. Cada item traz liquidation_status.

GET/api/v1/orders/55ee44dd-33cc-22bb-11aa-009988776655

Responde 200.

GET https://api.zera.mobi/api/v1/orders/55ee44dd-33cc-22bb-11aa-009988776655
X-Api-Key: zera_live_...
X-Account-Id: 4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f

Sem corpo.
{
  "id": "55ee44dd-33cc-22bb-11aa-009988776655",
  "status": "paid",
  "method": "pix",
  "purpose": "debts",
  "plate": "ABC1D23",
  "uf": "SP",
  "vehicle_id": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e",
  "debts_amount": "289.90",
  "service_fee": "9.90",
  "total_amount": "299.80",
  "refunded_amount": "0.00",
  "review_reason": "",
  "items": [
    {
      "id": "bb22cc33-dd44-ee55-ff66-77889900aabb",
      "debt_item": "99aa88bb-77cc-66dd-55ee-4433221100ff",
      "description": "Licenciamento 2026",
      "amount": "160.00",
      "liquidation_status": "paid",
      "liquidation_error": ""
    },
    {
      "id": "cc33dd44-ee55-ff66-7788-9900aabbccdd",
      "debt_item": "aa11bb22-cc33-dd44-ee55-ff6677889900",
      "description": "IPVA 2026",
      "amount": "129.90",
      "liquidation_status": "paid",
      "liquidation_error": ""
    }
  ],
  "latest_attempt": {
    "method": "pix",
    "status": "paid",
    "pix_copy_paste": "00020126360014BR.GOV.BCB.PIX",
    "pix_expires_at": "2026-10-20T12:31:00-03:00"
  }
}
{
  "info": {
    "name": "Zera — Ler pedido",
    "description": "Importe em Postman: Import, Raw text, e cole este JSON. Troque apiKey pela chave da marca.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.zera.mobi"
    },
    {
      "key": "apiKey",
      "value": "zera_live_SUBSTITUA"
    },
    {
      "key": "accountId",
      "value": "4b6e0c2a-1d4f-4a8b-9c3e-1a2b3c4d5e6f"
    },
    {
      "key": "vehicleId",
      "value": "8c1d9e2a-7b34-4f10-9a11-22b33c44d55e"
    },
    {
      "key": "consultationId",
      "value": "11aa22bb-33cc-44dd-55ee-66ff77889900"
    },
    {
      "key": "orderId",
      "value": "55ee44dd-33cc-22bb-11aa-009988776655"
    }
  ],
  "item": [
    {
      "name": "Ler pedido",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-Api-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "X-Account-Id",
            "value": "{{accountId}}"
          }
        ],
        "url": "{{baseUrl}}/api/v1/orders/{{orderId}}"
      },
      "response": [
        {
          "name": "200",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "X-Api-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "X-Account-Id",
                "value": "{{accountId}}"
              }
            ],
            "url": "{{baseUrl}}/api/v1/orders/{{orderId}}"
          },
          "status": "OK",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"id\": \"55ee44dd-33cc-22bb-11aa-009988776655\",\n  \"status\": \"paid\",\n  \"method\": \"pix\",\n  \"purpose\": \"debts\",\n  \"plate\": \"ABC1D23\",\n  \"uf\": \"SP\",\n  \"vehicle_id\": \"8c1d9e2a-7b34-4f10-9a11-22b33c44d55e\",\n  \"debts_amount\": \"289.90\",\n  \"service_fee\": \"9.90\",\n  \"total_amount\": \"299.80\",\n  \"refunded_amount\": \"0.00\",\n  \"review_reason\": \"\",\n  \"items\": [\n    {\n      \"id\": \"bb22cc33-dd44-ee55-ff66-77889900aabb\",\n      \"debt_item\": \"99aa88bb-77cc-66dd-55ee-4433221100ff\",\n      \"description\": \"Licenciamento 2026\",\n      \"amount\": \"160.00\",\n      \"liquidation_status\": \"paid\",\n      \"liquidation_error\": \"\"\n    },\n    {\n      \"id\": \"cc33dd44-ee55-ff66-7788-9900aabbccdd\",\n      \"debt_item\": \"aa11bb22-cc33-dd44-ee55-ff6677889900\",\n      \"description\": \"IPVA 2026\",\n      \"amount\": \"129.90\",\n      \"liquidation_status\": \"paid\",\n      \"liquidation_error\": \"\"\n    }\n  ],\n  \"latest_attempt\": {\n    \"method\": \"pix\",\n    \"status\": \"paid\",\n    \"pix_copy_paste\": \"00020126360014BR.GOV.BCB.PIX\",\n    \"pix_expires_at\": \"2026-10-20T12:31:00-03:00\"\n  }\n}"
        }
      ]
    }
  ]
}
paths:
  /api/v1/orders/{order_id}:
    get:
      operationId: getOrder
      summary: Ler pedido
      parameters:
        - name: order_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          description: Pedido, itens e última tentativa
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [awaiting_payment, paying_detran, paid, partial, failed, needs_review, refunded]
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        debt_item:
                          type: string
                          format: uuid
                        liquidation_status:
                          type: string
                          enum: [pending, paid, failed, refunded]
                        liquidation_error:
                          type: string
                  latest_attempt:
                    type: object
                    nullable: true

Estados da consulta

status Significado
pending Ainda em andamento. Leia de novo.
ready Terminou. Use items.
failed Não concluiu. Leia error_code, error_title e error_action.

O campo stage detalha a fila: queued, contacting_agency, reading_debts, ready, failed.

  1. pendingAinda em andamento. Leia de novo.
  2. readyTerminou. Use os items.
  3. failedNão concluiu. Leia error_title.

O que guardar do seu lado

Guarde vehicle_id, consultation_id, debt_item_id e order_id. São UUIDs. O pedido também é a chave do webhook order.status_changed.