> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 导出与报表下载

> Portal 列表导出是后台任务而不是即时下载：完成的文件出现在哪里、四种任务状态各是什么意思、为什么 Failed Count 不代表缺少数据行、下载链接何时过期，以及在导出开始前就会拦住它的日期跨度和行数限制。

大多数 Portal 列表导出**不会**把文件直接流式传到你的浏览器。点击**导出**会排入一个
后台任务；完成的文件稍后从同一模块的**报表**列表中领取。
导出文件的列定义见
[对账报表](/docs/zh/developer-docs/tools-and-references/references/reconciliation-reports)。

## 我点了导出但什么都没下载，我的文件在哪？

确认对话框会说报表*正在导出*，并让你稍后回到报表 Tab 查看。
那个 Tab 就是任务及其文件所在的地方：

| 你从哪里导出 | 到哪里领取文件 |
| - | - |
| 交易 → **支付** | 交易 → **报表**（文件类型 `Payments`） |
| 交易 → **退款** | 交易 → **报表**（文件类型 `Refunds`） |
| 订阅列表 | 订阅 → **报表**（文件类型 `Subscriptions`） |
| Payout → 历史 → **单笔 Payout** | Payout → 历史 → **报表**（`Single Payouts`） |
| Payout → 历史 → **批量 Payout** | Payout → 历史 → **报表**（`Batch Payouts`） |

报表列表默认显示**最近一个月的导出日期**（UTC+8），所以较早的任务需要放宽日期
筛选。每一行显示导出日期、状态、文件类型、创建时间、成功时间和文件
名；交易的行还会显示 **Failed Count**。只要你的 Portal 里能看到某个报表 Tab，
你就可以从该模块导出——Tab 和导出按钮是一起提供的。

## 四种导出状态分别是什么意思？

| 状态 | 含义 | 是否终态 | 你要做什么 |
| - | - | - | - |
| **Pending Export** | 任务已接受，文件尚未生成 | 否 | 等待 |
| **Retry Needed** | 一次尝试失败；任务已排队等待再次运行 | 否 | 什么都不用做——见下文 |
| **Exported** | 文件已生成并可用 | 是 | 点击文件名 |
| **Export Failed** | 自动重试未成功；该任务不会产出文件 | 是 | 缩小筛选范围后重新导出 |

只有 **Exported** 的行才有可下载的文件。在 Payout 报表 Tab 上，非 `Exported` 的行在
文件名位置显示 `-`。

## 状态显示 Retry Needed，我需要做什么吗？

不需要。**Retry Needed** 是一个自动状态，不是让你做什么的指令。任务保存了你
提交的筛选条件，后台作业会在短暂冷却后再次拾取该行，并以
完全相同的筛选条件重新运行，直到它到达 **Exported** 或 **Export Failed**。

当某一行处于 **Retry Needed** 时，再次为同一模块点击**导出**会*恢复那个
同一任务*，而不是创建第二个任务，所以你不会得到重复的文件。

## Failed Count 不是 0，我导出的数据不完整吗？

不是。**Failed Count** 统计的是*该任务失败的生成尝试次数*，而不是被跳过或丢弃的数据行。一
行状态为 **Exported** 且 `Failed Count = 2`，意味着文件是在后来的某次尝试中生成的，并且
对于你提交的筛选条件是完整的。无法完成的运行会让该行停留在 **Retry Needed** 或
**Export Failed**——部分数据绝不会以 **Exported** 状态发布。

## 下载链接会过期吗？

会，而且这是有意为之：行里不存储任何链接。点击文件名会在那一刻生成一个新的、
短期有效的链接并打开它。如果你之前
复制的链接失效了，请回到报表行再次点击文件名——任务行
会留在列表中，所以文件之后仍可再次领取。

## 为什么我的导出在任务还没创建时就被拒绝了？

提交时会运行四项检查，每项都有自己的提示：

| 提示 | 原因 | 解决办法 |
| - | - | - |
| *The current query data is empty* | 匹配记录为零——不会创建任务（订阅） | 调整筛选条件 |
| *The previous export is still in progress* | 该报表类型已存在一个 **Pending Export** 行 | 等待其完成 |
| *Too many records to export* | 结果集超过单次导出的记录上限 | 缩小日期范围或筛选条件 |
| *Time frame should not exceed one month* | 结算预估导出的跨度 | 拆成更短的时间段 |

进行中检查是**按报表类型**而不是按账户进行的：一个正在进行的支付导出不会
阻塞退款导出，反之亦然。

对于支付和退款，空结果仍会生成一个只有表头的文件，所以"没有匹配的
交易"与失败的导出是可以区分的。订阅导出是唯一会在提交前直接拒绝的。

## 导出的跨度和大小限制是多少？

* **日期跨度：31 天。** 对支付、退款和 Payout 历史导出，日期选择器和服务端
  都会执行此限制，所以手工构造的更宽范围仍会被拒绝。结算
  预估导出上限为一个月。
* **每个文件行数：60,000。** 在上限内你得到一个 `.csv`。超过上限时，任务会拆分成
  带编号的文件（`..._001.csv`、`..._002.csv`、……），以单个 `.zip` 交付——一个报表行，
  一次下载，里面多个文件。
* **文件命名：** `{report type}_{MID}_{from}_{to}.csv`，两个日期均为 **UTC+8** 的 `YYYYMMDD`——
  例如 `payments_{MID}_20260801_20260827.csv`。Payout 文件使用报表标签
  （`Single Payouts`、`Batch Payouts`）作为前缀。

## 哪些导出是异步的，哪些是立即下载的？

| 导出 | 模式 |
| - | - |
| 支付、退款、订阅、Payout 单笔与批量历史 | 后台任务 → 模块的**报表** Tab |
| 结算批次明细、自定义导出、预估 | 后台任务 → 结算 → 报表 → 导出历史 |
| 批量退款列表、结算日历 | 在浏览器中直接下载 |
| Payout → **Report** | 非按需——列出周期性生成的文件供下载 |

结算导出以**三**态历史（`Pending` / `Success` / `Failed`）列出，
而不是上述四态；那里没有 Retry Needed 或 Failed Count。

## 报表列表会自动刷新吗？

订阅报表 Tab 在任何一行仍为 **Pending Export** 或 **Retry Needed** 时会轮询，
所有行都到达终态后停止。交易和 Payout 报表 Tab 不会轮询——重新应用
日期筛选，或重新访问该 Tab，以拉取最新状态。

***

仍然找不到文件？[联系支持](mailto:support@waffo.com)，附上模块、导出日期以及
报表行上显示的文件名。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.