OpenNode Withdrawals API
Initiate Bitcoin withdrawals and payouts
Initiate Bitcoin withdrawals and payouts
openapi: 3.1.0
info:
title: OpenNode Account Withdrawals 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: Withdrawals
description: Initiate Bitcoin withdrawals and payouts
paths:
/v2/withdrawals:
post:
operationId: initiateWithdrawal
summary: Initiate a withdrawal
description: 'Initiates a Bitcoin withdrawal to an on-chain address or pays a Lightning Network invoice. Supports LNURL withdrawals for streamlined Lightning payouts.
'
tags:
- Withdrawals
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WithdrawalRequest'
example:
type: ln
amount: 5000
address: lnbc50u1p3zqvppsp...
callback_url: https://example.com/webhooks/withdrawal
responses:
'200':
description: Withdrawal successfully initiated
content:
application/json:
schema:
$ref: '#/components/schemas/WithdrawalResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
operationId: listWithdrawals
summary: List withdrawals
description: Returns a list of all withdrawals for the authenticated merchant account.
tags:
- Withdrawals
responses:
'200':
description: List of withdrawals
content:
application/json:
schema:
$ref: '#/components/schemas/WithdrawalListResponse'
/v2/withdrawal/{id}:
get:
operationId: getWithdrawal
summary: Get a withdrawal
description: Retrieves the details of an existing withdrawal by its ID.
tags:
- Withdrawals
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Unique withdrawal identifier
responses:
'200':
description: Withdrawal details
content:
application/json:
schema:
$ref: '#/components/schemas/WithdrawalResponse'
'404':
description: Withdrawal not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
WithdrawalResponse:
type: object
properties:
data:
$ref: '#/components/schemas/Withdrawal'
Withdrawal:
type: object
properties:
id:
type: string
description: Unique withdrawal identifier.
type:
type: string
enum:
- chain
- ln
description: Withdrawal type.
amount:
type: integer
description: Withdrawal amount in satoshis.
status:
type: string
enum:
- pending
- processing
- confirmed
- failed
description: Current status of the withdrawal.
address:
type: string
description: Destination address.
fee:
type: integer
description: Network fee in satoshis.
created_at:
type: integer
format: int64
description: Unix timestamp of withdrawal creation.
processed_at:
type: integer
format: int64
description: Unix timestamp when the withdrawal was processed.
WithdrawalListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Withdrawal'
ErrorResponse:
type: object
properties:
message:
type: string
description: Human-readable error message.
example: Invalid API key
code:
type: integer
description: Error code.
example: 401
WithdrawalRequest:
type: object
required:
- type
- amount
- address
properties:
type:
type: string
enum:
- chain
- ln
description: Withdrawal type — `chain` for on-chain Bitcoin, `ln` for Lightning Network.
example: ln
amount:
type: integer
format: int32
description: Withdrawal amount in satoshis.
example: 5000
address:
type: string
description: Destination Bitcoin address (on-chain) or BOLT11 Lightning invoice (ln).
example: lnbc50u1p3zqvpp...
callback_url:
type: string
format: uri
description: Webhook endpoint for withdrawal status notifications.
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).
'