Skip to main content
POST
Mark an invoice as paid
The settlement is a CREDIT, DONE statement whose billingAmount is computed from the ledger when you call it — the DONE debits minus the DONE credits — and whose originalAmount is the invoice amount. It is not checked against the invoice’s status: before the invoice closes its amount is usually not owed yet, so the settlement can record 0 or less. The invoice becomes paid, the BILLING_INVOICE_PAID webhook event is sent and, when your NFSe configuration issues on paid invoices (INVOICE_PAID), its NFSe is issued. When the invoice has a PIX Automático or recurring PIX installment in SCHEDULED status, its charge is canceled first. An installment that is not scheduled yet (CREATED) is left as it is, and a PIX Automático charge is only canceled while it is still pending. If canceling a recurring PIX charge fails, or the PIX Automático charge can’t be read, the Banking service’s error is returned (origin BANKING, with its own status and code) and nothing is recorded. If canceling a PIX Automático charge fails, the error is returned the same way unless the charge was already attempted or its date is before today; then the invoice is marked as paid anyway, and the payer may still be charged. The invoice’s status is not checked: use it on an unpaid invoice, since marking a paid or a canceled invoice records another settlement and leaves the invoice paid. Any member of the organization, or an admin of the realm, can mark one as paid; createdBy is set to the ID of the authenticated caller. Answers the settlement statement it recorded.

Path Parameters

realmId
string<uuid>
required

ID of your realm.

Format: UUID

organizationId
string<uuid>
required

ID of the organization that issued the invoice.

Format: UUID

invoiceId
string<uuid>
required

ID of the invoice to mark as paid.

Format: UUID

Body

application/json
description
string
required

Why the invoice is being marked as paid, such as how the payment was received. Stored on the settlement statement.

Minimum string length: 1
Example:

"Pagamento recebido em dinheiro na loja."

Response

Successful response

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.

id
string<uuid>
required

ID of the statement.

Example:

"9d4e1f6a-3b2c-4a5d-8e7f-1a2b3c4d5e6f"

realm
string<uuid>
required

ID of the realm of the organization that issued the invoice.

Example:

"f495ff0c-ab54-4f99-8e92-ca8682e4de9b"

organization
string<uuid>
required

ID of the organization that issued the invoice.

Example:

"c4bd3f21-dfbd-44e8-8055-68ba15bed410"

invoice
string<uuid>
required

ID of the invoice.

Example:

"0b7c2a44-6f1e-4d3b-9a8e-5c2f1d0e9b7a"

identifier
string
required

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:

"MANUAL_SETTLEMENT"

description
string
required

Free text describing the movement. Empty when there is none.

Example:

"Pagamento recebido em dinheiro na loja."

billingAmount
integer
required

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
integer
required

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
enum<string>
required

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.

Available options:
CREDIT,
DEBIT,
NONE
Example:

"CREDIT"

status
enum<string>
required

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.

Available options:
CREATED,
PROCESSING,
SCHEDULED,
PAID,
CANCELED,
DONE,
ERROR,
SCHEDULE_ERROR
Example:

"DONE"

effectiveAt
string<date-time>
required

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-25T12:00:00.000Z"

createdBy
string
required

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
string
required

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
string<date-time>
required

When the statement was recorded.

Example:

"2026-10-25T12:00:00.000Z"

updatedAt
string<date-time>
required

When the statement last changed, such as its status.

Example:

"2026-10-25T12:00:00.000Z"

paymentData
object

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
object

IDs of the charge in the Banking service: on the same statements as paymentData.

error
object | null

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.