diff --git a/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/reports.mdx b/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/reports.mdx
new file mode 100644
index 0000000000..acfcd9ad34
--- /dev/null
+++ b/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/reports.mdx
@@ -0,0 +1,48 @@
+---
+title: Reports
+sidebar_position: 65
+---
+
+The Reports page is where you export PDFs: a wallet statement for your distribution account and individual transaction notices for single payments.
+
+
+
+:::info
+
+The Reports menu item and page are optional and disabled by default. Organization owners can enable it from the **Settings** page using the "Enable Reports" toggle. This sets the `reporting_enabled` flag on the organization, which is served via the `/app-config` endpoint. When disabled, the Reports entry is hidden from the sidebar and the `/reports` route is not available.
+
+:::
+
+The Reports page includes the following:
+
+### Wallet Statement
+
+
+
+- **Header**: Organization logo and name, "Operated by" (provider URL), and "Generated on" (timestamp).
+- **Statement period**: The date range (From–To) covered by the statement.
+- **Wallet address**: Your distribution account's Stellar address (clickable in the PDF; opens in Stellar Expert per the info above).
+- **Account summary table**: One row per currency (e.g. USDC, XLM) with Beginning Balance, Total Credits, Total Debits, and Ending Balance.
+- **Transactions table**: Per-asset list of transactions with Date, Transaction ID (and optional Payment ID), Counterparty (wallet/recipient), Debits, Credits, and Balance.
+
+- **Individual Transaction Notice**: Generate a PDF for a single payment.
+ - Search by SDP Transaction ID or Payment ID: Enter a full or partial ID to find the payment; results appear in a table with Transaction ID, Payment ID, Date, and Disbursement Name.
+ - Select one payment from the results using the radio button.
+ - Notes (optional): Add up to 500 characters of notes; they are included in the generated PDF.
+ - Download Notice: Click to generate and download the PDF for the selected payment (e.g. `transaction_notice_{paymentID}.pdf`).
+
+### Transaction Notice
+
+
+
+- **Header**: Organization logo and name, "Operated by" (provider URL), and "Generated on" (timestamp).
+- **Title and Stellar Transaction ID**: "Transaction Notice" and the on-chain transaction hash (clickable; opens in Stellar Expert per the info above).
+- **Transaction summary table**: Amount, Currency, Status (e.g. SUCCESS), Payment ID, and Status Update At.
+- **Transaction details**: Sender (organization name, wallet address, MEMO, fee) and Recipient (org ID, wallet address, wallet provider), in two columns.
+- **Disbursement details**: Disbursement ID and Disbursement Name for context.
+
+:::info
+
+Transaction and wallet address links in the generated PDFs open in Stellar Expert Explorer. The explorer network (testnet or public) is determined by the **backend** `STELLAR_EXPERT_URL` environment variable; when this variable is not set, the default is testnet.
+
+:::
diff --git a/docs/platforms/stellar-disbursement-platform/api-reference/get-payment-export.api.mdx b/docs/platforms/stellar-disbursement-platform/api-reference/get-payment-export.api.mdx
new file mode 100644
index 0000000000..458635cd1d
--- /dev/null
+++ b/docs/platforms/stellar-disbursement-platform/api-reference/get-payment-export.api.mdx
@@ -0,0 +1,110 @@
+---
+id: get-payment-export
+title: "Get Payment Transaction Notice (PDF)"
+description: "Returns a single-page Transaction Notice PDF for the given payment (id). Optional internal_notes are included in the PDF (max 500 characters). The PDF is built with gofpdf: single-page A4, payment details, disbursement info when applicable, and organization branding."
+sidebar_label: "Get Payment Transaction Notice (PDF)"
+hide_title: true
+hide_table_of_contents: true
+api: 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
+sidebar_class_name: "get api-method"
+info_path: docs/platforms/stellar-disbursement-platform/api-reference/stellar-disbursement-platform-api
+custom_edit_url: null
+---
+
+import { SepBadge } from "@site/src/components/SepBadge";
+
+
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+Returns a single-page Transaction Notice PDF for the given payment (id). Optional internal_notes are included in the PDF (max 500 characters). The PDF is built with gofpdf: single-page A4, payment details, disbursement info when applicable, and organization branding.
+
+## Fields in the generated PDF
+
+The following tables describe the fields that appear in the transaction notice PDF, how they are calculated (when applicable), and whether the value comes from the **DB**, **Horizon**, or **Request**. Tables are grouped by source.
+
+### Request
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Internal notes | Free text included in the PDF | Request (`internal_notes` query param) |
+
+### Context
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Sender Wallet Address | Distribution account Stellar address | Context (distribution account) |
+
+### DB
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Organization name, logo | Header | `Organizations` |
+| Stellar Transaction ID | Link to Stellar Expert | `Payment` |
+| Amount, Currency, Status, Payment ID (external), Status Update At | Transaction summary section | `Payment`, `Payment.Asset`, `Payment.status_history` |
+| Sender Name | Organization name | `Organizations` |
+| MEMO (Text) | When taken from receiver wallet | `ReceiverWallet.StellarMemo` |
+| Recipient Org ID | Receiver external ID | `ReceiverWallet.Receiver` |
+| Recipient Wallet Address | Receiver Stellar address | `ReceiverWallet` |
+| Wallet Provider | Wallet name | `ReceiverWallet.Wallet` |
+| Disbursement ID, Name | When payment is a disbursement | `Payment.Disbursement` |
+| Created by / Approved by | User names and timestamps from disbursement status history (`DRAFT` → `Created`, `STARTED` → `Approved`) | `Disbursement.status_history`, `AuthManager.GetUsersByID` |
+
+### Horizon
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| MEMO (Text) | When taken from transaction | `TransactionDetail.Memo` |
+| Fee Charged | Transaction fee in XLM (`FeeCharged` in `stroops` ÷ 10^7) | `TransactionDetail.FeeCharged` |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/platforms/stellar-disbursement-platform/api-reference/get-statement-export.api.mdx b/docs/platforms/stellar-disbursement-platform/api-reference/get-statement-export.api.mdx
new file mode 100644
index 0000000000..89253312f0
--- /dev/null
+++ b/docs/platforms/stellar-disbursement-platform/api-reference/get-statement-export.api.mdx
@@ -0,0 +1,122 @@
+---
+id: get-statement-export
+title: "Get Statement (PDF)"
+description: "Returns a ledger-style PDF for the authenticated tenant's distribution account over the given date range. The PDF is built with gofpdf (multi-page, A4). Only supported for Stellar (non-Circle) distribution accounts; returns 400 if the account is not Stellar."
+sidebar_label: "Get Statement (PDF)"
+hide_title: true
+hide_table_of_contents: true
+api: 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
+sidebar_class_name: "get api-method"
+info_path: docs/platforms/stellar-disbursement-platform/api-reference/stellar-disbursement-platform-api
+custom_edit_url: null
+---
+
+import { SepBadge } from "@site/src/components/SepBadge";
+
+
+
+import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
+import ParamsDetails from "@theme/ParamsDetails";
+import RequestSchema from "@theme/RequestSchema";
+import StatusCodes from "@theme/StatusCodes";
+import OperationTabs from "@theme/OperationTabs";
+import TabItem from "@theme/TabItem";
+import Heading from "@theme/Heading";
+
+
+
+
+
+
+
+
+
+
+Returns a ledger-style PDF for the authenticated tenant's distribution account over the given date range. The PDF is built with gofpdf (multi-page, A4). Only supported for Stellar (non-Circle) distribution accounts; returns 400 if the account is not Stellar.
+
+## Fields in the generated PDF
+
+The following tables describe the fields that appear in the statement PDF, how they are calculated (when applicable), and whether the value comes from the **DB**, **Horizon**, or **Request**. Tables are grouped by source.
+
+### Request
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Statement period (from / to) | Date range of the statement | Request (`from_date`, `to_date`) |
+
+### Context
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Wallet address | Distribution account Stellar address | Context (distribution account) |
+| Account (summary) | Same as wallet address, prefixed `stellar:` | Context (distribution account) |
+
+### Calculated
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Beginning balance (per asset) | `ending_balance` − `total_credits` + `total_debits`; clamped to ≥ 0 | Calculated from Horizon totals |
+| Total credits (per asset) | Sum of credit amounts in range from payment-like operations | Calculated from Horizon transactions in range |
+| Total debits (per asset) | Sum of debit amounts in range from payment-like operations | Calculated from Horizon transactions in range |
+| Ending balance (per asset) | `current_balance` − `credits_after_period` + `debits_after_period` | Calculated (Horizon `GetBalance` + totals after period) |
+| Running balance (per row) | Beginning balance ± credits/debits up to that row | Calculated in PDF |
+
+### DB
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Organization name, logo | Shown in header | `Organizations` |
+| Transaction line: Updated at | Success timestamp when payment matched by `tx` hash | `Payment.status_history` |
+| Transaction line: Counterparty name | Receiver external ID when resolved by Stellar address | `ReceiverWallet.Receiver` |
+| Transaction line: External payment ID | From payment record when matched by `tx` hash + `operation_id` | `Payment` |
+| Asset list (when no `asset_code`) | Non-native assets with balance | `Assets` |
+
+### Horizon
+
+| Field | Description | Source |
+| ----- | --------------------------- | ------ |
+| Transaction line: ID | Stellar transaction hash | Horizon (transactions in range) |
+| Transaction line: Created at | Ledger close time of the transaction | Horizon |
+| Transaction line: Type | `credit` or `debit` (derived from `from`/`to`) | Horizon |
+| Transaction line: Amount | Operation amount | Horizon |
+| Transaction line: Counterparty address | Other account in the payment operation | Horizon |
+| Asset list (when no `asset_code`) | Assets with balance on distribution account | Horizon (`GetBalances`) |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/platforms/stellar-disbursement-platform/api-reference/reports.tag.mdx b/docs/platforms/stellar-disbursement-platform/api-reference/reports.tag.mdx
new file mode 100644
index 0000000000..2e8635aba5
--- /dev/null
+++ b/docs/platforms/stellar-disbursement-platform/api-reference/reports.tag.mdx
@@ -0,0 +1,20 @@
+---
+id: reports
+title: "Reports"
+description: "Reports"
+custom_edit_url: null
+---
+
+
+
+Reports endpoints return PDF documents: a multi-page ledger-style wallet statement and a single-page transaction notice per payment. Each PDF includes the organization name and logo.
+
+
+
+
+```mdx-code-block
+import DocCardList from '@theme/DocCardList';
+import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
+
+
+```
diff --git a/docs/platforms/stellar-disbursement-platform/api-reference/sidebar.ts b/docs/platforms/stellar-disbursement-platform/api-reference/sidebar.ts
index 9a16827715..a50157f6ab 100644
--- a/docs/platforms/stellar-disbursement-platform/api-reference/sidebar.ts
+++ b/docs/platforms/stellar-disbursement-platform/api-reference/sidebar.ts
@@ -470,6 +470,28 @@ const sidebar: SidebarsConfig = {
},
],
},
+ {
+ type: "category",
+ label: "Reports",
+ link: {
+ type: "doc",
+ id: "platforms/stellar-disbursement-platform/api-reference/reports",
+ },
+ items: [
+ {
+ type: "doc",
+ id: "platforms/stellar-disbursement-platform/api-reference/get-statement-export",
+ label: "Get Statement (PDF)",
+ className: "api-method get",
+ },
+ {
+ type: "doc",
+ id: "platforms/stellar-disbursement-platform/api-reference/get-payment-export",
+ label: "Get Payment Transaction Notice (PDF)",
+ className: "api-method get",
+ },
+ ],
+ },
{
type: "category",
label: "Statistics",
diff --git a/openapi/stellar-disbursement-platform/bundled.yaml b/openapi/stellar-disbursement-platform/bundled.yaml
index 6c1705c040..7e0de344f7 100644
--- a/openapi/stellar-disbursement-platform/bundled.yaml
+++ b/openapi/stellar-disbursement-platform/bundled.yaml
@@ -65,6 +65,8 @@ tags:
The second part of the registration flow is handled by the webview that is opened within the wallet application. This webview uses the endpoints defined in the Stellar Disbursement Platfrom Endpoints section to complete the registration process. The wallet application can chose not to use the webview and intstead integrate directly with the API.
- name: Statistics
description: Statistics endpoints return general aggregated data per organization, as well as disbursement-specific metrics. SDP users can use this data to monitor their disbursements over time.
+ - name: Reports
+ description: Reports endpoints return PDF documents. A multi-page ledger-style wallet statement and a single-page transaction notice per payment. Each PDF includes the organization name and logo.
- name: Users
description: The users endpoints facilitate the creation of new SDP users - including setting the appropriate role, sending an email invitation, and activating a user - and managing roles.
paths:
@@ -1390,6 +1392,154 @@ paths:
$ref: '#/components/responses/ForbiddenResponse'
security:
- BearerAuth: []
+ /reports/statement:
+ get:
+ tags:
+ - Reports
+ summary: Get Statement (PDF)
+ description: |
+ Returns a ledger-style PDF for the authenticated tenant's distribution account over the given date range. The PDF is built with gofpdf (multi-page, A4). Only supported for Stellar (non-Circle) distribution accounts; returns 400 if the account is not Stellar.
+ operationId: GetStatementExport
+ parameters:
+ - name: from_date
+ in: query
+ description: Start date of the statement (inclusive). Format YYYY-MM-DD.
+ required: true
+ style: form
+ explode: true
+ schema:
+ type: string
+ format: date
+ example: '2025-01-01'
+ - name: to_date
+ in: query
+ description: End date of the statement (inclusive). Must be greater than or equal to from_date. Format YYYY-MM-DD.
+ required: true
+ style: form
+ explode: true
+ schema:
+ type: string
+ format: date
+ example: '2025-01-31'
+ - name: asset_code
+ in: query
+ description: Filter by asset code (e.g. USDC). Omit or leave empty for all assets.
+ required: false
+ style: form
+ explode: true
+ schema:
+ type: string
+ - name: base_url
+ in: query
+ description: Base URL used in the PDF for "Operated by" and footer links.
+ required: false
+ style: form
+ explode: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: PDF file (statement_YYYYMMDD-YYYYMMDD.pdf)
+ headers:
+ Content-Disposition:
+ description: Filename of the returned PDF file.
+ style: simple
+ explode: false
+ schema:
+ type: string
+ Content-Type:
+ description: application/pdf
+ style: simple
+ explode: false
+ schema:
+ type: string
+ content:
+ application/pdf:
+ schema:
+ type: string
+ format: binary
+ example: ''
+ '400':
+ description: Invalid query parameters or statement is only supported for Stellar distribution accounts
+ $ref: '#/components/responses/BadRequestResponse'
+ '401':
+ description: Unauthorized
+ $ref: '#/components/responses/UnauthorizedResponse'
+ '403':
+ description: Forbidden
+ $ref: '#/components/responses/ForbiddenResponse'
+ '404':
+ description: Asset not found for account
+ $ref: '#/components/responses/NotFoundResponse'
+ security:
+ - BearerAuth: []
+ /reports/payment/{id}:
+ get:
+ tags:
+ - Reports
+ summary: Get Payment Transaction Notice (PDF)
+ description: |
+ Returns a single-page Transaction Notice PDF for the given payment (id). Optional internal_notes are included in the PDF (max 500 characters). The PDF is built with gofpdf: single-page A4, payment details, disbursement info when applicable, and organization branding.
+ operationId: GetPaymentExport
+ parameters:
+ - name: id
+ in: path
+ description: ID of the Payment.
+ required: true
+ style: simple
+ explode: false
+ schema:
+ type: string
+ - name: internal_notes
+ in: query
+ description: Optional notes included in the PDF. Max 500 characters.
+ required: false
+ style: form
+ explode: true
+ schema:
+ type: string
+ maxLength: 500
+ - name: base_url
+ in: query
+ description: Base URL used in the PDF for "Operated by" and footer links.
+ required: false
+ style: form
+ explode: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: PDF file (transaction_notice_<id>.pdf)
+ headers:
+ Content-Disposition:
+ description: Filename of the returned PDF file.
+ style: simple
+ explode: false
+ schema:
+ type: string
+ Content-Type:
+ description: application/pdf
+ style: simple
+ explode: false
+ schema:
+ type: string
+ content:
+ application/pdf:
+ schema:
+ type: string
+ format: binary
+ example: ''
+ '401':
+ description: Unauthorized
+ $ref: '#/components/responses/UnauthorizedResponse'
+ '403':
+ description: Forbidden
+ $ref: '#/components/responses/ForbiddenResponse'
+ '404':
+ description: Payment not found
+ $ref: '#/components/responses/NotFoundResponse'
+ security:
+ - BearerAuth: []
/payments:
get:
tags:
diff --git a/openapi/stellar-disbursement-platform/main.yaml b/openapi/stellar-disbursement-platform/main.yaml
index 535647fa42..458b7c3610 100644
--- a/openapi/stellar-disbursement-platform/main.yaml
+++ b/openapi/stellar-disbursement-platform/main.yaml
@@ -65,6 +65,8 @@ tags:
The second part of the registration flow is handled by the webview that is opened within the wallet application. This webview uses the endpoints defined in the Stellar Disbursement Platfrom Endpoints section to complete the registration process. The wallet application can chose not to use the webview and intstead integrate directly with the API.
- name: Statistics
description: Statistics endpoints return general aggregated data per organization, as well as disbursement-specific metrics. SDP users can use this data to monitor their disbursements over time.
+ - name: Reports
+ description: Reports endpoints return PDF documents. A multi-page ledger-style wallet statement and a single-page transaction notice per payment. Each PDF includes the organization name and logo.
- name: Users
description: The users endpoints facilitate the creation of new SDP users - including setting the appropriate role, sending an email invitation, and activating a user - and managing roles.
paths:
diff --git a/routes.txt b/routes.txt
index a938acb244..e111ce10c2 100644
--- a/routes.txt
+++ b/routes.txt
@@ -619,6 +619,7 @@
/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/disbursements
/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/payments
/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/receivers
+/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/reports
/docs/platforms/stellar-disbursement-platform/admin-guide/user-interface/wallets
/docs/platforms/stellar-disbursement-platform/api-reference
/docs/platforms/stellar-disbursement-platform/api-reference/admin
@@ -656,9 +657,11 @@
/docs/platforms/stellar-disbursement-platform/api-reference/get-organization-circle-balances
/docs/platforms/stellar-disbursement-platform/api-reference/get-organization-info
/docs/platforms/stellar-disbursement-platform/api-reference/get-organization-logo
+/docs/platforms/stellar-disbursement-platform/api-reference/get-payment-export
/docs/platforms/stellar-disbursement-platform/api-reference/get-profile
/docs/platforms/stellar-disbursement-platform/api-reference/get-receiver-registration-info
/docs/platforms/stellar-disbursement-platform/api-reference/get-sep-24-info
+/docs/platforms/stellar-disbursement-platform/api-reference/get-statement-export
/docs/platforms/stellar-disbursement-platform/api-reference/list-all-disbursement-receivers
/docs/platforms/stellar-disbursement-platform/api-reference/list-all-disbursements
/docs/platforms/stellar-disbursement-platform/api-reference/list-all-payments
@@ -675,6 +678,7 @@
/docs/platforms/stellar-disbursement-platform/api-reference/receivers
/docs/platforms/stellar-disbursement-platform/api-reference/refresh-token
/docs/platforms/stellar-disbursement-platform/api-reference/registration
+/docs/platforms/stellar-disbursement-platform/api-reference/reports
/docs/platforms/stellar-disbursement-platform/api-reference/request-challenge-transaction
/docs/platforms/stellar-disbursement-platform/api-reference/request-registration-url
/docs/platforms/stellar-disbursement-platform/api-reference/reset-password
diff --git a/static/assets/SDP/SDP49.1.png b/static/assets/SDP/SDP49.1.png
new file mode 100644
index 0000000000..f1b07e0782
Binary files /dev/null and b/static/assets/SDP/SDP49.1.png differ
diff --git a/static/assets/SDP/SDP49.2.png b/static/assets/SDP/SDP49.2.png
new file mode 100644
index 0000000000..6bab9998da
Binary files /dev/null and b/static/assets/SDP/SDP49.2.png differ
diff --git a/static/assets/SDP/SDP49.3.png b/static/assets/SDP/SDP49.3.png
new file mode 100644
index 0000000000..68c03ca54a
Binary files /dev/null and b/static/assets/SDP/SDP49.3.png differ