Skip to content

Accounting API (1.0.0-alpha)

The Accounting API allows you to manage accounting data for connecting to your accounting system. The Accounting API is currently in Alpha. To access the Accounting Alpha API, please email developer-support@brex.com to express your interest. Please note that participation is determined by Brex based on program needs. For more details, please refer to https://developer.brex.com/docs/api-launch-stages/.

Download OpenAPI description
Languages
Servers
Production
https://api.brex.com
Staging (Note: This is not a sandbox. It will not work with customer tokens.)
https://api-staging.brex.com

View and manage accounting integrations.

Operations

View and manage accounting records.

Operations

Request

Retrieve a single accounting record by its unique identifier

Security
oauth2(Required scopes:
accounting.record.read
accounting.record.write
)
Path
record_idstringrequired
Query
single_entryboolean

Whether to return single entry line items

curl -i -X GET \
  'https://api.brex.com/v3/accounting/records/{record_id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Accounting record retrieved successfully

Bodyapplication/json
idstringrequired

Unique identifier for the accounting record

Example: "accr_abc123"
amountobjectrequired

Amount of the accounting record

amount.​amountnumberrequired

The amount

Example: 100
amount.​currencystringrequired

The currency

Example: "USD"
original_amountobject or null

Original amount if different from current

typestringrequired

Types of accounting records representing different financial transactions:

Card-related transactions:

  • CARD_EXPENSE_POST: Records when a card expense is posted and settled

  • CARD_EXPENSE_REFUND: Records when a merchant issues a refund for a card transaction

  • CARD_EXPENSE_REPAYMENT: Records when an employee repays money to the company for a card expense

  • CARD_PAYMENT: Records payments from customer to Brex for card balances

  • CARD_PAYMENT_REFUND: Records refunds from Brex to customer for overpayments

  • REWARD_REDEMPTION: Records when a reward is redeemed

Bill-related transactions:

  • BILL_EXPENSE: Records when a bill expense is created

  • BILL_EXPENSE_PAYMENT: Records when a bill is paid through ACH/wire transfer

  • BILL_EXPENSE_CARD_PAYMENT: Records when a bill is paid using a Brex card

Reimbursement-related transactions:

  • REIMBURSEMENT_EXPENSE_APPROVAL: Records approval of reimbursement (accrual basis)

  • REIMBURSEMENT_EXPENSE_POST: Records when reimbursement is fulfilled (cash basis)

  • REIMBURSEMENT_EXPENSE_REPAYMENT: Records repayment of a reimbursement expense

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT: Records payout to employee/third party

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT_REVERSAL: Records reversal of payout

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYIN: Records payment from customer to Brex

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_REFUND: Records refund to customer's bank

Enum"CARD_EXPENSE_POST""CARD_EXPENSE_REPAYMENT""REIMBURSEMENT_EXPENSE_REPAYMENT""REIMBURSEMENT_EXPENSE_APPROVAL""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYIN""REIMBURSEMENT_EXPENSE_POST""CARD_PAYMENT""REWARD_REDEMPTION""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_REFUND"
review_statusstringrequired

Review status

Enum"READY_FOR_EXPORT""PREPARE""REVIEW""EXPORTED"
source_idstring or null

Source transaction ID

source_typestringrequired

Source type

Enum"CARD""REIMBURSEMENT""BILL"
erp_posting_datestring(date-time)required

ERP impact date in UTC timezone

updated_atstring(date-time)required

Last update timestamp in UTC timezone

versionnumberrequired

Version number

receiptsArray of objects or null(Receipt)

Associated receipts

userobject or null

User associated with the record

vendorobject or null

Vendor information

memostring or null

Memo/description

posted_atstring(date-time)required

Source posted date in UTC timezone

due_atstring or null(date-time)

Source due at in UTC timezone. For bills only

invoice_numberstring or null

Invoice number. For bills only

line_itemsArray of objects(AccountingRecordLineItem)required

Line items for double-entry bookkeeping

line_items[].​idstringrequired

Unique identifier for the line item

Example: "arli_abc123"
line_items[].​typestringrequired

Type of line item

Enum"CREDIT""DEBIT"
line_items[].​amountobjectrequired

Amount for this line item. Amount is always positive for AccountingRecordLineItem.

line_items[].​amount.​amountnumberrequired

The amount

Example: 100
line_items[].​amount.​currencystringrequired

The currency

Example: "USD"
line_items[].​original_amountobject or null

Original amount for this line item. Amount is always positive for AccountingRecordLineItem.

line_items[].​memostring or null

Memo/description

