Module: NOWPayments::API::Invoices

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

Overview

Invoice-related endpoints

Instance Method Summary collapse

Instance Method Details

#create_invoice(price_amount:, price_currency:, pay_currency: nil, order_id: nil, order_description: nil, ipn_callback_url: nil, success_url: nil, cancel_url: nil) ⇒ Hash

Create an invoice (hosted payment page) POST /v1/invoice

Parameters:

  • price_amount (Numeric)

    Fiat amount

  • price_currency (String)

    Fiat currency

  • pay_currency (String, nil) (defaults to: nil)

    Optional crypto (if nil, customer chooses)

  • order_id (String, nil) (defaults to: nil)

    Optional merchant order ID

  • order_description (String, nil) (defaults to: nil)

    Optional description

  • ipn_callback_url (String, nil) (defaults to: nil)

    Optional webhook URL

  • success_url (String, nil) (defaults to: nil)

    Optional redirect after success

  • cancel_url (String, nil) (defaults to: nil)

    Optional redirect after cancel

Returns:

  • (Hash)

    Invoice with invoice_url



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/nowpayments/api/invoices.rb', line 18

def create_invoice(
  price_amount:,
  price_currency:,
  pay_currency: nil,
  order_id: nil,
  order_description: nil,
  ipn_callback_url: nil,
  success_url: nil,
  cancel_url: nil
)
  params = {
    price_amount: price_amount,
    price_currency: price_currency
  }

  params[:pay_currency] = pay_currency if pay_currency
  params[:order_id] = order_id if order_id
  params[:order_description] = order_description if order_description
  params[:ipn_callback_url] = ipn_callback_url if ipn_callback_url
  params[:success_url] = success_url if success_url
  params[:cancel_url] = cancel_url if cancel_url

  post("invoice", body: params).body
end

#create_invoice_payment(iid:, pay_currency:, purchase_id: nil, order_description: nil, customer_email: nil, payout_address: nil, payout_extra_id: nil, payout_currency: nil) ⇒ Hash

Create payment by invoice POST /v1/invoice-payment

Parameters:

  • iid (Integer, String)

    Invoice ID

  • pay_currency (String)

    Crypto currency

  • purchase_id (String, Integer, nil) (defaults to: nil)

    Optional purchase ID

  • order_description (String, nil) (defaults to: nil)

    Optional description

  • customer_email (String, nil) (defaults to: nil)

    Optional customer email

  • payout_address (String, nil) (defaults to: nil)

    Optional custom payout address

  • payout_extra_id (String, nil) (defaults to: nil)

    Optional extra ID for payout

  • payout_currency (String, nil) (defaults to: nil)

    Required if payout_address set

Returns:

  • (Hash)

    Payment details



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/nowpayments/api/invoices.rb', line 54

def create_invoice_payment(
  iid:,
  pay_currency:,
  purchase_id: nil,
  order_description: nil,
  customer_email: nil,
  payout_address: nil,
  payout_extra_id: nil,
  payout_currency: nil
)
  params = {
    iid: iid,
    pay_currency: pay_currency
  }

  params[:purchase_id] = purchase_id if purchase_id
  params[:order_description] = order_description if order_description
  params[:customer_email] = customer_email if customer_email
  params[:payout_address] = payout_address if payout_address
  params[:payout_extra_id] = payout_extra_id if payout_extra_id
  params[:payout_currency] = payout_currency if payout_currency

  post("invoice-payment", body: params).body
end

#invoice(invoice_id) ⇒ Hash

Get invoice details and status GET /v1/invoice/:invoice_id

Parameters:

  • invoice_id (String, Integer)

    Invoice ID

Returns:

  • (Hash)

    Invoice details with payment status



83
84
85
# File 'lib/nowpayments/api/invoices.rb', line 83

def invoice(invoice_id)
  get("invoice/#{invoice_id}").body
end