Efí Pay Pix API

Banco Central Pix API plus Efí Pay extensions (Cash-Out, splits, MED, automatic and recurring Pix, statements, signed PDF receipts, webhooks). OAuth2 client_credentials with mandatory mutual TLS (P12 or PEM certificate) and granular scopes.

Efí Pay Pix API is one of 6 APIs that Efí Pay (Gerencianet) publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 3 JSON Schema definitions.

Tagged areas include Pix, Cob, CobV, Cobr, and Recurring Pix. The published artifact set on APIs.io includes API documentation, an API reference, an OpenAPI specification, sample payloads, 3 Naftiko capability specs, and 3 JSON Schemas.

Documentation

Specifications

Examples

Schemas & Data

Other Resources

OpenAPI Specification

efi-pix-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Efí Pay Pix API
  description: >-
    Brazilian Pix instant-payments API for Efí Pay (formerly Gerencianet).
    Implements the Banco Central do Brasil Pix specification (cob/cobv/cobr,
    locations, devolutions, Pix keys/EVP) plus Efí Pay extensions for Cash-Out
    (pixSend), splits, MED infractions, recurring/automatic Pix, statements,
    receipts, and webhooks. OAuth2 client_credentials with mandatory mutual TLS
    (P12/PEM certificate).
  version: "2.0"
  contact:
    name: Efí Pay Developer Support
    url: https://dev.efipay.com.br/docs/api-pix
  license:
    name: Proprietary
servers:
  - url: https://pix.api.efipay.com.br
    description: Production
  - url: https://pix-h.api.efipay.com.br
    description: Homologation (Sandbox)
security:
  - oauth2Pix: []
tags:
  - name: Authorization
  - name: Immediate Charges
  - name: Due Charges
  - name: Due Charge Batches
  - name: Automatic Charges
  - name: Recurring Pix
  - name: Pix Send
  - name: Received Pix
  - name: Devolutions
  - name: Locations
  - name: QR Codes
  - name: Pix Keys
  - name: Account
  - name: Splits
  - name: MED Infractions
  - name: Reports
  - name: Receipts
  - name: Webhooks
