Efí Pay Cobranças API

Brazilian billing API for boletos, Bolix (next-business-day boletos), carnês (installment booklets), payment links, credit cards, subscriptions, and marketplace splits. OAuth2 with HTTP Basic authentication; cobrancas-h.api.efipay.com.br for sandbox.

Efí Pay Cobranças 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 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Cobranças, Boleto, Bolix, Carnê, and Credit Card. The published artifact set on APIs.io includes API documentation, an API reference, an OpenAPI specification, sample payloads, 2 Naftiko capability specs, and 2 JSON Schemas.

OpenAPI Specification

efi-cobrancas-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Efí Pay Cobranças API
  description: >-
    Billing API for Efí Pay (formerly Gerencianet). Issue boletos (Brazilian bank
    slips), Bolix (next-business-day boletos), carnês (installment booklets),
    payment links, credit card charges, subscriptions/recurring billing, and
    marketplace payment splits. OAuth2 with HTTP Basic for client_credentials.
  version: "1.0"
  contact:
    name: Efí Pay Developer Support
    url: https://dev.efipay.com.br
  license:
    name: Proprietary
servers:
  - url: https://cobrancas.api.efipay.com.br/v1
    description: Production
  - url: https://cobrancas-h.api.efipay.com.br/v1
    description: Homologation (Sandbox)
security:
  - oauth2ClientCredentials: []
tags:
  - name: Authorization
  - name: Charges
  - name: Carnets
  - name: Subscriptions
  - name: Plans
  - name: Payment Links
  - name: Notifications
  - name: Card Payments
