Developers Guides Settlements & Reporting

Settlements & Reporting

Retrieve settlement reports, view adjustments, manage merchant charges, and register customer profiles for reconciliation and billing.

Online API Settlements Reporting Charges Adjustments

Overview

Once transactions are processed, you need visibility into what was settled, what fees were applied, and how to bill merchants for additional services. The Settlements and Reporting APIs give you that visibility.

This guide covers four related capabilities:

  1. Settlement reports — retrieve payout summaries for a merchant over a given period.
  2. Adjustments — view tips, surcharges, insurance, and other amounts applied to orders.
  3. Merchant charges — create, update, and list one-time or recurring charges billed to a merchant.
  4. Customer details — register customer profiles with addresses, contact information, and linked payment cards.

Prerequisites

  • A valid partnerId and merchantId
  • API credentials (API key, API secret)

Settlement Reports

Settlement reports summarize a merchant’s settled transactions for a selected time period. Reports can be configured as DAILY or MONTHLY depending on the merchant’s setup.

Fetch settlement reports

GET /partners/:partnerId/merchants/:merchantId/reports

Response:

{
  "status": "SUCCESS",
  "data": [
    {
      "payoutId": "po_83a1f...",
      "merchantId": "m_91b2c...",
      "transactionStartDate": "2026-01-01",
      "transactionEndDate": "2026-01-31",
      "settlementDate": "2026-02-03",
      "reportType": "MONTHLY",
      "url": "https://reports.surfboardpayments.com/settlements/po_83a1f...",
      "totalSale": 1250000,
      "totalRefund": 35000,
      "fee": 18750,
      "payout": 1196250
    }
  ],
  "message": "Settlement reports fetched successfully"
}

Response fields

FieldTypeDescription
payoutIdstringIdentifies this specific payout
transactionStartDatestringFirst transaction date covered (YYYY-MM-DD)
transactionEndDatestringLast transaction date covered (YYYY-MM-DD)
settlementDatestringDate the payout was issued (YYYY-MM-DD)
reportTypestringMONTHLY or DAILY
urlstringDirect link to view the full report
totalSalenumberTotal sales amount in smallest currency unit
totalRefundnumberTotal refunded amount
feenumberTotal fees deducted
payoutnumberNet payout to the merchant

Use the url field to download or redirect merchants to a detailed breakdown of every transaction in the settlement period.

Adjustments

Adjustments represent additional amounts applied to orders during a transaction — tips, surcharges, insurance payments, and similar line items. The Adjustments API lets you retrieve all adjustments at the merchant level for tracking and reconciliation.

Fetch adjustments

GET /partners/:partnerId/merchants/:merchantId/adjustments?startDate=2026-01-01&endDate=2026-01-31

Both startDate and endDate are required query parameters in YYYY-MM-DD format.

Response:

{
  "status": "SUCCESS",
  "data": [
    {
      "adjustmentId": "adj_44c2e...",
      "adjustmentType": "TIP",
      "amount": "2500"
    },
    {
      "adjustmentId": "adj_55d3f...",
      "adjustmentType": "SURCHARGE",
      "amount": "1500"
    }
  ],
  "message": "Adjustments fetched successfully"
}

Response fields

FieldTypeDescription
adjustmentIdstringUnique identifier for the adjustment
adjustmentTypestringType of adjustment (e.g. TIP, SURCHARGE, INSURANCE)
amountstringAdjustment amount in smallest currency unit

Merchant Charges

Merchant charges let partners bill merchants for services, fees, or subscriptions. A charge can be one-time or recurring, and supports VAT.

Create a charge

POST /partners/:partnerId/merchants/:merchantId/charges
{
  "description": "Monthly platform fee",
  "currency": "752",
  "amount": 5000000,
  "vat": 35,
  "billingDate": "2026-03-01",
  "recurring": {
    "frequency": "monthly",
    "billingEndDate": "2027-03-01"
  }
}

Response:

{
  "status": "SUCCESS",
  "data": {
    "chargeId": "chg_72a4d..."
  },
  "message": "Charge created successfully"
}

Create charge request fields

FieldTypeRequiredDescription
descriptionstringYesBrief description of the charge
currencystringYesThree-digit ISO currency code
amountnumberYesCharge amount in smallest currency unit
vatnumberNoVAT amount
billingDatestringNoEffective date (YYYY-MM-DD)
recurring.frequencystringNoBilling frequency (see table below)
recurring.billingEndDatestringNoWhen to stop recurring charges (YYYY-MM-DD)

