ExpensesBeta
Manages expenses associated with corporate card transactions. Supports approval workflows, receipt attachments, accounting field categorization, line item breakdowns, and sync with external accounting systems.
GET /api/v1/spend/expensesGET /api/v1/spend/expenses/{id}POST /api/v1/spend/expenses/{id}/sync
List expenses
GET /api/v1/spend/expenses
List expenses based on the query parameters.
Filter by expenses created after this timestamp (inclusive) in ISO8601 format.
If not specified, defaults to last 30 days from to_created_at.
Filter by legal entity identifier.
A bookmark for use in pagination to retrieve either the next page or the previous page of results. You can fetch the value for this identifier from the response of the previous API call.
Filter by expense statuses. Possible values are DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED. Additional values may appear; implementations should handle unknown values gracefully.
Filter by sync statuses. Possible values are NOT_SYNCED, READY_TO_SYNC, SYNCED, SYNC_FAILED.
Filter by expenses created before this timestamp (exclusive) in ISO8601 format.
If not specified, defaults to now.
List of items returned.
Unique identifier of the Airwallex account that owns this expense. This determines which account the expense amount is debited from.
Accounting categories and custom fields assigned to this expense for reporting and categorization in your accounting system.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Email addresses of users authorized to approve this expense. An empty array indicates no approval is required or the expense has already been approved.
Receipt images and supporting documents uploaded for this expense. Commonly used for compliance and approval workflows.
MIME type of the attached file. Common types include image/jpeg, image/png, and application/pdf.
Timestamp for when the resource was created in ISO8601 format.
Original filename of the uploaded attachment, including the file extension.
URL to access and download the attachment file. Authentication is required.
Unique identifier of the attachment.
Total amount charged to your account in billing currency, including any fees or currency conversion. This may differ from the original transaction amount.
Currency in which the billing amount is charged to your account. This is your account's primary currency, regardless of the original transaction currency.
Unique identifier of the Airwallex card used to make this purchase. Links the expense to the specific card and cardholder for tracking and reporting.
Details of the original card transaction associated with an expense, including the authorization status, amount, and currency.
Amount of the original card transaction in the transaction currency.
Currency of the original card transaction, as an ISO 4217 currency code.
Transaction status. Possible value are AUTHORIZED, CLEARED, DECLINED, REVERSED.
Conversation thread and notes about this expense, typically used for approval workflows and clarifications between cardholders and approvers.
Text body of the comment.
Timestamp for when the resource was created in ISO8601 format.
Email address of the user who created this comment. Used for attribution, notifications, and audit trail tracking.
Timestamp for when the resource was created in ISO8601 format.
Unique identifier of the expense.
Unique identifier of the business entity associated with this expense. Used for accounting segregation and compliance reporting across different business entities.
Breakdown of the expense into detailed line items with individual accounting categories. The sum of all line item amounts should equal the total expense amount.
Accounting and categorization fields assigned to this specific line item. Allows for different accounting treatment of individual components within a single expense.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Unique identifier of the expense line item.
Optional description providing details about this specific line item. Helps explain what this component of the expense represents for accounting and approval purposes.
Amount of this line item in the transaction currency, including all taxes. Represents the actual expense amount for this specific component of the overall expense.
Current approval status of the expense. Possible values: DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED. Additional values may appear; implementations should handle unknown values gracefully.
DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED, DELETED
Expense sync status. Possible values are NOT_SYNCED, READY_TO_SYNC, SYNCED, SYNC_FAILED.
Timestamp for when the resource was updated in ISO8601 format.
Attendees associated with this expense, including internal employees and external guests.
Indicates whether the attendee is external to the organization.
Name of the attendee.
Email address of the attendee. Present only when external is false.
Optional description or memo providing additional context about the expense. Often includes the business purpose or additional details about the purchase.
Name of the business or merchant where the purchase was made, as reported by the payment network. Null for some transaction types.
Timestamp when the transaction was settled, in ISO8601 format. Null if transaction is still pending settlement.
A pointer to the end of the page list used in pagination to retrieve the next page of results.
A pointer to the start of the page list use in pagination to retrieve the previous page of results.
| Error status | Description |
|---|---|
| 400 | Invalid Request. |
| 404 | Not found. |
| 500 | Internal server error. |
$curl --request GET \> --url 'https://api.airwallex.com/api/v1/spend/expenses' \> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \> --header 'Content-Type: application/json'
1{2 "items": [3 {4 "id": "ba46f0ff-8081-4db6-8333-4e011fe9561d",5 "account_id": "acct_a2y0pxz3m4k5hoZldn97hjzp",6 "legal_entity_id": "le_U3jlHqQRNHWn2zAKeeT8sg",7 "card_id": "93eed14b-104d-4f40-ae1d-3633c6538276",8 "status": "AWAITING_APPROVAL",9 "card_transaction": {10 "status": "CLEARED",11 "amount": "105.50",12 "currency": "USD"13 },14 "sync_status": "SYNCED",15 "billing_currency": "USD",16 "billing_amount": "105.5",17 "description": "Client dinner at restaurant for Q4 planning meeting",18 "merchant": "Starbucks Coffee #1234",19 "approvers": [20 "[email protected]",21 "[email protected]"22 ],23 "created_at": "2025-01-01T00:00:00Z",24 "updated_at": "2025-02-02T00:00:00Z",25 "settled_at": "2025-03-03T10:15:30Z",26 "accounting_field_selections": [27 {28 "type": "GENERAL_LEDGER_ACCOUNT",29 "name": "Expense Account",30 "external_id": "c9fcfdee-f943-45c9-abaa-45df1601ae04",31 "value": "Travel & Entertainment",32 "value_label": "Travel & Entertainment"33 }34 ],35 "attachments": [36 {37 "id": "0fd62109-cfc0-4c94-86a5-d01c42506b76",38 "content_type": "image/jpeg",39 "file_name": "receipt.jpg",40 "file_url": "https://files.airwallex.com/receipt.jpg",41 "created_at": "2024-12-16T09:22:00Z"42 }43 ],44 "line_items": [45 {46 "id": "a12fca5e-4aeb-4adb-85b0-428b4f078aba",47 "transaction_amount": "105.50",48 "description": "Business meal with client",49 "accounting_field_selections": []50 }51 ],52 "comments": [53 {54 "content": "Expense approved - valid business purpose confirmed",55 "created_by": "[email protected]",56 "created_at": "2025-01-01T00:00:00Z"57 }58 ]59 }60 ],61 "page_after": "eyJwYWdlX2JlZm9yZSI6IjIwMjUtMDctMDFUMDA6MDA6MDBaIn0=",62 "page_before": "eyJwYWdlX2JlZm9yZSI6IjIwMjUtMDctMDFUMDA6MDA6MDBaIn0="63}
Get expense
GET /api/v1/spend/expenses/{id}
Retrieves the details of an existing expense.
Unique identifier of the expense.
Unique identifier of the Airwallex account that owns this expense. This determines which account the expense amount is debited from.
Accounting categories and custom fields assigned to this expense for reporting and categorization in your accounting system.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Email addresses of users authorized to approve this expense. An empty array indicates no approval is required or the expense has already been approved.
Receipt images and supporting documents uploaded for this expense. Commonly used for compliance and approval workflows.
MIME type of the attached file. Common types include image/jpeg, image/png, and application/pdf.
Timestamp for when the resource was created in ISO8601 format.
Original filename of the uploaded attachment, including the file extension.
URL to access and download the attachment file. Authentication is required.
Unique identifier of the attachment.
Attendees associated with this expense, including internal employees and external guests.
Indicates whether the attendee is external to the organization.
Name of the attendee.
Email address of the attendee. Present only when external is false.
Total amount charged to your account in billing currency, including any fees or currency conversion. This may differ from the original transaction amount.
Currency in which the billing amount is charged to your account. This is your account's primary currency, regardless of the original transaction currency.
Unique identifier of the Airwallex card used to make this purchase. Links the expense to the specific card and cardholder for tracking and reporting.
Details of the original card transaction associated with an expense, including the authorization status, amount, and currency.
Amount of the original card transaction in the transaction currency.
Currency of the original card transaction, as an ISO 4217 currency code.
Transaction status. Possible value are AUTHORIZED, CLEARED, DECLINED, REVERSED.
Conversation thread and notes about this expense, typically used for approval workflows and clarifications between cardholders and approvers.
Text body of the comment.
Timestamp for when the resource was created in ISO8601 format.
Email address of the user who created this comment. Used for attribution, notifications, and audit trail tracking.
Timestamp for when the resource was created in ISO8601 format.
Optional description or memo providing additional context about the expense. Often includes the business purpose or additional details about the purchase.
Unique identifier of the expense.
Unique identifier of the business entity associated with this expense. Used for accounting segregation and compliance reporting across different business entities.
Breakdown of the expense into detailed line items with individual accounting categories. The sum of all line item amounts should equal the total expense amount.
Accounting and categorization fields assigned to this specific line item. Allows for different accounting treatment of individual components within a single expense.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Unique identifier of the expense line item.
Optional description providing details about this specific line item. Helps explain what this component of the expense represents for accounting and approval purposes.
Amount of this line item in the transaction currency, including all taxes. Represents the actual expense amount for this specific component of the overall expense.
Name of the business or merchant where the purchase was made, as reported by the payment network. Null for some transaction types.
Timestamp when the transaction was settled, in ISO8601 format. Null if transaction is still pending settlement.
Current approval status of the expense. Possible values: DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED. Additional values may appear; implementations should handle unknown values gracefully.
DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED, DELETED
Expense sync status. Possible values are NOT_SYNCED, READY_TO_SYNC, SYNCED, SYNC_FAILED.
Timestamp for when the resource was updated in ISO8601 format.
| Error status | Description |
|---|---|
| 400 | Invalid Request. |
| 404 | Not found. |
| 500 | Internal server error. |
$curl --request GET \> --url 'https://api.airwallex.com/api/v1/spend/expenses/expense_id' \> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \> --header 'Content-Type: application/json'
1{2 "id": "ba46f0ff-8081-4db6-8333-4e011fe9561d",3 "account_id": "acct_a2y0pxz3m4k5hoZldn97hjzp",4 "legal_entity_id": "le_U3jlHqQRNHWn2zAKeeT8sg",5 "card_id": "93eed14b-104d-4f40-ae1d-3633c6538276",6 "status": "AWAITING_APPROVAL",7 "card_transaction": {8 "status": "CLEARED",9 "amount": "105.50",10 "currency": "USD"11 },12 "sync_status": "SYNCED",13 "billing_currency": "USD",14 "billing_amount": "105.5",15 "description": "Client dinner at restaurant for Q4 planning meeting",16 "merchant": "Starbucks Coffee #1234",17 "approvers": [18 "[email protected]",19 "[email protected]"20 ],21 "created_at": "2025-01-01T00:00:00Z",22 "updated_at": "2025-02-02T00:00:00Z",23 "settled_at": "2025-03-03T10:15:30Z",24 "accounting_field_selections": [25 {26 "type": "GENERAL_LEDGER_ACCOUNT",27 "name": "Expense Account",28 "external_id": "c9fcfdee-f943-45c9-abaa-45df1601ae04",29 "value": "Travel & Entertainment",30 "value_label": "Travel & Entertainment"31 }32 ],33 "attachments": [34 {35 "id": "0fd62109-cfc0-4c94-86a5-d01c42506b76",36 "content_type": "image/jpeg",37 "file_name": "receipt.jpg",38 "file_url": "https://files.airwallex.com/receipt.jpg",39 "created_at": "2024-12-16T09:22:00Z"40 }41 ],42 "line_items": [43 {44 "id": "a12fca5e-4aeb-4adb-85b0-428b4f078aba",45 "transaction_amount": "105.50",46 "description": "Business meal with client",47 "accounting_field_selections": []48 }49 ],50 "comments": [51 {52 "content": "Expense approved - valid business purpose confirmed",53 "created_by": "[email protected]",54 "created_at": "2025-01-01T00:00:00Z"55 }56 ]57}
Update expense sync status
POST /api/v1/spend/expenses/{id}/sync
Updates the sync status of an existing expense.
Unique identifier of the expense.
Expense sync status. Possible values are NOT_SYNCED, READY_TO_SYNC, SYNCED, SYNC_FAILED.
Unique identifier of the Airwallex account that owns this expense. This determines which account the expense amount is debited from.
Accounting categories and custom fields assigned to this expense for reporting and categorization in your accounting system.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Email addresses of users authorized to approve this expense. An empty array indicates no approval is required or the expense has already been approved.
Receipt images and supporting documents uploaded for this expense. Commonly used for compliance and approval workflows.
MIME type of the attached file. Common types include image/jpeg, image/png, and application/pdf.
Timestamp for when the resource was created in ISO8601 format.
Original filename of the uploaded attachment, including the file extension.
URL to access and download the attachment file. Authentication is required.
Unique identifier of the attachment.
Attendees associated with this expense, including internal employees and external guests.
Indicates whether the attendee is external to the organization.
Name of the attendee.
Email address of the attendee. Present only when external is false.
Total amount charged to your account in billing currency, including any fees or currency conversion. This may differ from the original transaction amount.
Currency in which the billing amount is charged to your account. This is your account's primary currency, regardless of the original transaction currency.
Unique identifier of the Airwallex card used to make this purchase. Links the expense to the specific card and cardholder for tracking and reporting.
Details of the original card transaction associated with an expense, including the authorization status, amount, and currency.
Amount of the original card transaction in the transaction currency.
Currency of the original card transaction, as an ISO 4217 currency code.
Transaction status. Possible value are AUTHORIZED, CLEARED, DECLINED, REVERSED.
Conversation thread and notes about this expense, typically used for approval workflows and clarifications between cardholders and approvers.
Text body of the comment.
Timestamp for when the resource was created in ISO8601 format.
Email address of the user who created this comment. Used for attribution, notifications, and audit trail tracking.
Timestamp for when the resource was created in ISO8601 format.
Optional description or memo providing additional context about the expense. Often includes the business purpose or additional details about the purchase.
Unique identifier of the expense.
Unique identifier of the business entity associated with this expense. Used for accounting segregation and compliance reporting across different business entities.
Breakdown of the expense into detailed line items with individual accounting categories. The sum of all line item amounts should equal the total expense amount.
Accounting and categorization fields assigned to this specific line item. Allows for different accounting treatment of individual components within a single expense.
Type of accounting field. Possible values are SUBSIDIARY, MERCHANT, GENERAL_LEDGER_ACCOUNT, TAX_CODE, CLASS, DEPARTMENT, LOCATION, PROJECT, OTHER.
Name of the accounting field value in the ERP.
External unique identifier of the accounting field value in the ERP.
Name of the accounting field in the ERP software. This field is populated only when type is set to OTHER.
Name of the accounting field value displayed in Airwallex.
Unique identifier of the expense line item.
Optional description providing details about this specific line item. Helps explain what this component of the expense represents for accounting and approval purposes.
Amount of this line item in the transaction currency, including all taxes. Represents the actual expense amount for this specific component of the overall expense.
Name of the business or merchant where the purchase was made, as reported by the payment network. Null for some transaction types.
Timestamp when the transaction was settled, in ISO8601 format. Null if transaction is still pending settlement.
Current approval status of the expense. Possible values: DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED. Additional values may appear; implementations should handle unknown values gracefully.
DRAFT, AWAITING_APPROVAL, REJECTED, APPROVED, ARCHIVED, DELETED
Expense sync status. Possible values are NOT_SYNCED, READY_TO_SYNC, SYNCED, SYNC_FAILED.
Timestamp for when the resource was updated in ISO8601 format.
| Error status | Description |
|---|---|
| 400 | Invalid Request. |
| 404 | Not found. |
| 500 | Internal server error. |
$curl --request POST \> --url 'https://api.airwallex.com/api/v1/spend/expenses/expense_id/sync' \> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \> --header 'Content-Type: application/json' \> --data '{> "sync_status": "SYNCED">}'
1{2 "id": "ba46f0ff-8081-4db6-8333-4e011fe9561d",3 "account_id": "acct_a2y0pxz3m4k5hoZldn97hjzp",4 "legal_entity_id": "le_U3jlHqQRNHWn2zAKeeT8sg",5 "card_id": "93eed14b-104d-4f40-ae1d-3633c6538276",6 "status": "AWAITING_APPROVAL",7 "card_transaction": {8 "status": "CLEARED",9 "amount": "105.50",10 "currency": "USD"11 },12 "sync_status": "SYNCED",13 "billing_currency": "USD",14 "billing_amount": "105.5",15 "description": "Client dinner at restaurant for Q4 planning meeting",16 "merchant": "Starbucks Coffee #1234",17 "approvers": [18 "[email protected]",19 "[email protected]"20 ],21 "created_at": "2025-01-01T00:00:00Z",22 "updated_at": "2025-02-02T00:00:00Z",23 "settled_at": "2025-03-03T10:15:30Z",24 "accounting_field_selections": [25 {26 "type": "GENERAL_LEDGER_ACCOUNT",27 "name": "Expense Account",28 "external_id": "c9fcfdee-f943-45c9-abaa-45df1601ae04",29 "value": "Travel & Entertainment",30 "value_label": "Travel & Entertainment"31 }32 ],33 "attachments": [34 {35 "id": "0fd62109-cfc0-4c94-86a5-d01c42506b76",36 "content_type": "image/jpeg",37 "file_name": "receipt.jpg",38 "file_url": "https://files.airwallex.com/receipt.jpg",39 "created_at": "2024-12-16T09:22:00Z"40 }41 ],42 "line_items": [43 {44 "id": "a12fca5e-4aeb-4adb-85b0-428b4f078aba",45 "transaction_amount": "105.50",46 "description": "Business meal with client",47 "accounting_field_selections": []48 }49 ],50 "comments": [51 {52 "content": "Expense approved - valid business purpose confirmed",53 "created_by": "[email protected]",54 "created_at": "2025-01-01T00:00:00Z"55 }56 ]57}