---
title: "POST /refunds"
method: POST
path: "/refunds"
tags: ["Refunds"]
---

# POST /refunds

`POST /refunds`

## Request

- Base URL: `https://api.railz.ai`
- URL: `https://api.railz.ai/refunds`
- Auth: HTTP bearer

Posts an individual refund for a business.

## Request body

- PushRefundDto
  - `connection` PushRefundConnection, required
    - `businessName` string, required: Unique business name identifier.
    - `serviceName` 'xero' | 'quickbooks', required: Name of accounting platform service.
  - `data` PushRefundData, required
    - `passThrough` object
    - `currencyRate` number
    - `totalAmount` number, float, required
    - `memo` string
    - `customerRef` string, required
    - `accountRef` string, required
    - `date` string, date, required
    - `invoiceRef` string
    - `currency` string
    - `lines` PushRefundLine[]
      - `inventoryRef` string
      - `taxRef` string
      - `totalAmount` number, float

## Response `200`

- PushRefundResponseDto
  - `pushCommunicationId` string, required
  - `requestedOn` string, date-time, required
  - `status` 'success' | 'failed' | 'pending', required
  - `businessName` string, required
  - `serviceName` 'xero' | 'quickbooks' | 'freshbooks', required
  - `data` PushRefundData, required
    - `passThrough` object
    - `currencyRate` number
    - `totalAmount` number, float, required
    - `memo` string
    - `customerRef` string, required
    - `accountRef` string, required
    - `date` string, date, required
    - `invoiceRef` string
    - `currency` string
    - `lines` PushRefundLine[]
      - `inventoryRef` string
      - `taxRef` string
      - `totalAmount` number, float

## Other responses

- `400`: Bad Request Error - Thrown if fields sent via query does not follow specifications
- `401`: Unauthorized - Not logged in or log in expired
- `403`: Forbidden - Not enough permission
- `500`: Server Error

## Changes

- **2026-08-10** `5cdfae3fa1fa`: 1 breaking, 3 info
  - the `businessName` response's property format changed from `uuid` to no format for status `200`
  - added the new optional request property `data/passThrough`
  - the `connection/businessName` request property format was generalized from `uuid` to no format
  - added the optional property `data/allOf[#/components/schemas/PushRefundData]/passThrough` to the response with the `200` status

[Operation history](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/changes/refunds/post.md)

---

[API](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api.md) - [All operations](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/railz/apis/fis-accounting-data-as-a-service-api/revisions/1383b9a47ac9?raw)