Frequency options

ValueCycle
dailyEvery day
twiceWeeklyTwice per week
weeklyEvery week
tenDaysEvery 10 days
fortNightlyEvery 2 weeks
monthlyEvery month
everyTwoMonthsEvery 2 months
trimesterEvery 4 months
quarterlyEvery 3 months
twiceYearlyEvery 6 months
annuallyEvery year
unscheduledNo fixed schedule

Fetch a charge by ID

GET /partners/:partnerId/merchants/:merchantId/charges/:chargeId

The response includes subscription details, VAT, frequency, billing dates, and any associated subCharges. Sub-charges are individual billing instances generated from a recurring charge.

Key response fields:

FieldTypeDescription
isSubscriptionChargebooleanWhether this is a recurring charge
descriptionstringCharge description
amountnumberCharge amount in smallest currency unit
vatnumberVAT applied
frequencystringBilling frequency
billingStartDatestringStart date (ISO 8601)
billingEndDatestringEnd date (ISO 8601)
subChargesarrayIndividual billing instances with their own chargeId, amount, status, and billingDate

Update a charge

Modify an existing charge’s amount, VAT, or recurring configuration:

PUT /partners/:partnerId/merchants/:merchantId/charges/:chargeId
{
  "amount": 650000,
  "vat": 15,
  "recurring": {
    "updateType": "onlyNext",
    "billingEndDate": "2027-10-23"
  }
}

The recurring.updateType field controls the scope of the update:

ValueBehaviour
onlyNextApply the change only to the next billing cycle
allFutureApply the change to all future billing cycles

List all merchant charges

GET /partners/:partnerId/merchants/:merchantId/charges

Returns a paginated list of all charges (one-time and recurring) for the merchant, including chargeId, description, amount, vat, status, billingDate, and whether the charge is subscription-based.

Customer Details

The Customer API lets you create and retrieve customer profiles. Profiles store personal information, addresses, contact details, and linked payment cards, enabling richer order data and streamlined checkout experiences.

Create a customer

POST /customers
{
  "firstName": "John",
  "middleName": "Doe",
  "birthDate": "1990/03/04",
  "countryCode": "SE",
  "address": [
    {
      "addressLine1": "Storgatan 12",
      "city": "Stockholm",
      "countryCode": "SE",
      "postalCode": "111 23",
      "role": "shipping"
    }
  ],
  "phoneNumbers": [
    {
      "phoneNumber": {
        "code": "46",
        "number": "701234567"
      },
      "role": "own"
    }
  ],
  "emails": [
    {
      "email": "john.doe@example.com",
      "role": "personal"
    }
  ],
  "cardIds": [
    "824c514bfe001805f0"
  ]
}

Response:

{
  "status": "SUCCESS",
  "data": {
    "customerId": "cust_61e3b..."
  },
  "message": "Customer created successfully"
}

Customer fields

FieldTypeRequiredDescription
firstNamestringNoCustomer’s first name
lastNamestringNoCustomer’s last name
birthDatestringNoDate of birth (YYYY/MM/DD)
countryCodestringNoTwo-letter ISO country code
addressarrayNoArray of address objects (shipping, billing, etc.)
address.addressLine1stringYesPrimary address line
address.citystringYesCity
address.countryCodestringYesTwo-letter ISO country code
address.postalCodestringYesPostal code
address.rolestringNoAddress purpose (shipping, billing)
emailsarrayNoArray of email objects with email and role
phoneNumbersarrayNoArray of phone objects with nested phoneNumber (code, number) and role
cardIdsarrayNoPayment card identifiers to associate with the customer

Fetch a customer

GET /customers/:customerId

Returns the full customer profile including all addresses, emails, phone numbers, and linked card IDs.

API Quick Reference

OperationMethodEndpoint
Fetch settlement reportsGET/partners/:partnerId/merchants/:merchantId/reports
Fetch adjustmentsGET/partners/:partnerId/merchants/:merchantId/adjustments
Create merchant chargePOST/partners/:partnerId/merchants/:merchantId/charges
Fetch charge by IDGET/partners/:partnerId/merchants/:merchantId/charges/:chargeId
Update merchant chargePUT/partners/:partnerId/merchants/:merchantId/charges/:chargeId
List all merchant chargesGET/partners/:partnerId/merchants/:merchantId/charges
Create customerPOST/customers
Fetch customer by IDGET/customers/:customerId

