> ## Documentation Index
> Fetch the complete documentation index at: https://developers.portao3.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a boleto

> Issues a boleto for an invoice your organization issued.

The boleto charges `txnAmount` or, without it, what the invoice still owes, with the invoice's late fee, interest and discount. It is due on `dueAt` and can be paid until `expiresAt`. `customer` replaces the payer data printed on it. The invoice must accept `BANK_SLIP` (in its `allowedPaymentMethods` or as a secondary payment method of its deal), must not be paid or canceled, and the amount must be at least 1 centavo. The `BILLING_INVOICE_PAYMENT_CREATED` webhook event is sent. A request sent twice issues two boletos.

Any member of the organization, or an admin of the realm, can issue one. Answers the `BANK_SLIP_CREATED` statement, with the boleto's digitable line and barcode in `paymentData.bankSlip`. Get its PDF with `GET .../invoices/{invoiceId}/download-pdf`.


## OpenAPI

````yaml /api-reference/billing.openapi.json post /realms/{realmId}/organizations/{organizationId}/invoices/{invoiceId}/bank-slip
openapi: 3.0.3
info:
  title: Billing
  version: 1.0.0
  description: >-
    Portão 3 billing API. Every endpoint requires a bearer token in the
    Authorization header (Authorization: Bearer <token>) unless its page states
    otherwise; see the Authentication guide. That requirement is not repeated
    per endpoint. Generated by tools/openapi from code (routes + security) and
    the hand-written spec (request/response bodies). Full billing surface —
    contracts, deals, invoices, statements, payment links, checkout and NFSe
    orchestration. (The product/supplier catalog moved to registry.) Confidence
    tiers: generated:typed=74 copied:manual=0 unknown=5.
servers:
  - url: https://api.billing.v2.portao3.com.br/
    description: production
  - url: https://api.billing.dev.3pers.com.br/
    description: development
security: []
tags:
  - name: Contracts
  - name: Deals
  - name: Invoices
  - name: Invoice Entries
  - name: Invoice Statements
  - name: NFSe Configuration
  - name: Payment Links