paths:
  /authorize:
    post:
      tags: [Authorization]
      summary: Issue Access Token
      description: Exchange client_id and client_secret (HTTP Basic) for an OAuth2 access token used to authenticate subsequent Cobranças API calls.
      operationId: authorize
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                  enum: [client_credentials]
      responses:
        "200":
          description: Access token issued
  /charge:
    post:
      tags: [Charges]
      summary: Create Charge
      operationId: createCharge
      responses: { "200": { description: Charge created } }
  /charge/one-step:
    post:
      tags: [Charges]
      summary: Create One Step Charge
      operationId: createOneStepCharge
      responses: { "200": { description: Charge created } }
  /charge/one-step/link:
    post:
      tags: [Payment Links]
      summary: Create One Step Charge Link
      operationId: createOneStepLink
      responses: { "200": { description: Link created } }
  /charge/{id}:
    get:
      tags: [Charges]
      summary: Detail Charge
      operationId: detailCharge
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Charge detail } }
  /charges:
    get:
      tags: [Charges]
      summary: List Charges
      operationId: listCharges
      responses: { "200": { description: Charges list } }
  /charge/{id}/cancel:
    put:
      tags: [Charges]
      summary: Cancel Charge
      operationId: cancelCharge
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Cancelled } }
  /charge/{id}/pay:
    post:
      tags: [Charges]
      summary: Define Payment Method
      operationId: definePayMethod
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Method applied } }
  /charge/{id}/billet:
    put:
      tags: [Charges]
      summary: Update Billet
      operationId: updateBillet
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Updated } }
  /charge/{id}/billet/resend:
    post:
      tags: [Charges]
      summary: Send Billet Email
      operationId: sendBilletEmail
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Email queued } }
  /charge/{id}/metadata:
    put:
      tags: [Charges]
      summary: Update Charge Metadata
      operationId: updateChargeMetadata
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Metadata updated } }
  /charge/{id}/history:
    post:
      tags: [Charges]
      summary: Create Charge History Note
      operationId: createChargeHistory
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Note added } }
  /charge/{id}/balance-sheet:
    post:
      tags: [Charges]
      summary: Define Balance Sheet Billet
      operationId: defineBalanceSheetBillet
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Balance sheet set } }
  /charge/{id}/settle:
    put:
      tags: [Charges]
      summary: Settle Charge Manually
      operationId: settleCharge
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Settled } }
  /charge/{id}/retry:
    post:
      tags: [Card Payments]
      summary: Retry Card Payment
      operationId: cardPaymentRetry
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Retried } }
  /charge/card/{id}/refund:
    post:
      tags: [Card Payments]
      summary: Refund Card Charge
      operationId: refundCard
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Refund issued } }
  /charge/{id}/link:
    post:
      tags: [Payment Links]
      summary: Create Charge Link
      operationId: linkCharge
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Link created } }
    put:
      tags: [Payment Links]
      summary: Update Charge Link
      operationId: updateChargeLink
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Link updated } }
  /charge/{id}/link/resend:
    post:
      tags: [Payment Links]
      summary: Send Link Email
      operationId: sendLinkEmail
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Email queued } }
  /carnet:
    post:
      tags: [Carnets]
      summary: Create Carnet
      operationId: createCarnet
      responses: { "200": { description: Carnet created } }
  /carnet/{id}:
    get:
      tags: [Carnets]
      summary: Detail Carnet
      operationId: detailCarnet
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Carnet detail } }
  /carnet/{id}/parcels:
    put:
      tags: [Carnets]
      summary: Update Carnet Parcels
      operationId: updateCarnetParcels
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Parcels updated } }
  /carnet/{id}/parcel/{parcel}:
    put:
      tags: [Carnets]
      summary: Update Carnet Parcel
      operationId: updateCarnetParcel
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: parcel, in: path, required: true, schema: { type: integer } }
      responses: { "200": { description: Parcel updated } }
  /carnet/{id}/parcel/{parcel}/cancel:
    put:
      tags: [Carnets]
      summary: Cancel Carnet Parcel
      operationId: cancelCarnetParcel
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: parcel, in: path, required: true, schema: { type: integer } }
      responses: { "200": { description: Cancelled } }
  /carnet/{id}/parcel/{parcel}/settle:
    put:
      tags: [Carnets]
      summary: Settle Carnet Parcel
      operationId: settleCarnetParcel
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: parcel, in: path, required: true, schema: { type: integer } }
      responses: { "200": { description: Settled } }
  /carnet/{id}/parcel/{parcel}/resend:
    post:
      tags: [Carnets]
      summary: Send Carnet Parcel Email
      operationId: sendCarnetParcelEmail
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: parcel, in: path, required: true, schema: { type: integer } }
      responses: { "200": { description: Email queued } }
  /carnet/{id}/cancel:
    put:
      tags: [Carnets]
      summary: Cancel Carnet
      operationId: cancelCarnet
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Cancelled } }
  /carnet/{id}/settle:
    put:
      tags: [Carnets]
      summary: Settle Carnet
      operationId: settleCarnet
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Settled } }
  /carnet/{id}/history:
    post:
      tags: [Carnets]
      summary: Create Carnet History Note
      operationId: createCarnetHistory
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Note added } }
  /carnet/{id}/metadata:
    put:
      tags: [Carnets]
      summary: Update Carnet Metadata
      operationId: updateCarnetMetadata
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Metadata updated } }
  /carnet/{id}/resend:
    post:
      tags: [Carnets]
      summary: Send Carnet Email
      operationId: sendCarnetEmail
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Email queued } }
  /plans:
    get:
      tags: [Plans]
      summary: List Plans
      operationId: listPlans
      responses: { "200": { description: Plans } }
  /plan:
    post:
      tags: [Plans]
      summary: Create Plan
      operationId: createPlan
      responses: { "200": { description: Plan created } }
  /plan/{id}:
    put:
      tags: [Plans]
      summary: Update Plan
      operationId: updatePlan
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Updated } }
    delete:
      tags: [Plans]
      summary: Delete Plan
      operationId: deletePlan
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Deleted } }
  /plan/{id}/subscription:
    post:
      tags: [Subscriptions]
      summary: Create Subscription
      operationId: createSubscription
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Subscription created } }
  /plan/{id}/subscription/one-step:
    post:
      tags: [Subscriptions]
      summary: Create One Step Subscription
      operationId: createOneStepSubscription
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Subscription created } }
  /plan/{id}/subscription/one-step/link:
    post:
      tags: [Subscriptions]
      summary: Create One Step Subscription Link
      operationId: createOneStepSubscriptionLink
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Link created } }
  /subscription/{id}:
    get:
      tags: [Subscriptions]
      summary: Detail Subscription
      operationId: detailSubscription
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Subscription detail } }
    put:
      tags: [Subscriptions]
      summary: Update Subscription
      operationId: updateSubscription
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Updated } }
  /subscription/{id}/pay:
    post:
      tags: [Subscriptions]
      summary: Define Subscription Payment Method
      operationId: defineSubscriptionPayMethod
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Applied } }
  /subscription/{id}/cancel:
    put:
      tags: [Subscriptions]
      summary: Cancel Subscription
      operationId: cancelSubscription
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Cancelled } }
  /subscription/{id}/metadata:
    put:
      tags: [Subscriptions]
      summary: Update Subscription Metadata
      operationId: updateSubscriptionMetadata
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Updated } }
  /subscription/{id}/history:
    post:
      tags: [Subscriptions]
      summary: Create Subscription History Note
      operationId: createSubscriptionHistory
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Note added } }
  /charge/{id}/subscription/resend:
    post:
      tags: [Subscriptions]
      summary: Send Subscription Link Email
      operationId: sendSubscriptionLinkEmail
      parameters: [{ name: id, in: path, required: true, schema: { type: integer } }]
      responses: { "200": { description: Email queued } }
  /installments:
    get:
      tags: [Card Payments]
      summary: Get Installments
      operationId: getInstallments
      responses: { "200": { description: Installments } }
  /notification/{token}:
    get:
      tags: [Notifications]
      summary: Get Notification
      operationId: getNotification
      parameters: [{ name: token, in: path, required: true, schema: { type: string } }]
      responses: { "200": { description: Notification payload } }
components:
  securitySchemes:
    oauth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://cobrancas.api.efipay.com.br/v1/authorize
          scopes: {}
  schemas:
    Charge:
      type: object
      properties:
        charge_id: { type: integer }
        status: { type: string, enum: [new, waiting, paid, unpaid, refunded, contested, settled, link, identified, canceled, expired] }
        total: { type: integer, description: Total in cents }
        items:
          type: array
          items:
            type: object
            properties:
              name: { type: string }
              value: { type: integer }
              amount: { type: integer }
        payment:
          type: object
        created_at: { type: string, format: date-time }
    Subscription:
      type: object
      properties:
        subscription_id: { type: integer }
        plan_id: { type: integer }
        status: { type: string }
        next_execution: { type: string, format: date }
    Plan:
      type: object
      properties:
        plan_id: { type: integer }
        name: { type: string }
        interval: { type: integer }
        repeats: { type: integer, nullable: true }