> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meld.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Refund a payment transaction

> This is the endpoint to refund a transaction on any of the supported providers. Full as well as partial refunds are supported, so it is not mandatory to inform the total value of the original transaction in the case of a full refund. Note: While the parameters within the body are optional, you must at least pass in a valid JSON body, e.g. { }.



## OpenAPI

````yaml /openapi/payments-20260203.json post /payments/transactions/{id}/refund
openapi: 3.1.0
info:
  title: PAYMENTS
  termsOfService: urn:tos
  license:
    name: Apache 2.0
    url: https://springdoc.org
  version: '2026-02-03'
  description: ''
servers:
  - url: https://api-sb.meld.io
    description: Meld API sandbox
  - url: https://api.meld.io
    description: Meld API production
security: []
tags:
  - name: Payment
    description: ''
paths:
  /payments/transactions/{id}/refund:
    post:
      tags:
        - Transactions
      summary: Refund a payment transaction
      description: >-
        This is the endpoint to refund a transaction on any of the supported
        providers. Full as well as partial refunds are supported, so it is not
        mandatory to inform the total value of the original transaction in the
        case of a full refund. Note: While the parameters within the body are
        optional, you must at least pass in a valid JSON body, e.g. { }.
      operationId: /payments-transactions-refund
      parameters:
        - name: X-Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            format: uuid
        - name: Meld-Passthrough-Reference
          in: header
          required: false
          schema:
            type: string
        - name: Meld-Passthrough-Key-Id
          in: header
          required: false
          schema:
            type: string
        - name: Meld-Passthrough-Key-Public
          in: header
          required: false
          schema:
            type: string
        - name: Meld-Passthrough-Key-Private
          in: header
          required: false
          schema:
            type: string
        - name: Meld-Passthrough-Oauth
          in: header
          required: false
          schema:
            type: string
        - name: id
          in: path
          description: Unique identifier of the transaction to be refunded
          required: true
          schema:
            type: string
            minLength: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRefundRequest'
            example:
              sourceAmount: 0
        required: true
      responses:
        '200':
          description: Payment successfully refunded
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PaymentTransactionResponse20230401'
        '400':
          description: 'Bad Request : check request values and format'
        '401':
          description: Invalid credentials
        '403':
          description: Unauthenticated or authenticated with insufficient access
        '425':
          description: It is too early for a retry
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    PaymentRefundRequest:
      type: object
      properties:
        description:
          type: string
          description: >-
            An arbitrary string attached to the object. Often useful for
            displaying to users.
        reason:
          type: string
          description: Reason for the refund
        sourceAmount:
          type: number
          description: >-
            Amount to be refunded. Can be a partial refund. If not provided, a
            refund for the total value will be submitted
          minimum: 0
      required:
        - sourceAmount
    PaymentTransactionResponse20230401:
      type: object
      properties:
        transaction:
          description: Payment transaction information
          allOf:
            - $ref: '#/components/schemas/PaymentTransactionOutput20230401'
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
        displayMessage:
          type: string
        errors:
          type: array
          items:
            type: string
        message:
          type: string
        requestId:
          type: string
        serviceProviderDetails:
          type: object
          additionalProperties: {}
        timestamp:
          type: string
          format: date-time
    PaymentTransactionOutput20230401:
      type: object
      properties:
        accountId:
          type: string
          description: Your account Id
        countryCode:
          type: string
          description: The ISO 3166 2-digit country code.
        createdAt:
          type: string
          format: date-time
          description: An ISO 8601 DateTime at which the object was created.
        cryptoDetails:
          description: Details of the crypto currency purchase, sale, or transfer
          allOf:
            - $ref: '#/components/schemas/CryptoDetails'
        customer:
          description: Your customer's details
          allOf:
            - $ref: '#/components/schemas/CustomerOutput'
        description:
          type: string
          description: >-
            An arbitrary string which you can attach to this transaction. It is
            displayed when in the web interface alongside the charge.
        destinationAmount:
          type: number
          description: >-
            The destination amount of the transaction, e.g. the amount of crypto
            currency purchased
        destinationCurrencyCode:
          type: string
          description: Three-letter ISO currency code. Must be a supported currency
        externalCustomerId:
          type: string
          description: >-
            Your unique identifier for your customer. If maintaining your own
            customer management system this can also be used for tracking
            customer activity.
        externalReferenceId:
          type: string
          description: Your optional reference id provided during transaction creation
        externalSessionId:
          type: string
          description: The external Id of the session.
        externalSubaccountCustomerId:
          type: string
          description: >-
            Optional external identifier for the sub-account customer this
            transaction belongs to. Used for tracking when multiple businesses
            operate under one Meld account. A sub-account customer must be
            created first before it can be referenced.
        fiatAmountInUsd:
          type: number
          description: The fiat amount of the transaction in usd
        id:
          type: string
          description: Unique identifier for this transaction
        isImported:
          type: boolean
          description: Return ***True*** if this transaction was initiated outside Meld
        isPassthrough:
          type: boolean
          description: Return ***True*** if the passthrough credentials were used
        key:
          type: string
          description: >-
            Pagination key, may be used with the "after" parameter in search
            requests.  Only set and relevant for paginated calls
        multiFactorAuthorizationStatus:
          type: array
          description: >-
            The transaction required multi-factor authentication methods, and
            their current status. When required, must be approved for the
            purchase tobe completed successfully.
          items:
            $ref: '#/components/schemas/MultiFactorAuthorizationStatusOutput'
          uniqueItems: true
        orderId:
          type: string
          description: >-
            Unique identifier for the order associated with this transaction,
            when applicable
        parentPaymentTransactionId:
          type: string
          description: The Id of the associated object for this line item
        passthroughReference:
          type: string
          description: >-
            The unique reference you use to identify the partner on whose behalf
            you created this transaction.  This might be a String or UUID in
            your system to identify a merchant or partner.  This is needed so
            that you can associate passthrough transactions to your partners who
            may not be registered with Meld
        paymentDetails:
          description: payment details
          allOf:
            - $ref: '#/components/schemas/PaymentDetails'
        paymentMethodType:
          type: string
          description: Payment Method type used for this transaction.
        serviceProvider:
          type: string
          description: The service provider used for this transaction
        serviceProviderCreatedAt:
          type: string
          format: date-time
          description: >-
            The ISO 8601 DateTime when the transaction was created on the
            service provider's side
        serviceProviderDetails:
          type: object
          additionalProperties: {}
          description: The service provider's details
        serviceProviderTransactionUrl:
          type: string
          description: A link to the resource on the Service Provider, may not be present
        serviceTransactionId:
          type: string
          description: The service provider's unique identifier for this transaction
        sessionClientTags:
          type: object
          additionalProperties:
            type: string
          description: A map of client tags
        sessionId:
          type: string
          description: The Id of the session.
        sourceAmount:
          type: number
          description: The amount of the transaction
        sourceCurrencyCode:
          type: string
          description: Three-letter ISO currency code. Must be a supported currency
        status:
          type: string
          description: The current status of the transaction
        subaccountCustomerId:
          type: string
          description: >-
            Optional Meld customer id used to track the business sub-account
            this transaction belongs to when multiple businesses operate under
            one Meld account.
        transactionType:
          type: string
          description: The transaction's type
        updatedAt:
          type: string
          format: date-time
          description: >-
            Time at which the object was last updated. Measured in seconds since
            the Unix epoch.
      required:
        - createdAt
        - id
        - serviceProvider
        - sessionId
        - status
        - transactionType
        - updatedAt
    CryptoDetails:
      type: object
      properties:
        blockchainTransactionId:
          type: string
          description: The transaction id on the blockchain
        chainId:
          type: string
          description: >-
            A unique identifier that represents a blockchain network. The
            chainId of a particular network is standard everywhere.
        institution:
          type: string
          description: >-
            The institution used to execute the transaction. Only applicable for
            transfers currently.
        networkFee:
          type: number
          description: >-
            This fee is paid to cryptocurrency miners, which are the systems
            that process the transactions
        networkFeeInUsd:
          type: number
          description: This network fee in USD
        offrampDestinationWalletAddress:
          type: string
          description: The offramp destination wallet address
        partnerFee:
          type: number
          description: The partner fee amount
        partnerFeeInUsd:
          type: number
          description: The partner fee in USD
        swapFee:
          type: number
          description: >-
            The swap fee amount charged by the swap provider for ramp+swap
            transactions
        swapFeeInUsd:
          type: number
          description: The swap fee in USD
        totalFee:
          type: number
          description: The total amount of fees that will be charged
        totalFeeInUsd:
          type: number
          description: The total fee in USD
        transactionFee:
          type: number
          description: >-
            The fee amount charged by the service provider to process your
            customer's purchase
        transactionFeeInUsd:
          type: number
          description: The transaction fee in USD
        walletAddress:
          type: string
          description: Your customer's crypto wallet
    CustomerOutput:
      type: object
      properties:
        accountId:
          type: string
          description: Your Account Id
        addresses:
          type: array
          description: Your Customer's addresses, such as billing, shipping, etc.
          items:
            $ref: '#/components/schemas/CustomerAddressOutput'
        email:
          type: string
          description: Your Customer's email address
        externalId:
          type: string
          description: >-
            Your optionally supplied Id for your Customer, e.g. a Customer Id in
            your system
        id:
          type: string
          description: Meld's internal Id for the Customer
        name:
          description: Your Customer's name
          allOf:
            - $ref: '#/components/schemas/CustomerName'
        phone:
          type: string
          description: Your Customer's phone number
        serviceProviders:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of Service Providers and service provider IDs for this
            Customer
        status:
          type: string
          description: ACTIVE or INACTIVE, may not be set
    MultiFactorAuthorizationStatusOutput:
      type: object
      properties:
        method:
          type: string
          description: How the card details were authorized
          enum:
            - SMS
            - CARD
            - EMAIL
            - THREE_DS
        submitted:
          type: boolean
          description: Return ***True*** if the information was submitted
        successful:
          type: boolean
          description: Return ***True*** if the submitted information is a match
        url:
          type: string
          description: URL used to perform authorization (if applicable)
    PaymentDetails:
      type: object
      properties:
        authAmount:
          type: number
          description: >-
            The amount authorized to be charged (must be greater than the amount
            intended to be collected.) Note that the number of digits with a
            decimal point varies with the currency. Reference the list of active
            codes of official ISO 4217 currency names.
        captureAmount:
          type: number
          description: >-
            The amount captured (can be less than the amount intended to be
            collected.) Note that the number of digits with a decimal point
            varies with the currency. Reference the list of active codes of
            official ISO 4217 currency names.
    CustomerAddressOutput:
      type: object
      properties:
        addressDetails:
          description: Address details
          allOf:
            - $ref: '#/components/schemas/CustomerAddressDetails'
        type:
          type: string
          description: Address type such as BILLING, SHIPPING, RESIDENCE, etc.
          enum:
            - BILLING
            - SHIPPING
            - RESIDENCE
    CustomerName:
      type: object
      properties:
        firstName:
          type: string
          description: Your customer's first name
        lastName:
          type: string
          description: Your customer's last name
    CustomerAddressDetails:
      type: object
      properties:
        addressDetailsFields:
          type: object
          writeOnly: true
        city:
          type: string
          description: City, district, suburb, town, or village
        country:
          type: string
          description: Two-letter country code (ISO 3166-1 alpha-2)
        firstName:
          type: string
          description: The first name on the address
        lastName:
          type: string
          description: The last name on the address
        lineOne:
          type: string
          description: Address line 1 (e.g., street, PO Box, or company name)
        lineTwo:
          type: string
          description: Address line 2 (e.g., apartment, suite, unit, or building)
        postalCode:
          type: string
          description: ZIP or postal code
        region:
          type: string
          description: State, county, province, or region
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      x-default: BASIC <Meld API Key>

````