paths:
  /realms/{realmId}/organizations/{organizationId}/invoices/{invoiceId}/bank-slip:
    post:
      tags:
        - Invoice Statements
      summary: Create a boleto
      description: Issues a boleto for an invoice your organization issued.
      operationId: >-
        postRealmsByRealmIdOrganizationsByOrganizationIdInvoicesByInvoiceIdBankSlip
      parameters:
        - name: realmId
          in: path
          required: true
          description: |-
            ID of your realm.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
        - name: organizationId
          in: path
          required: true
          description: |-
            ID of your organization: the one that issued the invoice.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
        - name: invoiceId
          in: path
          required: true
          description: |-
            ID of the invoice to charge.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: 0b7c2a44-6f1e-4d3b-9a8e-5c2f1d0e9b7a
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                dueAt:
                  minLength: 1
                  description: >-
                    When the charge is due: today or later (ISO 8601 date or
                    date-time).
                  example: '2026-11-10'
                  anyOf:
                    - type: string
                      format: date
                    - type: string
                      format: date-time
                expiresAt:
                  minLength: 1
                  description: >-
                    The last day the charge can be paid: at least one day after
                    `dueAt` (ISO 8601 date or date-time).
                  example: '2026-12-10'
                  anyOf:
                    - type: string
                      format: date
                    - type: string
                      format: date-time
                txnAmount:
                  description: >-
                    The amount to charge, in centavos (at least 1). Omit it to
                    charge what the invoice still owes.
                  example: 15000
                  type: integer
                  minimum: 1
                customer:
                  description: >-
                    The payer printed on the boleto or the PIX charge. Each
                    field sent replaces the invoice's payer data; the ones
                    omitted keep it. Not used by `p2p-billing`.
                  type: object
                  properties:
                    name:
                      description: Name of the payer.
                      example: Maria Silva
                      type: string
                    email:
                      description: E-mail of the payer.
                      example: maria.silva@exemplo.com.br
                      type: string
                    document:
                      description: CPF or CNPJ of the payer, digits only.
                      example: '11144477735'
                      type: string
                    address:
                      description: >-
                        Address of the payer. When sent, it replaces the whole
                        stored address.
                      type: object
                      properties:
                        street:
                          type: string
                          example: Rua das Flores
                        number:
                          type: string
                          example: '123'
                        complement:
                          type: string
                          example: Sala 4
                        neighborhood:
                          type: string
                          example: Centro
                        city:
                          type: string
                          example: São Paulo
                        state:
                          type: string
                          description: State abbreviation (UF).
                          example: SP
                        postalCode:
                          type: string
                          description: Postal code (CEP), as `NNNNN-NNN`.
                          example: 01310-100
              required:
                - dueAt
                - expiresAt
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the statement.
                    example: 9d4e1f6a-3b2c-4a5d-8e7f-1a2b3c4d5e6f
                    format: uuid
                  realm:
                    type: string
                    description: >-
                      ID of the realm of the organization that issued the
                      invoice.
                    example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                    format: uuid
                  organization:
                    type: string
                    description: ID of the organization that issued the invoice.
                    example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                    format: uuid
                  invoice:
                    type: string
                    description: ID of the invoice.
                    example: 0b7c2a44-6f1e-4d3b-9a8e-5c2f1d0e9b7a
                    format: uuid
                  identifier:
                    type: string
                    description: >-
                      The kind of movement. Portão 3 writes `INVOICE_CLOSED` (a
                      `DEBIT` for the invoice amount, when the invoice closes),
                      one statement per payment instrument created for the
                      invoice — `BANK_SLIP_CREATED` (boleto), `PIX_CREATED` (PIX
                      charge), `P2P_CREATED` (a debit from the payer's Portão 3
                      account) and `PIX_INITIATION_CREATED` (PIX Automático or
                      recurring scheduled PIX) —, `INTEREST_AND_FINES` (a
                      `DEBIT` for what a late boleto or PIX payment paid above
                      the charge) and `MANUAL_SETTLEMENT` (the invoice was
                      marked as paid by hand). A statement recorded through the
                      API carries the label it was sent with.
                    example: BANK_SLIP_CREATED
                  description:
                    type: string
                    description: >-
                      Free text describing the movement. Empty when there is
                      none.
                    example: Boleto da fatura de outubro
                  billingAmount:
                    type: integer
                    description: >-
                      Amount in centavos (`15000` is R$ 150,00) that counts
                      toward the invoice balance while the statement is `DONE`:
                      as paid when `financialImpactType` is `CREDIT`, as owed
                      when it is `DEBIT`. A payment instrument starts at `0` and
                      takes the amount actually paid when it is paid.
                    example: 15000
                  originalAmount:
                    type: integer
                    description: >-
                      Reference amount in centavos: the amount a payment
                      instrument charges, the invoice amount on `INVOICE_CLOSED`
                      and `MANUAL_SETTLEMENT`, or the amount sent on a statement
                      recorded through the API. Informational: it does not
                      change the balance.
                    example: 15000
                  financialImpactType:
                    type: string
                    enum:
                      - CREDIT
                      - DEBIT
                      - NONE
                    description: >-
                      `CREDIT`: reduces what is owed (a payment, a discount).
                      `DEBIT`: adds to what is owed (the invoice amount,
                      interest and fines, a fee). `NONE`: no effect on the
                      balance.
                    example: CREDIT
                  status:
                    type: string
                    enum:
                      - CREATED
                      - PROCESSING
                      - SCHEDULED
                      - PAID
                      - CANCELED
                      - DONE
                      - ERROR
                      - SCHEDULE_ERROR
                    description: >-
                      Only `DONE` counts toward the balance. `DONE`: in effect —
                      the amount owed, a paid instrument, an adjustment or a
                      settlement. `CREATED`: a payment instrument waiting to be
                      paid (a PIX charge, a registered boleto, a PIX Automático
                      installment not scheduled yet). `PROCESSING`: a boleto
                      being registered, or a debit from the payer's account in
                      progress. `SCHEDULED`: a PIX Automático or scheduled PIX
                      installment waiting for its date. `CANCELED`: a PIX
                      Automático or scheduled PIX installment that was canceled.
                      `ERROR`: the charge failed. `SCHEDULE_ERROR`: a PIX
                      Automático installment could not be scheduled. `PAID` is
                      not used.
                    example: PROCESSING
                  effectiveAt:
                    type: string
                    description: >-
                      When the movement took effect. For Portão 3's own
                      statements it is when the statement was created; a
                      statement recorded through the API carries the date it was
                      sent with.
                    example: '2026-10-01T09:00:00.000Z'
                    format: date-time
                  createdBy:
                    type: string
                    description: >-
                      ID of who recorded the statement: the authenticated caller
                      of the API that created it, or the Portão 3 service that
                      wrote it.
                    example: 5f0c2b1e-8a3d-4e6f-9b7c-2d1a0e9f8c7b
                  updatedBy:
                    type: string
                    description: >-
                      Who last changed the statement. It is set when the
                      statement is created and later status changes (a payment
                      confirmed, an installment scheduled) do not change it, so
                      it is usually the same as `createdBy`.
                    example: 5f0c2b1e-8a3d-4e6f-9b7c-2d1a0e9f8c7b
                  createdAt:
                    type: string
                    description: When the statement was recorded.
                    example: '2026-10-01T09:00:00.000Z'
                    format: date-time
                  updatedAt:
                    type: string
                    description: When the statement last changed, such as its status.
                    example: '2026-10-08T14:32:11.000Z'
                    format: date-time
                  paymentData:
                    type: object
                    properties:
                      pix:
                        type: object
                        properties:
                          emv:
                            type: string
                            description: The PIX copy-and-paste code (EMV) the payer pays.
                            example: >-
                              00020101021226870014br.gov.bcb.pix2565qrcode.exemplo.com.br/pix/v2/9d4e1f6a5204000053039865406150.005802BR5913EMPRESA
                              EXEMPLO6009SAO PAULO62070503***6304ABCD
                          dueAt:
                            type: string
                            description: When the PIX charge is due.
                            example: '2026-10-10T23:59:59.000Z'
                            format: date-time
                        required:
                          - emv
                        description: >-
                          The PIX charge, on a `PIX_CREATED` statement (and on
                          the `INTEREST_AND_FINES` statement of its late
                          payment).
                      bankSlip:
                        type: object
                        properties:
                          digitableLine:
                            type: string
                            description: >-
                              The boleto's typeable line (linha digitável).
                              Empty until the boleto is registered.
                            example: '34191790010104351004791020150008291070026000'
                          barcode:
                            type: string
                            description: >-
                              The boleto's barcode. Empty until the boleto is
                              registered.
                            example: '34192910700260001790001043510047902015000829'
                          dueAt:
                            type: string
                            description: When the boleto is due.
                            example: '2026-10-10T23:59:59.000Z'
                            format: date-time
                          expiresAt:
                            type: string
                            description: After this date the boleto can no longer be paid.
                            example: '2026-11-09T23:59:59.000Z'
                            format: date-time
                        required:
                          - digitableLine
                          - barcode
                        description: >-
                          The boleto, on a `BANK_SLIP_CREATED` statement (and on
                          the `INTEREST_AND_FINES` statement of its late
                          payment).
                      pixInitiation:
                        type: object
                        properties:
                          paymentUrl:
                            type: string
                            description: Link where the payer authorizes the payment.
                            example: https://pix.example.com/authorize/9d4e1f6a
                          scheduledTo:
                            type: string
                            description: >-
                              When the payment is scheduled to be charged: the
                              invoice's due date.
                            example: '2026-10-10T12:00:00.000Z'
                            format: date-time
                        required:
                          - paymentUrl
                        description: >-
                          The authorized PIX payment, on a
                          `PIX_INITIATION_CREATED` statement.
                    description: >-
                      The payment instrument: on `BANK_SLIP_CREATED`,
                      `PIX_CREATED` and `PIX_INITIATION_CREATED` statements, and
                      on the `INTEREST_AND_FINES` statement of a late boleto or
                      PIX payment.
                  external:
                    type: object
                    properties:
                      b3BankSlip:
                        type: string
                        description: ID of the boleto.
                        example: 6711b4c0d8e1a30012b7c9f2
                      b3Pix:
                        type: string
                        description: ID of the PIX charge.
                        example: 6711b4c0d8e1a30012b7c9f3
                      b3PixBillingInitiationRequest:
                        type: string
                        description: >-
                          ID of the PIX Automático authorization, or of the
                          recurring scheduled PIX payment, this statement
                          belongs to. Every installment of the same deal shares
                          it.
                        example: 6711b4c0d8e1a30012b7c9f4
                      b3PixBillingInitiationRequestItem:
                        type: string
                        description: >-
                          ID of this installment's scheduled charge. Empty until
                          the charge is scheduled.
                        example: 6711b4c0d8e1a30012b7c9f5
                    description: >-
                      IDs of the charge in the Banking service: on the same
                      statements as `paymentData`.
                  error:
                    description: >-
                      Why a PIX Automático or scheduled PIX charge failed.
                      Present once a failure was recorded, and kept if a later
                      attempt succeeds. `null` on a few statements recorded
                      through the API with an empty `error`.
                    type: object
                    properties:
                      code:
                        type: string
                        description: Error code, or `UNKNOWN_ERROR`.
                        example: PAYMENT_REJECTED
                      detail:
                        type: string
                        description: Detail of the failure, or `Desconhecido`.
                        example: Saldo insuficiente na conta do pagador.
                      description:
                        type: string
                        description: Description of the failure, or `Erro desconhecido`.
                        example: O pagamento foi recusado pela instituição do pagador.
                    nullable: true
                required:
                  - id
                  - realm
                  - organization
                  - invoice
                  - identifier
                  - description
                  - billingAmount
                  - originalAmount
                  - financialImpactType
                  - status
                  - effectiveAt
                  - createdBy
                  - updatedBy
                  - createdAt
                  - updatedAt
                description: >-
                  One entry of an invoice's ledger: the amount owed, a payment
                  instrument and its payment, interest and fines, an adjustment
                  or a manual settlement.
        '403':
          description: >-
            `INSUFFICIENT_PERMISSIONS` — You are not a member of the
            organization nor an admin of the realm.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - INSUFFICIENT_PERMISSIONS
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BILLING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: INSUFFICIENT_PERMISSIONS
                origin: BILLING
                message: insufficient permissions
        '404':
          description: >-
            `INVOICE_NOT_FOUND` — The organization issued no invoice with this
            ID.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - INVOICE_NOT_FOUND
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BILLING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: INVOICE_NOT_FOUND
                origin: BILLING
                message: invoice not found
        '422':
          description: >-
            `INVOICE_NOT_PAYABLE` — The invoice is paid or canceled.


            `INVOICE_PAYMENT_METHOD_NOT_ALLOWED` — `BANK_SLIP` is neither one of
            the invoice's `allowedPaymentMethods` nor one of its deal's
            secondary payment methods.


            `INVOICE_NOTHING_TO_CHARGE` — No `txnAmount` was sent and the
            invoice owes nothing.


            `BAD_REQUEST` — The body is invalid — a `dueAt` in the past, an
            `expiresAt` not after `dueAt`, a `txnAmount` that is not a whole
            number of centavos of at least 1 — or a path parameter is not a
            valid ID; `fields` lists each one.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - INVOICE_NOT_PAYABLE
                      - INVOICE_PAYMENT_METHOD_NOT_ALLOWED
                      - INVOICE_NOTHING_TO_CHARGE
                      - BAD_REQUEST
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BILLING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                  fields:
                    type: array
                    description: >-
                      One entry per invalid request field (validation errors
                      only).
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: >-
                            Path of the invalid field, e.g. `label` or
                            `values[0].value`.
                          example: label
                        message:
                          type: string
                          description: Why the field was rejected.
                          example: label is required
                        code:
                          type: string
                          description: >-
                            `<FIELD>_<REASON>` — e.g. `LABEL_REQUIRED`,
                            `TYPE_ONE_OF`, `VALUES_VALUE_TYPE_ERROR`.
                          example: LABEL_REQUIRED
                        values:
                          type: array
                          items:
                            type: string
                          description: >-
                            The accepted values, when the field is an
                            enumeration.
                      required:
                        - field
                        - message
                        - code
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: INVOICE_NOT_PAYABLE
                origin: BILLING
                message: invoice is already paid or canceled

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.