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: Invoice-level and charge-line amounts always include numeric
tax, using0.0when there is no tax. Every charge line also includestax_codeandtax_rate; both arenullfor accounts without GST/VAT. These fields are never omitted.
The example submits invoice SYD923891 for cost posting: the first line creates a new accrual, and the second matches an existing accrual. The GET /jobs/{external_id} and GET /payables-invoices/{external_id} examples show the same invoice and its accruals after posting.
Whether this invoice is a credit note. Credit-note totals are sent as positive numbers. Individual charge lines retain their sign relative to the document, so a discount line can be negative on an invoice or a credit note.
Payment due date. Always null when is_credit_note is true. Also null when BravoTran is not configured to send due dates for the account.
Files attached to the approved invoice.
- Mock serverhttps://apidocs.bravotran.com/_mock/openapi/payables-invoices
- https://api.yourserver.comhttps://api.yourserver.com/payables-invoices
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": "SYD923891",
"invoice_date": "2025-02-15",
"is_credit_note": false,
"overseas_amount": {
"currency": "AUD",
"pre_tax": 1770,
"tax": 20,
"total": 1790
},
"due_date": "2025-03-17",
"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": 1570,
"tax": 0,
"total": 1570
},
"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
}
]
}'Invoice accepted
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}.
{ "external_id": "b6d1fdec-81ff-43b9-b422-ae27513047ce", "status": "posted" }