Find an API

Search public APIs with auth details & Postman guides

← All APIs

NOWPayments API

nowpayments · Finance

Finance No Auth Free & Open financial

NOWPayments is a non-custodial cryptocurrency payment processing platform. Accept payments in a wide range of cryptos and get them instantly converted into a coin of your choice and sent to your wallet. Keeping it simple – no excess. # Sandbox Before production usage, you can test our API using the Sandbox. Details can be found [here](https://documenter.getpostman.com/view/7907941/T1LSCRHC) # Authentication To use the NOWPayments API you should do the following: * Sign up at [nowpayments.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get estimated price

This is a method for calculating the approximate price in cryptocurrency for a given value in Fiat currency. You will need to provide the initial cost in the Fiat currency (amount, currency_from) and the necessary cryptocurrency (currency_to) Currently following fiat currencies are available: usd, e

https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate?amount=3999.5000&currency_to=btc&currency_from=usd

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate?amount=3999.5000&currency_to=btc&currency_from=usd"
import requests
params = {
    "amount": "3999.5000",
    "currency_to": "btc",
    "currency_from": "usd"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate');
url.searchParams.set('amount', '3999.5000');
url.searchParams.set('currency_to', 'btc');
url.searchParams.set('currency_from', 'usd');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate")
	q := baseURL.Query()
	q.Set("amount", "3999.5000")
	q.Set("currency_to", "btc")
	q.Set("currency_from", "usd")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate")
uri.query = URI.encode_www_form({
  "amount" => "3999.5000",
  "currency_to" => "btc",
  "currency_from" => "usd"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/estimate?" . http_build_query([
    "amount" => "3999.5000",
    "currency_to" => "btc",
    "currency_from" => "usd"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get the minimum payment amount

Get the minimum payment amount for a specific pair. You can provide both currencies in the pair or just currency\_from, and we will calculate the minimum payment amount for currency\_from and currency which you have specified as the outcome in the Store Settings. You can also specify one of the fi

https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount?currency_to=trx&currency_from=eth

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount?currency_to=trx&currency_from=eth"
import requests
params = {
    "currency_to": "trx",
    "currency_from": "eth"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount');
url.searchParams.set('currency_to', 'trx');
url.searchParams.set('currency_from', 'eth');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount")
	q := baseURL.Query()
	q.Set("currency_to", "trx")
	q.Set("currency_from", "eth")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount")
uri.query = URI.encode_www_form({
  "currency_to" => "trx",
  "currency_from" => "eth"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/min-amount?" . http_build_query([
    "currency_to" => "trx",
    "currency_from" => "eth"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get list of payments

Returns the entire list of all transactions, created with certain API key. The list of optional parameters: - limit - number of records in one page. (possible values: from 1 to 500) - page - the page number you want to get (possible values: from 0 to **page count - 1**) - sortBy - sort the received

https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment?page=0&limit=10&dateTo=2021-01-01&sortBy=created_at&orderBy=asc&dateFrom=2020-01-01

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/?page=0&limit=10&dateTo=2021-01-01&sortBy=created_at&orderBy=asc&dateFrom=2020-01-01"
import requests
params = {
    "page": "0",
    "limit": "10",
    "dateTo": "2021-01-01",
    "sortBy": "created_at",
    "orderBy": "asc",
    "dateFrom": "2020-01-01"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/');
url.searchParams.set('page', '0');
url.searchParams.set('limit', '10');
url.searchParams.set('dateTo', '2021-01-01');
url.searchParams.set('sortBy', 'created_at');
url.searchParams.set('orderBy', 'asc');
url.searchParams.set('dateFrom', '2020-01-01');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/")
	q := baseURL.Query()
	q.Set("page", "0")
	q.Set("limit", "10")
	q.Set("dateTo", "2021-01-01")
	q.Set("sortBy", "created_at")
	q.Set("orderBy", "asc")
	q.Set("dateFrom", "2020-01-01")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/")
uri.query = URI.encode_www_form({
  "page" => "0",
  "limit" => "10",
  "dateTo" => "2021-01-01",
  "sortBy" => "created_at",
  "orderBy" => "asc",
  "dateFrom" => "2020-01-01"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/nowpayments.io/1.0.0/v1/payment/?" . http_build_query([
    "page" => "0",
    "limit" => "10",
    "dateTo" => "2021-01-01",
    "sortBy" => "created_at",
    "orderBy" => "asc",
    "dateFrom" => "2020-01-01"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with NOWPayments API?

NOWPayments API is a Finance API. Developers commonly use finance APIs for:

  • processing payments and handling transactions
  • building subscription and billing systems
  • automating invoicing and financial reporting
  • fraud detection and risk scoring
  • connecting to banking and accounting software

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. NOWPayments API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