Moov Refunds API

Create and retrieve refunds for completed card transfers, including full and partial refund support.

OpenAPI Specification

moov-refunds-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Moov Accounts Refunds API
  description: The Moov API is a RESTful financial infrastructure platform that enables developers to integrate money movement capabilities into their applications. The API supports a full range of financial operations including account management, payment method onboarding, transfers, sweeps, refunds, dispute resolution, card issuing, and payment links. It provides capabilities for accepting payments, storing funds in digital wallets, sending money between accounts, and issuing cards for spend management. Authentication uses OAuth2 access tokens with permission scopes, and the API returns JSON responses using standard HTTP response codes.
  version: 2026.01.00
  contact:
    name: Moov Support
    url: https://docs.moov.io/
  termsOfService: https://moov.io/legal/platform-agreement/
servers:
- url: https://api.moov.io
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Refunds
  description: Create and retrieve refunds for completed card transfers, including full and partial refund support.
paths:
  /accounts/{accountID}/transfers/{transferID}/refunds:
    post:
      operationId: createRefund
      summary: Create a refund
      description: Initiate a refund for a completed card transfer. Supports full and partial refunds. The refunded amount will be returned to the original payment method.
      tags:
      - Refunds
      parameters:
      - $ref: '#/components/parameters/AccountIDParam'
      - $ref: '#/components/parameters/TransferIDParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRefundRequest'
      responses:
        '200':
          description: Refund created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      operationId: listRefunds
      summary: List refunds
      description: Retrieve all refunds associated with a specific transfer.
      tags:
      - Refunds
      parameters:
      - $ref: '#/components/parameters/AccountIDParam'
      - $ref: '#/components/parameters/TransferIDParam'
      responses:
        '200':
          description: Refunds returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Refund'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /accounts/{accountID}/transfers/{transferID}/refunds/{refundID}:
    get:
      operationId: getRefund
      summary: Retrieve a refund
      description: Fetch the details and current status of a specific refund on a transfer.
      tags:
      - Refunds
      parameters:
      - $ref: '#/components/parameters/AccountIDParam'
      - $ref: '#/components/parameters/TransferIDParam'
      - $ref: '#/components/parameters/RefundIDParam'
      responses:
        '200':
          description: Refund details returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    CreateRefundRequest:
      type: object
      description: Request body for creating a refund on a card transfer.
      required:
      - amount
      properties:
        amount:
          type: integer
          description: Amount to refund in the smallest currency unit (e.g., cents). Must not exceed the original transfer amount.
          minimum: 1
    Error:
      type: object
      description: Standard error response returned by the Moov API.
      properties:
        error:
          type: string
          description: Human-readable description of the error.
        code:
          type: string
          description: Machine-readable error code.
    Refund:
      type: object
      description: A refund issued against a completed card transfer.
      properties:
        refundID:
          type: string
          format: uuid
          description: Unique identifier for the refund.
        status:
          type: string
          description: Current status of the refund.
          enum:
          - created
          - pending
          - completed
          - failed
        amount:
          $ref: '#/components/schemas/Amount'
        createdOn:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the refund was created.
        updatedOn:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the refund was last updated.
    Amount:
      type: object
      description: A monetary amount with currency denomination.
      properties:
        currency:
          type: string
          description: ISO 4217 three-letter currency code.
          default: USD
          minLength: 3
          maxLength: 3
        value:
          type: integer
          description: Amount in the smallest currency unit (e.g., cents for USD).
          minimum: 0
  parameters:
    AccountIDParam:
      name: accountID
      in: path
      required: true
      description: Unique identifier for the Moov account.
      schema:
        type: string
        format: uuid
    RefundIDParam:
      name: refundID
      in: path
      required: true
      description: Unique identifier for the refund.
      schema:
        type: string
        format: uuid
    TransferIDParam:
      name: transferID
      in: path
      required: true
      description: Unique identifier for the transfer.
      schema:
        type: string
        format: uuid
  responses:
    Unauthorized:
      description: Authentication failed. Ensure a valid Bearer token is provided with the required scopes for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was malformed or contained invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth2 bearer token obtained from the /oauth2/token endpoint. Include in the Authorization header as "Bearer {token}".
externalDocs:
  description: Moov API Documentation
  url: https://docs.moov.io/api/