paths:
  /oauth/token:
    post:
      tags: [Authorization]
      summary: Issue Pix Access Token
      operationId: pixAuthorize
      responses: { "200": { description: Token } }
  /v2/cob:
    post:
      tags: [Immediate Charges]
      summary: Create Immediate Pix Charge
      operationId: pixCreateImmediateCharge
      responses: { "201": { description: Charge created } }
    get:
      tags: [Immediate Charges]
      summary: List Immediate Pix Charges
      operationId: pixListCharges
      responses: { "200": { description: Charges } }
  /v2/cob/{txid}:
    put:
      tags: [Immediate Charges]
      summary: Create Immediate Pix Charge With Txid
      operationId: pixCreateCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "201": { description: Created } }
    patch:
      tags: [Immediate Charges]
      summary: Update Immediate Pix Charge
      operationId: pixUpdateCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
    get:
      tags: [Immediate Charges]
      summary: Detail Immediate Pix Charge
      operationId: pixDetailCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Charge } }
  /v2/cobv:
    get:
      tags: [Due Charges]
      summary: List Pix Due Charges
      operationId: pixListDueCharges
      responses: { "200": { description: Due charges } }
  /v2/cobv/{txid}:
    put:
      tags: [Due Charges]
      summary: Create Pix Due Charge
      operationId: pixCreateDueCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "201": { description: Created } }
    patch:
      tags: [Due Charges]
      summary: Update Pix Due Charge
      operationId: pixUpdateDueCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
    get:
      tags: [Due Charges]
      summary: Detail Pix Due Charge
      operationId: pixDetailDueCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Due charge } }
  /v2/lotecobv:
    get:
      tags: [Due Charge Batches]
      summary: List Due Charge Batches
      operationId: pixListDueChargeBatch
      responses: { "200": { description: Batches } }
  /v2/lotecobv/{id}:
    put:
      tags: [Due Charge Batches]
      summary: Create Due Charge Batch
      operationId: pixCreateDueChargeBatch
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "201": { description: Created } }
    patch:
      tags: [Due Charge Batches]
      summary: Update Due Charge Batch
      operationId: pixUpdateDueChargeBatch
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
    get:
      tags: [Due Charge Batches]
      summary: Detail Due Charge Batch
      operationId: pixDetailDueChargeBatch
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Batch } }
  /v2/cobr:
    post:
      tags: [Automatic Charges]
      summary: Create Automatic Pix Charge
      operationId: pixCreateAutomaticCharge
      responses: { "201": { description: Created } }
    get:
      tags: [Automatic Charges]
      summary: List Automatic Pix Charges
      operationId: pixListAutomaticCharge
      responses: { "200": { description: Charges } }
  /v2/cobr/{txid}:
    put:
      tags: [Automatic Charges]
      summary: Create Automatic Pix Charge With Txid
      operationId: pixCreateAutomaticChargeTxid
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "201": { description: Created } }
    patch:
      tags: [Automatic Charges]
      summary: Update Automatic Pix Charge
      operationId: pixUpdateAutomaticCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
    get:
      tags: [Automatic Charges]
      summary: Detail Automatic Pix Charge
      operationId: pixDetailAutomaticCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Charge } }
  /v2/cobr/{txid}/retentativa/{data}:
    post:
      tags: [Automatic Charges]
      summary: Retry Automatic Pix Charge
      operationId: pixRetryRequestAutomaticCharge
      parameters:
        - { name: txid, in: path, required: true, schema: { type: string } }
        - { name: data, in: path, required: true, schema: { type: string, format: date } }
      responses: { "200": { description: Retried } }
  /v2/rec:
    post:
      tags: [Recurring Pix]
      summary: Create Recurring Pix
      operationId: pixCreateRecurrenceAutomatic
      responses: { "201": { description: Created } }
    get:
      tags: [Recurring Pix]
      summary: List Recurring Pix
      operationId: pixListRecurrenceAutomatic
      responses: { "200": { description: Recurrences } }
  /v2/rec/{idRec}:
    get:
      tags: [Recurring Pix]
      summary: Detail Recurring Pix
      operationId: pixDetailRecurrenceAutomatic
      parameters: [{ name: idRec, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Recurrence } }
    patch:
      tags: [Recurring Pix]
      summary: Update Recurring Pix
      operationId: pixUpdateRecurrenceAutomatic
      parameters: [{ name: idRec, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
  /v2/solicrec:
    post:
      tags: [Recurring Pix]
      summary: Create Recurring Pix Request
      operationId: pixCreateRequestRecurrenceAutomatic
      responses: { "201": { description: Created } }
  /v2/solicrec/{idSolicRec}:
    get:
      tags: [Recurring Pix]
      summary: Detail Recurring Pix Request
      operationId: pixDetailRequestRecurrenceAutomatic
      parameters: [{ name: idSolicRec, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Request } }
    patch:
      tags: [Recurring Pix]
      summary: Update Recurring Pix Request
      operationId: pixUpdateRequestRecurrenceAutomatic
      parameters: [{ name: idSolicRec, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
  /v2/locrec:
    post:
      tags: [Recurring Pix]
      summary: Create Recurring Pix Location
      operationId: pixCreateLocationRecurrenceAutomatic
      responses: { "201": { description: Created } }
    get:
      tags: [Recurring Pix]
      summary: List Recurring Pix Locations
      operationId: pixListLocationRecurrenceAutomatic
      responses: { "200": { description: Locations } }
  /v2/locrec/{id}:
    get:
      tags: [Recurring Pix]
      summary: Detail Recurring Pix Location
      operationId: pixDetailLocationRecurrenceAutomatic
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Location } }
  /v2/locrec/{id}/idRec:
    delete:
      tags: [Recurring Pix]
      summary: Unlink Recurring Pix Location
      operationId: pixUnlinkLocationRecurrenceAutomatic
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "204": { description: Unlinked } }
  /v3/gn/pix/{idEnvio}:
    put:
      tags: [Pix Send]
      summary: Send Pix Cash Out
      operationId: pixSend
      parameters: [{ name: idEnvio, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Sent } }
  /v2/gn/pix/{idEnvio}/qrcode:
    put:
      tags: [Pix Send]
      summary: Pay Pix QR Code
      operationId: pixQrCodePay
      parameters: [{ name: idEnvio, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Paid } }
  /v2/gn/pix/{idEnvio}/mesma-titularidade:
    put:
      tags: [Pix Send]
      summary: Send Pix Same Ownership
      operationId: pixSendSameOwnership
      parameters: [{ name: idEnvio, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Sent } }
  /v2/gn/pix/enviados:
    get:
      tags: [Pix Send]
      summary: List Sent Pix
      operationId: pixSendList
      responses: { "200": { description: Sent Pix list } }
  /v2/gn/pix/enviados/{e2eid}:
    get:
      tags: [Pix Send]
      summary: Detail Sent Pix
      operationId: pixSendDetail
      parameters: [{ name: e2eid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Detail } }
  /v2/gn/pix/enviados/id-envio/{idEnvio}:
    get:
      tags: [Pix Send]
      summary: Detail Sent Pix By Send Id
      operationId: pixSendDetailId
      parameters: [{ name: idEnvio, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Detail } }
  /v2/pix:
    get:
      tags: [Received Pix]
      summary: List Received Pix
      operationId: pixReceivedList
      responses: { "200": { description: Received Pix } }
  /v2/pix/{e2eId}:
    get:
      tags: [Received Pix]
      summary: Detail Received Pix
      operationId: pixDetailReceived
      parameters: [{ name: e2eId, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Received Pix } }
  /v2/pix/{e2eId}/devolucao/{id}:
    put:
      tags: [Devolutions]
      summary: Create Pix Devolution
      operationId: pixDevolution
      parameters:
        - { name: e2eId, in: path, required: true, schema: { type: string } }
        - { name: id, in: path, required: true, schema: { type: string } }
      responses: { "201": { description: Devolution issued } }
    get:
      tags: [Devolutions]
      summary: Detail Pix Devolution
      operationId: pixDetailDevolution
      parameters:
        - { name: e2eId, in: path, required: true, schema: { type: string } }
        - { name: id, in: path, required: true, schema: { type: string } }
      responses: { "200": { description: Devolution } }
  /v2/loc:
    post:
      tags: [Locations]
      summary: Create Pix Location
      operationId: pixCreateLocation
      responses: { "201": { description: Location } }
    get:
      tags: [Locations]
      summary: List Pix Locations
      operationId: pixLocationList
      responses: { "200": { description: Locations } }
  /v2/loc/{id}:
    get:
      tags: [Locations]
      summary: Detail Pix Location
      operationId: pixDetailLocation
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Location } }
  /v2/loc/{id}/qrcode:
    get:
      tags: [QR Codes]
      summary: Generate Pix QR Code
      operationId: pixGenerateQRCode
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: QR Code payload } }
  /v2/loc/{id}/txid:
    delete:
      tags: [Locations]
      summary: Unlink Txid From Location
      operationId: pixUnlinkTxidLocation
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "204": { description: Unlinked } }
  /v2/gn/qrcodes/detalhar:
    post:
      tags: [QR Codes]
      summary: Detail Pix QR Code
      operationId: pixQrCodeDetail
      responses: { "200": { description: Decoded QR Code } }
  /v2/gn/evp:
    post:
      tags: [Pix Keys]
      summary: Create Random Pix Key
      operationId: pixCreateEvp
      responses: { "201": { description: Key created } }
    get:
      tags: [Pix Keys]
      summary: List Random Pix Keys
      operationId: pixListEvp
      responses: { "200": { description: Keys } }
  /v2/gn/evp/{chave}:
    delete:
      tags: [Pix Keys]
      summary: Delete Random Pix Key
      operationId: pixDeleteEvp
      parameters: [{ name: chave, in: path, required: true, schema: { type: string } }]
      responses: { "204": { description: Deleted } }
  /v2/gn/chaves/balde:
    get:
      tags: [Pix Keys]
      summary: List Pix Keys Bucket
      operationId: pixKeysBucket
      responses: { "200": { description: Bucket } }
  /v2/gn/saldo:
    get:
      tags: [Account]
      summary: Get Account Balance
      operationId: getAccountBalance
      responses: { "200": { description: Balance } }
  /v2/gn/config:
    get:
      tags: [Account]
      summary: List Account Config
      operationId: listAccountConfig
      responses: { "200": { description: Config } }
    put:
      tags: [Account]
      summary: Update Account Config
      operationId: updateAccountConfig
      responses: { "200": { description: Updated } }
  /v2/gn/split/cob/{txid}:
    get:
      tags: [Splits]
      summary: Detail Charge Split
      operationId: pixSplitDetailCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Split } }
  /v2/gn/split/cob/{txid}/vinculo/{splitConfigId}:
    put:
      tags: [Splits]
      summary: Link Split To Charge
      operationId: pixSplitLinkCharge
      parameters:
        - { name: txid, in: path, required: true, schema: { type: string } }
        - { name: splitConfigId, in: path, required: true, schema: { type: string } }
      responses: { "200": { description: Linked } }
    delete:
      tags: [Splits]
      summary: Unlink Split From Charge
      operationId: pixSplitUnlinkCharge
      parameters:
        - { name: txid, in: path, required: true, schema: { type: string } }
        - { name: splitConfigId, in: path, required: true, schema: { type: string } }
      responses: { "204": { description: Unlinked } }
  /v2/gn/split/cobv/{txid}:
    get:
      tags: [Splits]
      summary: Detail Due Charge Split
      operationId: pixSplitDetailDueCharge
      parameters: [{ name: txid, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Split } }
  /v2/gn/split/cobv/{txid}/vinculo/{splitConfigId}:
    put:
      tags: [Splits]
      summary: Link Split To Due Charge
      operationId: pixSplitLinkDueCharge
      parameters:
        - { name: txid, in: path, required: true, schema: { type: string } }
        - { name: splitConfigId, in: path, required: true, schema: { type: string } }
      responses: { "200": { description: Linked } }
    delete:
      tags: [Splits]
      summary: Unlink Split From Due Charge
      operationId: pixSplitUnlinkDueCharge
      parameters:
        - { name: txid, in: path, required: true, schema: { type: string } }
        - { name: splitConfigId, in: path, required: true, schema: { type: string } }
      responses: { "204": { description: Unlinked } }
  /v2/gn/split/config:
    post:
      tags: [Splits]
      summary: Create Split Config
      operationId: pixSplitConfig
      responses: { "201": { description: Created } }
  /v2/gn/split/config/{id}:
    put:
      tags: [Splits]
      summary: Update Split Config
      operationId: pixSplitConfigId
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Updated } }
    get:
      tags: [Splits]
      summary: Detail Split Config
      operationId: pixSplitDetailConfig
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Config } }
  /v2/gn/infracoes:
    get:
      tags: [MED Infractions]
      summary: List MED Infractions
      operationId: medList
      responses: { "200": { description: Infractions } }
  /v2/gn/infracoes/{idInfracao}/defesa:
    post:
      tags: [MED Infractions]
      summary: Submit MED Defense
      operationId: medDefense
      parameters: [{ name: idInfracao, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Submitted } }
  /v2/gn/relatorios/extrato-conciliacao:
    post:
      tags: [Reports]
      summary: Create Reconciliation Report
      operationId: createReport
      responses: { "201": { description: Report queued } }
  /v2/gn/relatorios/{id}:
    get:
      tags: [Reports]
      summary: Detail Reconciliation Report
      operationId: detailReport
      parameters: [{ name: id, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Report } }
  /v2/gn/pix/comprovantes:
    get:
      tags: [Receipts]
      summary: Get Pix Receipt
      operationId: pixGetReceipt
      responses: { "200": { description: Receipt PDF } }
  /v2/webhook/{chave}:
    put:
      tags: [Webhooks]
      summary: Configure Pix Webhook
      operationId: pixConfigWebhook
      parameters: [{ name: chave, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Configured } }
    get:
      tags: [Webhooks]
      summary: Detail Pix Webhook
      operationId: pixDetailWebhook
      parameters: [{ name: chave, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Webhook } }
    delete:
      tags: [Webhooks]
      summary: Delete Pix Webhook
      operationId: pixDeleteWebhook
      parameters: [{ name: chave, in: path, required: true, schema: { type: string } }]
      responses: { "204": { description: Deleted } }
  /v2/webhook:
    get:
      tags: [Webhooks]
      summary: List Pix Webhooks
      operationId: pixListWebhook
      responses: { "200": { description: Webhooks } }
  /v2/webhookrec:
    put:
      tags: [Webhooks]
      summary: Configure Recurring Pix Webhook
      operationId: pixConfigWebhookRecurrenceAutomatic
      responses: { "200": { description: Configured } }
    get:
      tags: [Webhooks]
      summary: List Recurring Pix Webhooks
      operationId: pixListWebhookRecurrenceAutomatic
      responses: { "200": { description: Webhooks } }
    delete:
      tags: [Webhooks]
      summary: Delete Recurring Pix Webhook
      operationId: pixDeleteWebhookRecurrenceAutomatic
      responses: { "204": { description: Deleted } }
  /v2/webhookcobr:
    put:
      tags: [Webhooks]
      summary: Configure Automatic Charge Webhook
      operationId: pixConfigWebhookAutomaticCharge
      responses: { "200": { description: Configured } }
    get:
      tags: [Webhooks]
      summary: List Automatic Charge Webhooks
      operationId: pixListWebhookAutomaticCharge
      responses: { "200": { description: Webhooks } }
    delete:
      tags: [Webhooks]
      summary: Delete Automatic Charge Webhook
      operationId: pixDeleteWebhookAutomaticCharge
      responses: { "204": { description: Deleted } }
  /v2/gn/webhook/reenviar:
    post:
      tags: [Webhooks]
      summary: Resend Pix Webhook
      operationId: pixResendWebhook
      responses: { "200": { description: Resent } }
