Skip to content

Outbound Payables Invoices

Approved invoices that BravoTran posts to the partner's system for cost posting.

Receive an approved payables invoice from BravoTran

Request

This endpoint is hosted by the partner, not BravoTran. Implementation is required.

BravoTran calls this endpoint when an invoice has been approved and is ready for cost posting. Your system must create or record the invoice accordingly, then respond with the external_id your system assigned to the created invoice and its status (draft or posted). Do not derive the identifier from the request — BravoTran does not send one.

Tax note: Tax-related fields (tax on amounts, tax_code, tax_rate) are only present for tax-enabled accounts. For non-tax / US-based accounts these fields will be absent or null. BravoTran determines the tax mode based on the authenticated account.

Security
OAuth2.0-Partner or Bearer-Token-Partner
Bodyapplication/jsonrequired
creditorobject(EntityRef)required

Reference to the creditor org for this invoice.

invoice_numberstringrequired

Invoice number. Unique scoped to the creditor.

invoice_datestring, (date)required

ISO 8601 date of the invoice.

is_credit_notebooleanrequired

Whether this invoice is a credit note. Amounts are always positive regardless.

overseas_amountobject(Amount)required

Total invoice amount in the overseas (invoice) currency.

due_datestring or null, (date)required

Payment due date. Null when is_credit_note is true.

filesArray of objects, non-empty(OutboundPayablesInvoiceFile)required

Files attached to the approved invoice.

charge_linesArray of objects, non-empty(OutboundChargeLine)required

Line items on the invoice.

curl -i -X POST \
  https://apidocs.bravotran.com/_mock/openapi/payables-invoices \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "creditor": {
      "external_id": "feaa09da-9551-47f8-b30d-6e303b6ad6d5"
    },
    "invoice_number": "BT-2025-0042",
    "invoice_date": "2025-03-15",
    "is_credit_note": false,
    "overseas_amount": {
      "currency": "AUD",
      "pre_tax": 1200,
      "tax": 20,
      "total": 1220
    },
    "due_date": "2025-04-14",
    "files": [
      {
        "doc_type": "payables_invoice",
        "file_type": "application/pdf",
        "file_data": "JVBERi0xLjQKJcfs..."
      }
    ],
    "charge_lines": [
      {
        "job": {
          "external_id": "db3b1f33-2335-4fc5-a874-f8284a95d539"
        },
        "accrual": null,
        "charge_code": {
          "external_id": "eda74483-b7d9-4168-9a20-82155e59395f"
        },
        "description": "International Freight",
        "overseas_amount": {
          "currency": "AUD",
          "pre_tax": 1000,
          "tax": 0,
          "total": 1000
        },
        "tax_code": {
          "external_id": "940dca09-88d4-403e-be23-79a23d37fffd"
        },
        "tax_rate": 0
      },
      {
        "job": {
          "external_id": "db3b1f33-2335-4fc5-a874-f8284a95d539"
        },
        "accrual": {
          "external_id": "438e506b-6114-4e2e-bb06-a3df6c18811a"
        },
        "charge_code": {
          "external_id": "ff815915-de16-4c63-8248-4757aea906e9"
        },
        "description": "Customs Clearance Fee",
        "overseas_amount": {
          "currency": "AUD",
          "pre_tax": 200,
          "tax": 20,
          "total": 220
        },
        "tax_code": {
          "external_id": "3c01e205-aecd-4d34-ac19-fe4dea96a195"
        },
        "tax_rate": 10
      }
    ]
  }'

Responses

Invoice accepted

Bodyapplication/json
external_idstringrequired

The unique, immutable identifier your system generated for the created invoice. BravoTran stores this identifier and uses it to fetch the invoice via GET /payables-invoices/{external_id}.

statusstringrequired

Status of the created invoice in your system:

  • draft — created but not yet posted to the ledger
  • posted — posted to the ledger
Enum:"draft""posted"
Response
{ "external_id": "7f3c9a2e-5b81-4d64-a0c7-1e92d8f4b6a3", "status": "posted" }