line_items[].​accounting_field_valuesArray of objects(AccountingFieldValue)required

Accounting field mappings

line_items[].​accounting_field_values[].​brex_field_idstringrequired

Brex internal field identifier

Example: "ef_123"
line_items[].​accounting_field_values[].​remote_field_idstring or nullrequired

Remote system field identifier

Example: "1"
line_items[].​accounting_field_values[].​brex_field_value_idstringrequired

Brex internal field value identifier

Example: "efo_123"
line_items[].​accounting_field_values[].​remote_field_value_idstring or nullrequired

Remote system field value identifier

Example: "123"
Response
application/json
{ "id": "accr_abc123", "amount": { "amount": 100.5, "currency": "USD" }, "original_amount": { "amount": 100.5, "currency": "USD" }, "type": "CARD_EXPENSE_POST", "review_status": "READY_FOR_EXPORT", "source_id": "exp_xyz789", "source_type": "CARD", "erp_posting_date": "2025-04-24T16:13:49.959513Z", "updated_at": "2025-04-24T16:13:49.959513Z", "version": 1, "receipts": [ {} ], "user": { "id": "cuuser_1234", "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "role": "EMPLOYEE", "status": "ACTIVE" }, "vendor": null, "memo": "Business lunch with client", "posted_at": "2025-04-24T16:13:49.959513Z", "due_at": null, "invoice_number": null, "line_items": [ {} ] }

Request

Query accounting records by IDs or with filters for polling. When building integrations with Brex accounting workflow, use filter-based polling as a fallback mechanism. Suggested cadence is 1 hour.

For card and reimbursement records: Use review_status to filter by accounting workflow stage (e.g., READY_FOR_EXPORT, EXPORTED).

For bill records: Use source_type=BILL with updated_at[gt] to poll for updated bill records.

Filter Constraints:

  • review_status is only supported with CARD and REIMBURSEMENT source types
Security
oauth2(Required scopes:
accounting.record.read
accounting.record.write
)
Query
idsArray of strings

Filter by accounting record IDs. ID size is limited to 500. Example: ids=accr_xxx&ids=accr_yyy

review_statusstring

Filter by review status. Supported values: PREPARE, REVIEW, EXPORTED, READY_FOR_EXPORT.

Enum"PREPARE""REVIEW""EXPORTED""READY_FOR_EXPORT"
limitnumber

Maximum number of records to return

Default 100
cursorstring

Cursor for pagination

single_entryboolean

Whether to return single entry line items

updated_atobject(UpdatedAtFilter)

Filter by updated_at timestamp range in UTC. Accepts gt (greater than), gte (greater than or equal), lt (less than), lte (less than or equal). Example: updated_at[gte]=2025-01-01

source_typestring

Filter by accounting record source type. This is a high-level filter that maps to specific accounting record types. Example: source_type=BILL

Enum"CARD""REIMBURSEMENT""BILL"
curl -i -X GET \
  https://api.brex.com/v3/accounting/records \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Query accounting records response

Bodyapplication/json
itemsArray of objects(AccountingRecordDetailed)required

List of accounting records

items[].​idstringrequired

Unique identifier for the accounting record

Example: "accr_abc123"
items[].​amountobjectrequired

Amount of the accounting record

items[].​amount.​amountnumberrequired

The amount

Example: 100
items[].​amount.​currencystringrequired

The currency

Example: "USD"
items[].​original_amountobject or null

Original amount if different from current

items[].​typestringrequired

Types of accounting records representing different financial transactions:

Card-related transactions:

  • CARD_EXPENSE_POST: Records when a card expense is posted and settled

  • CARD_EXPENSE_REFUND: Records when a merchant issues a refund for a card transaction

  • CARD_EXPENSE_REPAYMENT: Records when an employee repays money to the company for a card expense

  • CARD_PAYMENT: Records payments from customer to Brex for card balances

  • CARD_PAYMENT_REFUND: Records refunds from Brex to customer for overpayments

  • REWARD_REDEMPTION: Records when a reward is redeemed

Bill-related transactions:

  • BILL_EXPENSE: Records when a bill expense is created

  • BILL_EXPENSE_PAYMENT: Records when a bill is paid through ACH/wire transfer

  • BILL_EXPENSE_CARD_PAYMENT: Records when a bill is paid using a Brex card

Reimbursement-related transactions:

  • REIMBURSEMENT_EXPENSE_APPROVAL: Records approval of reimbursement (accrual basis)

  • REIMBURSEMENT_EXPENSE_POST: Records when reimbursement is fulfilled (cash basis)

  • REIMBURSEMENT_EXPENSE_REPAYMENT: Records repayment of a reimbursement expense

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT: Records payout to employee/third party

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT_REVERSAL: Records reversal of payout

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYIN: Records payment from customer to Brex

  • REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_REFUND: Records refund to customer's bank

Enum"CARD_EXPENSE_POST""CARD_EXPENSE_REPAYMENT""REIMBURSEMENT_EXPENSE_REPAYMENT""REIMBURSEMENT_EXPENSE_APPROVAL""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYIN""REIMBURSEMENT_EXPENSE_POST""CARD_PAYMENT""REWARD_REDEMPTION""REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_REFUND"
items[].​review_statusstringrequired

Review status

Enum"READY_FOR_EXPORT""PREPARE""REVIEW""EXPORTED"
items[].​source_idstring or null

Source transaction ID

items[].​source_typestringrequired

Source type

Enum"CARD""REIMBURSEMENT""BILL"
items[].​erp_posting_datestring(date-time)required

ERP impact date in UTC timezone

items[].​updated_atstring(date-time)required

Last update timestamp in UTC timezone

items[].​versionnumberrequired

Version number

items[].​receiptsArray of objects or null(Receipt)

Associated receipts

items[].​userobject or null

User associated with the record

items[].​vendorobject or null

Vendor information

items[].​memostring or null

Memo/description

items[].​posted_atstring(date-time)required

Source posted date in UTC timezone

items[].​due_atstring or null(date-time)

Source due at in UTC timezone. For bills only

items[].​invoice_numberstring or null

Invoice number. For bills only

items[].​line_itemsArray of objects(AccountingRecordLineItem)required

Line items for double-entry bookkeeping

items[].​line_items[].​idstringrequired

Unique identifier for the line item

Example: "arli_abc123"
items[].​line_items[].​typestringrequired

Type of line item

Enum"CREDIT""DEBIT"
items[].​line_items[].​amountobjectrequired

Amount for this line item. Amount is always positive for AccountingRecordLineItem.

items[].​line_items[].​amount.​amountnumberrequired

The amount

Example: 100
items[].​line_items[].​amount.​currencystringrequired

The currency

Example: "USD"
items[].​line_items[].​original_amountobject or null

Original amount for this line item. Amount is always positive for AccountingRecordLineItem.

items[].​line_items[].​memostring or null

Memo/description

items[].​line_items[].​accounting_field_valuesArray of objects(AccountingFieldValue)required

Accounting field mappings

items[].​line_items[].​accounting_field_values[].​brex_field_idstringrequired

Brex internal field identifier

Example: "ef_123"
items[].​line_items[].​accounting_field_values[].​remote_field_idstring or nullrequired

Remote system field identifier

Example: "1"
items[].​line_items[].​accounting_field_values[].​brex_field_value_idstringrequired

Brex internal field value identifier

Example: "efo_123"
items[].​line_items[].​accounting_field_values[].​remote_field_value_idstring or nullrequired

Remote system field value identifier

Example: "123"
total_countnumber or null(int32)

Total count of records matching the query

next_cursorstring or null

Cursor for the next page of results

has_next_pagebooleanrequired

Whether there are more results available

Response
application/json
{ "items": [ {} ], "next_cursor": null, "has_next_page": false, "total_count": 1 }

Request

Report export success or failure for accounting records.

Security
oauth2(Required scopes:
accounting.record.write
)
Bodyapplication/jsonrequired
resultsArray of SuccessfulExportResult (object) or FailedExportResult (object)non-emptyrequired

Array of export results (must contain at least one result)

One of:
results[].​accounting_record_idstringrequired

ID of the accounting record the export outcome applies to

Example: "accr_abc123"
results[].​successobjectrequired

Details for a successful export

results[].​success.​reference_idstring or null

External system identifier assigned to the exported record

Example: "erp_txn_456789"
results[].​success.​deep_link_urlstring

URL pointing to the record in the external system

Example: "https://erp.com/transactions/456789"
curl -i -X POST \
  https://api.brex.com/v3/accounting/records/export-results \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "results": [
      {
        "accounting_record_id": "accr_abc123",
        "success": {
          "reference_id": "erp_txn_456789",
          "deep_link_url": "https://erp.com/transactions/456789"
        }
      }
    ]
  }'

Responses

Export results processed successfully

Bodyapplication/json
updated_accounting_record_idsArray of stringsrequired

Accounting record ids that were updated by the request

Example: ["accr_abc123","accr_def456"]
Response
application/json
{ "updated_accounting_record_ids": [ "accr_abc123", "accr_def456" ] }