Reporting Built for the Whole Stack
Reporting

Reporting Built for the Whole Stack

Settlement reports per merchant. Cross-channel visibility by default. Scheduled delivery to your warehouse, ERP, or finance team. Reporting at Surfboard isn't a dashboard you log into — it's an API surface your finance pipeline pulls from.

Reports Where Your Finance Stack Already Lives

Most payment platforms give you a CSV export and a dashboard. Surfboard gives you a structured API plus scheduled file delivery to wherever your finance pipeline already runs. No re-typing, no manual export, no parsing PDFs.

Pull settlement reports on demand. Subscribe to daily SFTP drops for your ERP. Push merchant statements through email or Slack. Reconcile against transactions, adjustments, charges, and partner revenue share — all from the same API surface.

One source of truth, every channel

Surfboard runs a single ledger across in-store, online, SoftPOS, and unattended. The reporting layer reflects that — every channel a merchant accepts on shows up on the same settlement, with the same fee structure, settled to the same payout. No fragmentation between providers, no reconciliation between processors.

How Reporting Works

1

Pull settlement reports via API

Daily or monthly settlement breakdowns per merchant — total sales, total refunds, fees, and payout — returned as structured JSON plus a downloadable PDF URL.
                          GET /partners/:partnerId/merchants/:merchantId/reports

// Response
{
  "status": "SUCCESS",
  "data": [{
    "payoutId": "Q6z2e0goIOE4DXD0VYiT",
    "settlementDate": "2026-04-29",
    "reportType": "DAILY",
    "totalSale": 10000,
    "totalRefund": 100,
    "fee": 200,
    "payout": 9700,
    "url": "https://reports.surfboardpayments.com/..."
  }]
}
                      
2

Subscribe to scheduled report delivery

Push reports to your team or to merchants automatically — over email, Slack, or SFTP. No polling, no cron jobs, no missed reports.
                          POST /partners/:partnerId/notifications
{
  "type": "MERCHANT_REPORTS",
  "channel": "SFTP",
  "schedule": "DAILY",
  "destination": {
    "host": "sftp.your-erp.com",
    "path": "/inbound/surfboard"
  }
}
                      
3

Reconcile against transactions and adjustments

Combine settlement reports with the Transactions, Adjustments, and Charges APIs to build complete reconciliation pipelines — fees, surcharges, tips, refunds, partner revenue share, and net payout, all in one view.

What you can build

A reporting API done right turns finance from a spreadsheet exercise into a pipeline. Here are the workflows partners actually run.

1. Daily Reconciliation Pipelines

Hit the reports endpoint once a day, fetch every merchant's settlement, and write it into your finance warehouse. Standard JSON, predictable shape, paginated.

  • Total sale, total refund, fee, payout — all per settlement
  • Transaction date range and settlement date
  • Direct PDF URL for audit trails

Built to plug straight into NetSuite, Workday, Xero, Visma, Fortnox — anything that consumes a daily feed.

2. Merchant-Facing Statements

Surface the same data inside your own merchant portal. Customers see a clear breakdown of sales, refunds, fees, and net payout for every settlement period.

Pair with the Branding API and merchants see those statements in your visual identity, not ours.

3. SFTP Drops for Banks and Enterprise ERPs

Banks, large acquirers, and enterprise ERP integrators expect file drops, not webhooks. The Notifications API publishes scheduled reports to SFTP destinations on a daily or monthly cadence.

  • SFTP, email, or Slack delivery
  • Daily or monthly cadence
  • Configurable per partner, per merchant

4. Cross-Channel Visibility

In-store, online, SoftPOS, unattended — every transaction settles through the same reporting layer. One report covers every channel a merchant accepts on.

No more stitching together separate reports from separate processors. The Unified Commerce platform produces unified reports, by definition.

5. Partner Revenue Share Reporting

Combine settlement reports with the Charges API to see exactly what your platform earned per merchant, per period. Markup, monthly fees, usage-based charges, and IC++ margins broken down for every payout.

Audit-ready outputs for your own finance team and for partner statements.

6. Built for Compliance and Audit

Every settlement report has a stable payout ID, a settlement date, a transaction date range, and a direct URL to the source PDF. Reports are immutable once issued — replayable, auditable, defensible.

Designed for the kind of audit trail Nordic and EU regulators expect.

Every report carries the same fields

💵
Total Sale

Gross transaction volume in the settlement period.

Total Refund

All refunds processed in the same window.

💸
Fee

Total processing fees deducted from gross.

💰
Payout

Net amount actually paid out to the merchant.

Daily, monthly, or whatever cadence your business runs on

Reports are configurable per merchant. High-volume retail can run on daily settlements. Lower-volume verticals can opt into monthly. Both formats carry the same fields — no special handling required in your downstream systems.

Stable payout IDs, immutable URLs, predictable shape. The kind of reporting layer your CFO won't have to revisit every quarter.

Start pulling reports

One GET to fetch every settlement for a merchant. One POST to subscribe to scheduled delivery. Pagination, stable IDs, structured fields, and PDF source URLs in every response.

                            // Fetch settlement reports for a merchant
GET /partners/:partnerId/merchants/:merchantId/reports

// Returns structured JSON for every payout
{
  "status": "SUCCESS",
  "data": [{
    "payoutId": "Q6z2e0goIOE4DXD0VYiT",
    "merchantId": "8149bdef0a2300090e",
    "transactionStartDate": "2026-04-29",
    "transactionEndDate": "2026-04-29",
    "settlementDate": "2026-04-30",
    "reportType": "DAILY",
    "totalSale": 10000,
    "totalRefund": 100,
    "fee": 200,
    "payout": 9700,
    "url": "https://reports.surfboardpayments.com/..."
  }]
}