---
title: "Export folio transactions as PDF"
method: POST
path: "/fiscal-document/v1/folios/export"
tags: ["Export"]
---

# Export folio transactions as PDF

`POST /fiscal-document/v1/folios/export`

## Request

- Base URL: `https://api.cloudbeds.com`
- URL: `https://api.cloudbeds.com/fiscal-document/v1/folios/export`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://api.cloudbeds.com/auth/oauth/authorize`
    - Token URL: `https://api.cloudbeds.com/auth/oauth/token` scopes: `read:reservation`

Export folio list of transactions as PDF

## Headers

- `X-Property-ID` integer, required
- `Accept-Language` string

## Request body

- GetFolioExportRequest
  - `folioIds` integer[]: Include transactions from the specified folio IDs. If omitted, all transactions for the source are included. The same filter set is applied to each selected folio.
  - `sourceKind` 'GROUP_PROFILE' | 'RESERVATION' | 'HOUSE_ACCOUNT' | 'ACCOUNTS_RECEIVABLE_LEDGER', required: Kind of the source entity
  - `sourceId` integer, required: source ID of folio
  - `creditDebitView` boolean: Should transactions be separated into debit/credits
  - `revenueCompact` boolean: Compact revenue transactions, valid only for sourceKind = RESERVATION
  - `dateFrom` string, date, nullable: Filter transactions with transaction datetime from this point (inclusive). Required for sourceKind = HOUSE_ACCOUNT, optional for others.
  - `dateTo` string, date, nullable: Filter transactions with transaction datetime up to this point (inclusive).
  - `searchQuery` string, nullable: Case-insensitive substring match on transaction description.
  - `descriptionFilters` string[], nullable: Composite identifiers used to filter by transaction type. Accepts the same values as POST /accounting/v1.0/folios/transactions descriptionFilters: typed item ids ("product_123", "tax_456", "addon_789", "fee_101", "custom_item_202", "bookable_resource_303"), room revenue groups ("rate", "roomRevenue_manual", "roomRevenue_cancellation", "roomRevenue_no_show", "accountsReceivable"), or payment method codes ("cash", "ebanking", "cards_visa", "cards_master", "pay_pal").
  - `posted` boolean, nullable: Tri-state. true = only posted, false = only pending, omit = both.
  - `includeVoided` boolean: Include voided transactions and their full chain. Default true.
  - `subSourceIds` integer[], nullable: Filter by sub-source IDs (booking room IDs for RESERVATION sources). Mirrors the same filter on POST /accounting/v1.0/folios/transactions.
  - `sort` FolioExportSort[], nullable: Optional ordering applied to the rendered transactions. Field names mirror POST /accounting/v1.0/folios/transactions: transaction_datetime, service_date, internal_code, description, notes, quantity, amount. When omitted the renderer uses its template default order.
    - `field` string, required: Sort field name. One of: transaction_datetime, service_date, internal_code, description, notes, quantity, amount.
    - `direction` 'ASC' | 'DESC', required
  - `groupBy` 'transaction_date' | 'service_date' | 'description' | 'sub_source_identifier' | 'user_id' | 'reservation_name' | 'room_name' | 'transaction_date_legacy' | 'transaction_datetime_legacy' | 'service_date_legacy' | 'description_legacy' | 'description_filter_legacy' | 'sub_source_identifier_legacy' | 'user_id_legacy' | 'reservation_name_legacy' | 'room_name_legacy': Field to group the rendered transactions by. As groupBy, each group is followed by a subtotal row, a single group included, and the final row is the grand total. Groups keep the order in which they first appear under the requested sort, and transaction_date groups by the posting date. As subGroupBy, rows are ordered by this field inside each group (ignored without groupBy). Both are ignored for properties without the feature.accounting.folio-export-grouping flag. The plain names mirror the groupBy of POST /accounting/v1.0/folios/transactions and group as that folio table does: every pending row goes into one leading group. The *_legacy names group as the legacy folio screens do: pending rows stay in their groups, room_name_legacy puts a reservation payment under N/A unless the reservation has exactly one assigned room, description_filter_legacy groups by transaction type (so "Room rate - Queen" and "Room rate - King" both fall under "rate"), and transaction_datetime_legacy groups by the posting time to the second, as the group profile folio does. Whether pending rows are lifted follows groupBy.
  - `subGroupBy` 'transaction_date' | 'service_date' | 'description' | 'sub_source_identifier' | 'user_id' | 'reservation_name' | 'room_name' | 'transaction_date_legacy' | 'transaction_datetime_legacy' | 'service_date_legacy' | 'description_legacy' | 'description_filter_legacy' | 'sub_source_identifier_legacy' | 'user_id_legacy' | 'reservation_name_legacy' | 'room_name_legacy': Field to group the rendered transactions by. As groupBy, each group is followed by a subtotal row, a single group included, and the final row is the grand total. Groups keep the order in which they first appear under the requested sort, and transaction_date groups by the posting date. As subGroupBy, rows are ordered by this field inside each group (ignored without groupBy). Both are ignored for properties without the feature.accounting.folio-export-grouping flag. The plain names mirror the groupBy of POST /accounting/v1.0/folios/transactions and group as that folio table does: every pending row goes into one leading group. The *_legacy names group as the legacy folio screens do: pending rows stay in their groups, room_name_legacy puts a reservation payment under N/A unless the reservation has exactly one assigned room, description_filter_legacy groups by transaction type (so "Room rate - Queen" and "Room rate - King" both fall under "rate"), and transaction_datetime_legacy groups by the posting time to the second, as the group profile folio does. Whether pending rows are lifted follows groupBy.
  - `format` 'PDF' | 'XLSX': Export file format
  - `recipient` RecipientRequest
    - `type` 'GUEST' | 'CONTACT' | 'GROUP' | 'COMPANY' | 'GROUP_PROFILE' | 'GROUP_PROFILE_CONTACT', required: Type of the recipient.
    - `id` integer, required: ID of the recipient, references guestId, contactId, groupId, etc. depending on type.
    - `taxDocumentSource` 'GUEST_TAX_ID' | 'GUEST_DOCUMENT_NUMBER': Source of the tax document number.

## Response `200`

Successful file download

---

[API](https://skmtc.dev/cloudbeds/apis/fiscal-document-service-api.md) - [All operations](https://skmtc.dev/cloudbeds/apis/fiscal-document-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cloudbeds/apis/fiscal-document-service-api/revisions/9c2a47775e5e?raw)