Other Guides

in-store

Tap to Pay on iPhone SDK

Accept contactless payments directly on iPhone. Complete integration guide for Surfboard's iOS SoftPOS SDK -- from setup to production.

in-store

Android SoftPOS SDK

Turn Android devices into payment terminals with the Surfboard Android SoftPOS SDK. Complete integration guide from setup to production.

in-store

EMV Terminal Integration

Integrate traditional card-present terminals through Surfboard's unified API. From account setup to live payments in one guide.

online

Payment Page

Redirect customers to a Surfboard-hosted checkout page. The fastest way to accept online payments with minimal integration effort.

in-store

Inter-App Integration

Integrate your POS app with CheckoutX using native app switch. Register terminals, process payments, and scan NFC tags through a bi-directional deep link flow.

online

Self-Hosted Checkout

Embed a payment form directly in your web app with the Surfboard Online SDK. Full UI control with Surfboard handling PCI compliance.

online

Server-to-Server API

Process online payments entirely from your backend with Merchant Initiated Transactions. Full control over recurring payments, subscriptions, and tokenized card flows.

online

Create an Order

Learn how to create orders with line items, tax, customer details, and control functions. The starting point for accepting payments with the Surfboard API.

online

Merchant Onboarding

Set up merchants and stores on the Surfboard platform. Walk through the full onboarding flow from merchant creation to KYB completion and store setup.

online

Payment Lifecycle

Manage the full payment lifecycle from order creation through capture, void, cancel, and refund operations using the Surfboard Payments API.

online

Capture a Payment

Finalize a previously authorized payment by capturing funds. Covers delay capture and pre-authorization flows with step-by-step API examples.

in-store

Terminal & Device Management

Manage payment terminals and devices via the Surfboard API. Register in-store and online terminals, configure settings, and handle device operations.

online

Cancel a Payment

Stop an in-progress payment before it completes. Use cancellation when a customer abandons checkout or a payment needs to be halted mid-process.

online

Webhooks & Notifications

Receive real-time event notifications via webhooks, email, Slack, and SFTP. Subscribe to payment events and settlement reports for merchants and partners.

online

Recurring Payments

Implement subscription billing and recurring charges using tokenization, recurring payment configuration, and Merchant Initiated Transactions.

online

Void a Payment

Reverse a completed payment before settlement. Voiding stops funds from transferring to the merchant's account, avoiding incorrect transactions.

in-store

Receipts

Generate, email, print, and customise receipts for in-store transactions using the Surfboard Receipts API.

online

Refund an Order

Process a full refund by creating a return order with negative quantities. Covers the complete refund flow with API examples and payment method requirements.

online

Partial Refund

Refund specific items or a reduced amount from a completed order. Process partial returns by creating a return order with only the items to be refunded.

in-store

Tips Configuration

Configure tipping on Surfboard payment terminals at the merchant, store, or terminal level using a hierarchical override model.

in-store

NFC Tag Reading

Use the NFC Reading API to create tag-reading sessions on payment terminals, scan NFC/RFID-tagged products, and retrieve scanned tag data.

online

Partial Payments

Split an order across multiple payment methods or transactions. Accept card, cash, and Swish in any combination to settle a single order.

in-store

Multi-Merchant Terminals

Set up shared payment terminals for multiple merchants using the Multi-Merchant Group API. Ideal for food courts, events, and co-located businesses.

online

Store Management

Create, update, verify, and manage in-store and online stores using the Surfboard Payments Store APIs.

online

Gift Cards & Promotions

Issue and manage gift cards, track transactions, and create marketing promotions using the Surfboard Payments APIs.

online

Product Catalog

Create and manage product catalogs, products, variants, inventory levels, and analytics through the Catalog API.

online

Account & Service Provider Management

Create merchant and partner accounts, manage user roles, register service providers, and configure external notifications via the Surfboard API.

online

Payment Methods

Activate, deactivate, and list payment methods for a merchant. Manage card, Swish, Klarna, AMEX, Vipps, MobilePay, and more via the API or Partner Portal.

online

Client Auth Tokens

Generate client-side authentication tokens for secure API access from browsers and mobile apps without exposing your API key or secret.

online

Partner Branding

Configure white-label branding for terminals and payment pages. Set colors, fonts, logos, and cover images at the partner level via API or Partner Portal.

Ready to get started?

Create a sandbox account and start building your integration today.