components:
  securitySchemes:
    oauth2Pix:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://pix.api.efipay.com.br/oauth/token
          scopes:
            cob.read: Read immediate charges
            cob.write: Create/update immediate charges
            cobv.read: Read due charges
            cobv.write: Create/update due charges
            pix.read: Read received Pix
            pix.write: Manage devolutions
            pix.send: Send Pix
            webhook.read: Read webhook config
            webhook.write: Configure webhooks
            gn.balance.read: Read account balance
  schemas:
    Cob:
      type: object
      properties:
        txid: { type: string }
        status: { type: string, enum: [ATIVA, CONCLUIDA, REMOVIDA_PELO_USUARIO_RECEBEDOR, REMOVIDA_PELO_PSP] }
        valor:
          type: object
          properties:
            original: { type: string }
        chave: { type: string, description: Receiver Pix key }
        calendario:
          type: object
          properties:
            criacao: { type: string, format: date-time }
            expiracao: { type: integer }
        devedor:
          type: object
        loc:
          type: object
          properties:
            id: { type: integer }
            location: { type: string }
    Pix:
      type: object
      properties:
        endToEndId: { type: string }
        txid: { type: string }
        valor: { type: string }
        horario: { type: string, format: date-time }
        infoPagador: { type: string }
        pagador:
          type: object