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

Ready to get started?

Create a sandbox account and start building your integration today.