Module: NOWPayments::API::Custody

Included in:
Client
Defined in:
lib/nowpayments/api/custody.rb

Overview

Custody/sub-partner endpoints for managing customer accounts

Instance Method Summary collapse

Instance Method Details

#create_sub_account(user_id:) ⇒ Hash

Create a new sub-account (user account) POST /v1/sub-partner/balance

Parameters:

  • user_id (String)

    Unique user identifier (your internal user ID)

Returns:

  • (Hash)

    Created sub-account details



11
12
13
# File 'lib/nowpayments/api/custody.rb', line 11

def (user_id:)
  post("sub-partner/balance", body: { Name: user_id }).body
end

#create_sub_account_deposit(user_id:, currency:, amount: nil) ⇒ Hash

Create deposit request for sub-account (external crypto deposit) POST /v1/sub-partner/deposit

Parameters:

  • user_id (String)

    User identifier

  • currency (String)

    Cryptocurrency code

  • amount (Numeric, nil) (defaults to: nil)

    Optional amount

Returns:

  • (Hash)

    Deposit address and details



66
67
68
69
70
71
72
73
74
# File 'lib/nowpayments/api/custody.rb', line 66

def (user_id:, currency:, amount: nil)
  params = {
    Name: user_id,
    currency: currency
  }
  params[:amount] = amount if amount

  post("sub-partner/deposit", body: params).body
end

#create_sub_account_payment_deposit(sub_partner_id:, currency:, amount:, fixed_rate: nil) ⇒ Hash

Create payment deposit for sub-account POST /v1/sub-partner/payment

Parameters:

  • sub_partner_id (String, Integer)

    Sub-account ID

  • currency (String)

    Currency code

  • amount (Numeric)

    Payment amount

  • fixed_rate (Boolean, nil) (defaults to: nil)

    Fixed rate flag

Returns:

  • (Hash)

    Payment deposit details



83
84
85
86
87
88
89
90
91
92
# File 'lib/nowpayments/api/custody.rb', line 83

def (sub_partner_id:, currency:, amount:, fixed_rate: nil)
  params = {
    sub_partner_id: sub_partner_id,
    currency: currency,
    amount: amount
  }
  params[:fixed_rate] = fixed_rate unless fixed_rate.nil?

  post("sub-partner/payment", body: params).body
end

#list_sub_accounts(id: nil, limit: 10, offset: 0, order: "ASC") ⇒ Hash

List sub-accounts with filters GET /v1/sub-partner

Parameters:

  • id (String, Integer, Array, nil) (defaults to: nil)

    Filter by specific user ID(s)

  • limit (Integer) (defaults to: 10)

    Results per page

  • offset (Integer) (defaults to: 0)

    Offset for pagination

  • order (String) (defaults to: "ASC")

    Sort order (ASC or DESC)

Returns:

  • (Hash)

    List of sub-accounts



37
38
39
40
41
42
# File 'lib/nowpayments/api/custody.rb', line 37

def list_sub_accounts(id: nil, limit: 10, offset: 0, order: "ASC")
  params = { limit: limit, offset: offset, order: order }
  params[:id] = id if id

  get("sub-partner", params: params).body
end

#sub_account_balance(user_id) ⇒ Hash

Get balance for a specific sub-account GET /v1/sub-partner/balance/:user_id

Parameters:

  • user_id (String)

    User identifier (path parameter)

Returns:

  • (Hash)

    User balance details



19
20
21
# File 'lib/nowpayments/api/custody.rb', line 19

def (user_id)
  get("sub-partner/balance/#{user_id}").body
end

#sub_account_balancesHash

Get balance for all sub-accounts GET /v1/sub-partner/balance

Returns:

  • (Hash)

    Array of all user balances



26
27
28
# File 'lib/nowpayments/api/custody.rb', line 26

def 
  get("sub-partner/balance").body
end

#sub_account_transfer(transfer_id) ⇒ Hash

Get details of a specific transfer GET /v1/sub-partner/transfer

Parameters:

  • transfer_id (String, Integer)

    Transfer ID

Returns:

  • (Hash)

    Transfer details



126
127
128
# File 'lib/nowpayments/api/custody.rb', line 126

def (transfer_id)
  get("sub-partner/transfer", params: { id: transfer_id }).body
end

#sub_account_transfers(id: nil, status: nil, limit: 10, offset: 0, order: "ASC") ⇒ Hash

Get list of all transfers GET /v1/sub-partner/transfers

Parameters:

  • id (String, Integer, Array, nil) (defaults to: nil)

    Filter by specific transfer ID(s)

  • status (String, Array, nil) (defaults to: nil)

    Filter by status (CREATED, WAITING, FINISHED, REJECTED)

  • limit (Integer) (defaults to: 10)

    Results per page

  • offset (Integer) (defaults to: 0)

    Offset for pagination

  • order (String) (defaults to: "ASC")

    Sort order (ASC or DESC)

Returns:

  • (Hash)

    List of transfers



138
139
140
141
142
143
144
# File 'lib/nowpayments/api/custody.rb', line 138

def (id: nil, status: nil, limit: 10, offset: 0, order: "ASC")
  params = { limit: limit, offset: offset, order: order }
  params[:id] = id if id
  params[:status] = status if status

  get("sub-partner/transfers", params: params).body
end

#transfer_between_sub_accounts(currency:, amount:, from_id:, to_id:) ⇒ Hash

Transfer between sub-accounts POST /v1/sub-partner/transfer

Parameters:

  • currency (String)

    Currency code

  • amount (Numeric)

    Amount to transfer

  • from_id (String, Integer)

    Source sub-account ID

  • to_id (String, Integer)

    Destination sub-account ID

Returns:

  • (Hash)

    Transfer result



51
52
53
54
55
56
57
58
# File 'lib/nowpayments/api/custody.rb', line 51

def transfer_between_sub_accounts(currency:, amount:, from_id:, to_id:)
  post("sub-partner/transfer", body: {
         currency: currency,
         amount: amount,
         from_id: from_id,
         to_id: to_id
       }).body
end

#transfer_to_sub_account(user_id:, currency:, amount:) ⇒ Hash

Transfer funds from master account to sub-account POST /v1/sub-partner/deposit-from-master

Parameters:

  • user_id (String)

    User identifier

  • currency (String)

    Cryptocurrency code

  • amount (Numeric)

    Amount to transfer

Returns:

  • (Hash)

    Transfer result



100
101
102
103
104
105
106
# File 'lib/nowpayments/api/custody.rb', line 100

def (user_id:, currency:, amount:)
  post("sub-partner/deposit-from-master", body: {
         Name: user_id,
         currency: currency,
         amount: amount
       }).body
end

#withdraw_from_sub_account(user_id:, currency:, amount:) ⇒ Hash

Write-off (withdraw) funds from sub-account to master account POST /v1/sub-partner/write-off

Parameters:

  • user_id (String)

    User identifier

  • currency (String)

    Cryptocurrency code

  • amount (Numeric)

    Amount to withdraw

Returns:

  • (Hash)

    Write-off result



114
115
116
117
118
119
120
# File 'lib/nowpayments/api/custody.rb', line 114

def (user_id:, currency:, amount:)
  post("sub-partner/write-off", body: {
         Name: user_id,
         currency: currency,
         amount: amount
       }).body
end