OpenNode Refunds API

Create and manage payment refunds

OpenAPI Specification

opennode-refunds-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: OpenNode Account Refunds API
  description: 'OpenNode is a Bitcoin and Lightning Network payment processor providing a REST API for businesses and developers to accept Bitcoin payments, create payment charges, manage Lightning Network invoices, process on-chain transactions, handle webhooks for real-time payment notifications, initiate Bitcoin withdrawals and payouts, and access payment analytics. The platform supports automatic currency conversion at the time of payment, allowing merchants to settle in local currency or Bitcoin.

    '
  version: 1.0.0
  termsOfService: https://opennode.com/terms/
  contact:
    name: OpenNode Support
    url: https://opennode.com/
  license:
    name: Proprietary
servers:
- url: https://api.opennode.com
  description: Production server
- url: https://app.dev.opennode.com
  description: Development/sandbox server
security:
- ApiKeyAuth: []
tags:
- name: Refunds
  description: Create and manage payment refunds
paths:
  /v1/refunds:
    post:
      operationId: createRefund
      summary: Create a refund
      description: 'Issues a full or partial refund for a charge back to the original payer''s Bitcoin or Lightning address.

        '
      tags:
      - Refunds
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequest'
            example:
              checkout_id: ch_abc123
              amount: 10000
              address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
              email: customer@example.com
      responses:
        '200':
          description: Refund successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    get:
      operationId: listRefunds
      summary: List refunds
      description: Returns a list of all refunds for the authenticated merchant account.
      tags:
      - Refunds
      responses:
        '200':
          description: List of refunds
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundListResponse'
  /v1/refund/{id}:
    get:
      operationId: getRefund
      summary: Get a refund
      description: Retrieves the details of a specific refund by its ID.
      tags:
      - Refunds
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Unique refund identifier
      responses:
        '200':
          description: Refund details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundResponse'
        '404':
          description: Refund not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    RefundListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Refund'
    RefundResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Refund'
    Refund:
      type: object
      properties:
        id:
          type: string
          description: Unique refund identifier.
        checkout_id:
          type: string
          description: ID of the original charge.
        amount:
          type: integer
          description: Refund amount in satoshis.
        status:
          type: string
          enum:
          - pending
          - processing
          - confirmed
          - failed
          description: Current status of the refund.
        address:
          type: string
          description: Destination Bitcoin address for the refund.
        email:
          type: string
          format: email
          description: Customer email for the refund.
        created_at:
          type: integer
          format: int64
          description: Unix timestamp of refund creation.
    RefundRequest:
      type: object
      required:
      - checkout_id
      - address
      - email
      properties:
        checkout_id:
          type: string
          description: ID of the original charge to refund.
          example: ch_abc123
        amount:
          type: integer
          format: int32
          description: Refund amount in satoshis. If omitted, the full charge amount is refunded.
          example: 10000
        address:
          type: string
          description: Bitcoin or Lightning address to send the refund to.
          example: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
        email:
          type: string
          format: email
          description: Email address of the customer receiving the refund.
          example: customer@example.com
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
          example: Invalid API key
        code:
          type: integer
          description: Error code.
          example: 401
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key obtained from the OpenNode dashboard. Pass the key directly in the Authorization header (no "Bearer" prefix required).

        '