NAV Navigation
CURL Node.JS PHP Go

ForgingBlock Universal API

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The Forgingblock API provides a unified, user friendly and secure layer for developers to build their applications with support for different cryptocurrencies.

Create demo invoice:

Shows invoice example, non refundable

Typical Workflow

This is a typical core workflow for using different Forgingblock endpoints. A simple user case is building an online store which accepts a selection of cryptocurrencies as payment options. Another example is creating a fundraising page for an event which accepts donations from different cryptocurrencies.

One more complex user case, a website developer can manage multiple client stores with cryptocurrencies integration since an Forgingblock account can have multiple stores linked with different cryptocurrency wallets. Service subscription mode is also supported by us. For these advanced user cases, please check the endpoint sections for details. For a step-by-step beginner’s guide using Bitcoin as an example, please check our tutorial series.

Supported cryptocurrency:

All examples are provided for the MainNet.

Registration

curl 'https://api.forgingblock.io/register' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce'
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce';

var options = {
    url: 'https://api.forgingblock.io/register',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.forgingblock.io/register', $headers, $data);
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/register", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"You only need to confirm email now"}

POST /register

Register new account

Password requirements:

Do not use common sequences or your private details, add another word or two, consider using lowercase and uppercase and special symbols

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /register

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Creating Store

curl 'https://api.forgingblock.io/create-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&name=myawesomestore'
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn';

var options = {
    url: 'https://api.forgingblock.io/create-store',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'xpub' => 'vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn'
);
$response = Requests::post('https://api.forgingblock.io/create-store', $headers, $data);
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-store", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Example response:

{"trade":"Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp","token":"108977327347814744673750678559203866607310312666213682394904038637537833731647","store":"ExCAYgcTx6PyDimVaCgmJ1VSdEaDoUkhRoTLgnmmqrrc","wallet":true}

POST /create-store

Creating new store

Beside API reply you should also receive email with store details

You could connect wallet at this step, or you could connect it later

To connect your wallet you need to provide Master Public key (xPub) for your wallet.

xPub keys can never be used to access your funds. The xPub does not contain any private key information.

Interested in How to find xPub key in your wallet?

Example for electrum wallet:

You could find xPub in electrum in Wallet->Wallet Information

To use TestNet you need testnet wallet.

You could launch electrum with electrum --testnet to generate testnet wallet.

Beside API reply you should also receive email with store details

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
xpub body [string] false Master Public key (xPub)
name body [string] true store name

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Response Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
store body [string] true store id
wallet body [boolean] true is wallet connected to the store

OPTIONS /create-store

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connecting Wallet

Connect BTC Wallet

curl 'https://api.forgingblock.io/connect-wallet' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/connect-wallet-btc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/connect-wallet-btc-single' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/change-store-btc-wallet-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&single=false&store=4Y2otkewdai44wp23j7pbDwvt22E4a2oUnHJ8KYaGwKp'
// Connect BTC wallet (xPub)

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

// Connect BTC wallet (single address)

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-btc-single',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

/* Connect BTC wallet  (xPub) */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'xpub' => 'vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet', $headers, $data);

/* Connect BTC wallet  (single address) */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => '1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-btc-single', $headers, $data);

// Connect BTC wallet (xPub)

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Connect BTC wallet (single address)

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
)

func main() {
	client := &http.Client{}
	var data = strings.NewReader(`email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-btc-single", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}


Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
{"success":"Store bitcoin wallet single status is set to: true"}

POST /connect-wallet or POST /connect-wallet-btc

Connect new Bitcoin wallet to the store (using xPub key)

To connect your wallet you need to provide Master Public key (xPub) for your wallet.

xPub keys can never be used to access your funds. The xPub does not contain any private key information.

You could find xPub in electrum in Wallet->Wallet Information

You could launch electrum with electrum --testnet to generate testnet wallet.

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
xpub body [string] true Master Public key (xPub)
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet or /connect-wallet-btc

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

POST /connect-wallet-btc-single

Connect new Bitcoin wallet to the store (using address)

To connect your wallet your need to provide your wallet address. Actually this could be even exchange address, however we recommend you to use cold wallet, and not to store you funds on the exchange. Also exchange could take some fees for deposits. In case you using our Dashboard this is default method for a new user. In case your a big merchant with high frequent multiple transactions we recommend you to use xPub key (that generate a new address for every invoice).

Also, in case you are using API directly, you required to connect xPub key first anyway. After, you connect bitcoin single address to a store, that store would be using Bitcoin single address automatically, however you could switch a store back to the xPub by using /change-store-btc-wallet-status

In case you are a new user and used Dashboard we would use our own Xpub key, but you would be still using bitcoin single address that you are provided change-store-btc-wallet-status is changed to true automatically after you connect single bitcoin address. However, you could connect own Xpub key as well.

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true Bitcoin address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-btc-single

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

POST /change-store-btc-wallet-status

Changes store status between Bitcoin xPub and Bitcoin single address

Your could provide single=true or single=false to enable or disable Bitcoin single address for your store. Consider that if you disabling it, you must also have your own xPub key connected (connect-wallet-btc) to the wallet. Also, every invoice that was created with connected single address would be still using Bitcoin single address. Same apply for xPub key (in case you didn't connected single address, before created invoice with connected xPub key) that invoice would be still using address that is generated from xPub key.

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
single body [string] true ether true or false
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /change-store-btc-wallet-status

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None
curl 'https://api.forgingblock.io/connect-wallet-ltc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect LTC wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-ltc',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect LTC wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'xpub' => 'vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-ltc', $headers, $data);
// Connect LTC wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-ltc", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-ltc

Connect new Litecoin wallet to the store

To connect your wallet you need to provide Master Public key (xPub) for your wallet.

xPub keys can never be used to access your funds. The xPub does not contain any private key information.

You could find xPub in electrum-ltc in Wallet->Wallet Information

To use TestNet you need testnet wallet.

You could launch electrum with electrum-ltc --testnet to generate testnet wallet.

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
xpub body [string] true Master Public key (xPub)
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-ltc

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect ETH Wallet

curl 'https://api.forgingblock.io/connect-wallet-eth' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect ETH wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-eth',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect ETH wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => '0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-eth', $headers, $data);
// Connect ETH wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-eth", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-eth

Connect new Ethereum wallet to the store

To connect your wallet you need to provide your wallet address.

You could use any wallet, for example: MyEtherWallet

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-eth

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Ethereum Tokens

curl 'https://api.forgingblock.io/connect-wallet-eth-token' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT'
// Connect USDT Wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-eth-token',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect USDT wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => '0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E',
	'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
	'name' => 'USDT'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-eth-token', $headers, $data);
// Connect USDT wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-eth-token", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-eth-token

Connect new Ethereum wallet to the store, for use with Ethereum token

To connect your wallet you need to provide your wallet address and Token name

You could use any wallet, for example: MyEtherWallet

Sometimes legacy mew has better token management

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id
name body [string] true token name (DAI, USDT)

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

POST /add-new-eth-token

Request to add new token support

Only users with forgingblock administrator role could confirm request

Parameters

Parameter In Type Required Description
contract body [string] true token contract address
decimals body [string] true token decimals
name body [string] true token name (for ex.: DAI or USDT)

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-eth-token and /add-new-eth-token

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect Monero Wallet

curl 'https://api.forgingblock.io/connect-wallet-xmr' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
// Connect Monero wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-xmr',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Monero wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
	'address' => '47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86',
	'viewkey' => '544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-xmr', $headers, $data);
// Connect Monero wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-xmr", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-xmr

Connect new Monero wallet to the store

To connect your wallet you need to provide your wallet address and secret viewkey (secret viewkey doesn't provides control on funds, but makes transaction details not private, and allows us to get exact amounts from transactions).

You could find your secret viewkey in Monero GUI Wallet in Settings->Show seed & keys

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id
viewkey body [string] true wallet secret viewkey

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-xmr

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect XTZ Wallet

curl 'https://api.forgingblock.io/connect-wallet-xtz' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect XTZ wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-xtz',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect XTZ wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-xtz', $headers, $data);
// Connect XTZ wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-xtz", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-xtz

Connect new Tezos wallet to the store

To connect your wallet you need to provide your wallet address.

You could use any wallet, for example: Galleon

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-xtz

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect EOS Wallet

curl 'https://api.forgingblock.io/connect-wallet-eos' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect EOS wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-eos',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect EOS wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'proxyrozy123',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-eos', $headers, $data);
// Connect EOS wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-eos", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-eos

Connect new EOS account to the store

To connect your wallet you need to provide your wallet account name.

You could use any wallet, for example: SimplEOS

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet account name
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-eos

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

EOS Tokens

curl 'https://api.forgingblock.io/connect-wallet-eos-token' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ'
// Connect Everipedia Wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-eos-token',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Everipedia wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'fbtstaccount',
	'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
	'name' => 'IQ'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-eos-token', $headers, $data);
// Connect Everipedia wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-eos-token", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-eos-token

Connect new EOS token wallet account to the store

To connect your wallet you need to provide your wallet account name

You could use any wallet, for example: SimplEOS

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet account name
store body [string] true store id
name body [string] true token name (IQ)

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

POST /add-new-eos-token

Request to add new token support

Only users with forgingblock administrator role could confirm request

Parameters

Parameter In Type Required Description
code body [string] true Representation of privileged EOSIO name type, for ex.: eosio.token
name body [string] true token name (for ex.: IQ)

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-eos-token and /add-new-eos-token

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect Digibyte Wallet

curl 'https://api.forgingblock.io/connect-wallet-dgb' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect Digibyte wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-dgb',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Digibyte wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-dgb', $headers, $data);
// Connect Digibyte wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-dgb", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-dgb

Connect new Digibyte wallet to the store

To connect your wallet you need to provide your wallet address.

You could use any wallet, for example: Official DigiByte Wallet

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-dgb

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect ReddCoin Wallet

curl 'https://api.forgingblock.io/connect-wallet-rdd' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect ReddCoin wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-rdd',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect ReddCoin wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-rdd', $headers, $data);
// Connect ReddCoin wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-rdd", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-rdd

Connect new ReddCoin wallet to the store

To connect your wallet you need to provide your wallet address.

You could use any wallet, for example: Reddcoin Core Wallet

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-rdd

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect Ravencoin Wallet

curl 'https://api.forgingblock.io/connect-wallet-rvn' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect Ravencoin wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/connect-wallet-rvn',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Ravencoin wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'address' => 'RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/connect-wallet-rvn', $headers, $data);
// Connect Ravencoin wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/connect-wallet-rvn", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /connect-wallet-rvn

Connect new Ravencoin wallet to the store

To connect your wallet you need to provide your wallet address.

You could use any wallet, for example: Ravencoin Wallet

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
address body [string] true wallet address
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /connect-wallet-rvn

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect KSM Wallet

curl 'https://api.forgingblock.io/v2/connect-wallet-ksm' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu'
// Connect KSM wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu';

var options = {
    url: 'https://api.forgingblock.io/v2/connect-wallet-ksm',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect KSM wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'address' => 'Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu'
);
$response = Requests::post('https://api.forgingblock.io/v2/connect-wallet-ksm', $headers, $data);
// Connect KSM wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/v2/connect-wallet-ksm", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /v2/connect-wallet-ksm

Connect new Kusama wallet to the store

To connect your wallet you need to provide your wallet address.

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
address body [string] true wallet address

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /v2/connect-wallet-ksm

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect Xenios Coin

curl 'https://api.forgingblock.io/v2/connect-wallet-xnc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
// Connect Xenios Coin wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf';

var options = {
    url: 'https://api.forgingblock.io/v2/connect-wallet-xnc',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Xenios Coin wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'address' => 'Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
);
$response = Requests::post('https://api.forgingblock.io/v2/connect-wallet-xnc', $headers, $data);
// Connect Xenios Coin wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/v2/connect-wallet-xnc", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /v2/connect-wallet-xnc

Connect new Xenios Coin wallet to the store

To connect your wallet you need to provide your wallet address.

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
address body [string] true wallet address

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /v2/connect-wallet-xnc

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Connect Oduwa Coin

curl 'https://api.forgingblock.io/v2/connect-wallet-owc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
// Connect Oduwa Coin wallet

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf';

var options = {
    url: 'https://api.forgingblock.io/v2/connect-wallet-owc',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Connect Oduwa Coin wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'address' => 'Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
);
$response = Requests::post('https://api.forgingblock.io/v2/connect-wallet-owc', $headers, $data);
// Connect Oduwa Coin wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/v2/connect-wallet-owc", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}

POST /v2/connect-wallet-owc

Connect new Oduwa Coin wallet to the store

To connect your wallet you need to provide your wallet address.

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
address body [string] true wallet address

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /v2/connect-wallet-owc

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Wallets Connection Status

curl 'https://api.forgingblock.io/wallet-connection-status' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce'
curl 'https://api.forgingblock.io/wallet-connection-status-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Wallets Connection Status

request(options, callback);

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce';

var options = {
    url: 'https://api.forgingblock.io/wallet-connection-status,
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Wallets Connection Status */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.forgingblock.io/wallet-connection-status', $headers, $data);
// Wallets Connection Status

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/wallet-connection-status", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{
    "btc": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL"
        },
        {
            "store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
            "xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL-[legacy]"
        }
    ],
    "ltc": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD98231kvgEd78q3yYBCLGZj9zpK3mqAb7dzJBt7Zki8Z1EgAv3Jw3k3Eqp2iiYzqwvUD9jciD9L321ziDUqoJQ2o5uUvhWuegQ5MEvBcM3M"
        },
        {
            "store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
            "xpub": ""
        }
    ],
    "eth": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e"
        }
    ],
    "ethTokens": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
            "name": "DAI"
        },
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
            "name": "USDT"
        }
    ],
    "bch": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD6NzVbkrYhZ4XQucnzr7LNP8MrMjASTn7h1Xz9Eqj8rnq3bxL31qZF1t9k9vJ4GQJKQA63b1RZQixmwxhaX74xzWR4Hm9t8mBAoquxrNLQh"
        }
    ],
    "eos": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "proxyrozy123"
        }
    ],
    "eosTokens": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "eedae1dair5w",
            "name": "IQ"
        },
        {
            "store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
            "address": "eedae1dair5w",
            "name": "IQ"
        }
    ],
    "xmr": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86",
            "viewkey": "544xxx"
        }
    ],
    "dgb": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "DKcG9GiYeCnvHbnBHsdTsYGfmMfYjFLQAv"
        }
    ],
    "rdd": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm"
        }
    ],
    "rvn": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "mmZFk7bQiWN5C4ga74xCNpPGnK3BrNQPT3"
        }
    ],
    "xtz": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "tz1VttGDs9M2kr3zMfLRHqACpAcNcKY2bYj5"
        }
    ]
}

{
    "btc": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL"
        }
    ],
    "ltc": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD98231kvgEd78q3yYBCLGZj9zpK3mqAb7dzJBt7Zki8Z1EgAv3Jw3k3Eqp2iiYzqwvUD9jciD9L321ziDUqoJQ2o5uUvhWuegQ5MEvBcM3M"
        }
    ],
    "eth": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e"
        }
    ],
    "ethTokens": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
            "name": "DAI"
        },
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
            "name": "USDT"
        }
    ],
    "bch": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "xpub": "tpubD6NzVbkrYhZ4XQucnzr7LNP8MrMjASTn7h1Xz9Eqj8rnq3bxL31qZF1t9k9vJ4GQJKQA63b1RZQixmwxhaX74xzWR4Hm9t8mBAoquxrNLQh"
        }
    ],
    "eos": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "proxyrozy123"
        }
    ],
    "eosTokens": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "eedae1dair5w",
            "name": "IQ"
        }
    ],
    "trx": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "419ad6fcdd3b423843d1b7077e3f08e50f02fa911c"
        }
    ],
    "xmr": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86",
            "viewkey": "544xxx"
        }
    ],
    "dgb": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "DKcG9GiYeCnvHbnBHsdTsYGfmMfYjFLQAv"
        }
    ],
    "rdd": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm"
        }
    ],
    "rvn": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "mmZFk7bQiWN5C4ga74xCNpPGnK3BrNQPT3"
        }
    ],
    "xtz": [
        {
            "store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
            "address": "tz1VttGDs9M2kr3zMfLRHqACpAcNcKY2bYj5"
        }
    ]
}

POST /wallet-connection-status

Shows all connected wallets per account

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)

POST /wallet-connection-status-store

Shows all connected wallets fot the store

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /wallet-connection-status and /wallet-connection-status-store

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Store Management

Lightning Management

curl 'https://api.forgingblock.io/enable-lightning' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/disable-lightning' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/withdraw-ln' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Force enable lightning for a store

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/enable-lightning',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

// Force disable lightning for a store
request(options, callback);


var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/disable-lightning',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// On-chain withdraw from Forging Block lightning node to the store's wallet

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/withdraw-ln',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}


/* Force enable lightning for a store */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/enable-lightning', $headers, $data);

/* Force disable lightning for a store */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/disable-lightning', $headers, $data);

/* On-chain withdraw from Forging Block lightning node to the store's wallet */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/withdraw-ln', $headers, $data);


// Force enable lightning for a store

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/enable-lightning", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Force disable lightning for a store

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/disable-lightning", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// On-chain withdraw from Forging Block lightning node to the store's wallet

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/withdraw-ln", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"success":"Lightning support activated"}
{"success":"Lightning support disabled"}
{"txid":"7243757214bcfc0fc3d881d7cfe850270b57ce4f41105dbe25e7efcb3e0814eb","amount":0.00379819}

For a customer is highly recommended to open channel with Forging Block lightning node first. For a merchant, no extra setup needed.

033c6d5d7e5650f00a6e294c56605554af8e81fd048965ac6adedbf599d6e3214d@lightning.forgingblock.io:9735

023851c65a46fc6936a6c99e3a2b1fef63cedfa55977d68011b0398db54fde9397@lightning.forgingblock.io:9736

POST /enable-lightning

Force enable lightning for a store

POST /disable-lightning

Force disable lightning for a store

By default Forging Block lightning node already connected to your store (and no extra setup needed), but you could ether enable or disable lightning support manually.

POST /withdraw-ln

On-chain withdraw from Forging Block lightning node to the store's wallet

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
store body [string] true store id

Response Parameters

For /withdraw-ln

Parameter In Type Required Description
txid body [string] true transaction id
amount body [string] true amount in transaction

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /enable-lightning, /disable-lightning and /withdraw-ln

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

List All Stores & Remove a Store & Change or Get Store Name

curl 'https://api.forgingblock.io/stores-list' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce'

curl 'https://api.forgingblock.io/remove-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/get-store-name' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/change-store-name' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename'
// List All Stores

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce';

var options = {
    url: 'https://api.forgingblock.io/stores-list',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Remove Store
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/remove-store',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Get Store Name
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/get-store-name',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Change Store Name
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename';

var options = {
    url: 'https://api.forgingblock.io/change-store-name',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

/* List All Stores */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.forgingblock.io/stores-list', $headers, $data);

/* Remove Store */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/remove-store', $headers, $data);

/* Get Store Name */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/get-store-name', $headers, $data);

/* Change Store Name */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
	'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
	'name' => 'newstorename'
);
$response = Requests::post('https://api.forgingblock.io/change-store-name', $headers, $data);

// List All Stores

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/stores-list", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Remove Store

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/remove-store", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Get Store Name

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/get-store-name", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Change Store Name

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/change-store-name", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response example:

{"stores":[{"id":"DowbehHRkPNAqLTh3iwoNQwoARo3Jig2rE8Y8avgU4KC","name":"storename1"},{"id":"9ZTsUdvkdzDqvHq2MxF9SmBPhj5KvVSN3gQSNGmGBLyH","name":"storename2"}]}
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc was successfully removed"}
{"name":"awesomestore"}
{"name":"newstorename"}

POST /stores-list

List All Stores ID's and Name's

Call support GET for request with a cookie

POST /remove-store & POST /get-store-name

Remove a store

POST /get-store-name

Get store name

POST /change-store-name

Change store name

Parameters

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
store body [string] true store id
name body [string] true store name

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /stores-list, /remove-store

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Shopify Integration

curl 'https://api.forgingblock.io/v2/add-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username.myshopify.com'

curl 'https://api.forgingblock.io/v2/add-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username2.myshopify.com'

curl 'https://api.forgingblock.io/v2/remove-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username2.myshopify.com'

curl 'https://api.forgingblock.io/v2/get-shopify-store-source' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240'

POST /v2/add-shopify-store

Add Shopify Store for integration (you run this only once on creation), after you should use /add-source-shopify-store even if removed all domain URLs

Correct domain name URL examples: https://username.myshopify.com, https://username.myshopify.com/, http://username.myshopify.com, http://mystore.com, https://mystore.com, https://mystore.com/

Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation, https://mystore.com/someproductlocation, mystore.com, username.myshopify.com, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
source body [string] true Shopify Store Domain URL

POST /v2/add-source-shopify-store

Add Shopify Store Domain URL for integration

Correct domain name URL examples: https://username.myshopify.com, https://username.myshopify.com/, http://username.myshopify.com, http://mystore.com, https://mystore.com, https://mystore.com/

Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation, https://mystore.com/someproductlocation, mystore.com, username.myshopify.com, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
source body [string] true Shopify Store Domain URL

POST /v2/remove-source-shopify-store

Remove Shopify Store Domain URL from integration

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
source body [string] true Shopify Store Domain URL to remove

POST /v2/get-shopify-store-source

Get and Array with current domain URLs for Shopify Store integration

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token

Invoice Management

Every new invoice lifetime is 15 minutes (avoiding volatility fluctuations)

Invoice status could be

Working directly with new invoices

curl 'https://api.forgingblock.io/create-invoice' -H 'Content-Type: application/x-www-form-urlencoded' \ 
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&amount=1550&currency=usd'

curl 'https://api.forgingblock.io/check-invoice' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8'

curl 'https://api.forgingblock.io/check-invoice-status' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8'

// Create new invoice

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var options = {
    url: 'https://api.forgingblock.io/create-invoice',
    headers: headers
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Get invoice details

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8';

var options = {
    url: 'https://api.forgingblock.io/check-invoice',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Get invoice status

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8';

var options = {
    url: 'https://api.forgingblock.io/check-invoice-status',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}
 /* Create new invoice */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
    'amount' => '1550',
    'currency' => 'usd'
);
$response = Requests::post('https://api.forgingblock.io/create-invoice', $headers, $data);


 /* Get invoice details */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
    'invoice' => '6174qz7YsYceLU1WSELTA8'
);
$response = Requests::post('https://api.forgingblock.io/check-invoice', $headers, $data);

 /* Get invoice status */
 
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
    'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
    'invoice' => '6174qz7YsYceLU1WSELTA8'
);
$response = Requests::post('https://api.forgingblock.io/check-invoice-status', $headers, $data);
// Create new invoice

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&amount=1550&currency=usd}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-invoice", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Get invoice details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/check-invoice", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Get invoice status

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/check-invoice-status", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"id":"U8B7S21kdo8mB7TDtqDUDG","amount":1550,"currency":"USD","realAmount":"0.40162157","creation":1552319384000,"expiration":1552320284000,"payUrl":"bitcoin:tb1qufxkm89aybhp600aycm54s5ycdj2pqz9hzxj4l?amount=0.40162157","status":"new","url":"https://api-demo.forgingblock.io/invoice?id=7hqLE4VN5eS5DyhZLzCVby"}

{"id":"U8B7S21kdo8mB7TDtqDUDG","amount":1550,"currency":"USD","realAmount":"0.40162157","creation":1552319384000,"expiration":1552320284000,"payUrl":"bitcoin:tb1qufxkm89aybhp600aycm54s5ycdj2pqz9hzxj4l?amount=0.40162157","status":"new","url":"https://api-demo.forgingblock.io/invoice?id=7hqLE4VN5eS5DyhZLzCVby"}

{"status":"new"}

POST /create-invoice

Create new invoice

POST /check-invoice

Get invoice details

POST /check-invoice-status

Get invoice status

Most common invoice statuses are: new (for a new invoice), confirmed (successful payment), complete (6 confirmation on chain, as for bitcoin) and expired (invoice expired)

In case you need to do request inside a public script you should use GET instead as this would save trade and token from exposure

Parameters

For /create-invoice

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
amount body [string] true amount for the price
currency body [string] true currency code in ISO 4217
link body [string] false url to follow after the payment
notification body [string] false url for IPN request (used by e-commerce software)
order body [string] false uniq order id (equal to the order id in e-commerce software)

For /check-invoice and /check-invoice-status

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
invoice body [string] true invoice id

OPTIONS /create-invoice, /check-invoice, /check-invoice-status

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

IPN Response Example & Explanation

IPN is send in case notification parameter is provided. Main IPN purpose is to send notification to e-commerce software. IPNs are not signed, so it always better to use /check-invoice or /check-invoice-status directly when its possible.

{"id": "U8B7S21kdo8mB7TDtqDUDG", "url": "https://api-demo.forgingblock.io/invoice?id=7hqLE4VN5eS5DyhZLzCVby", "posData": null, "status": "confirmed", "btcPrice": "0.40162157", "btcPaid": "0.40162157", "btcDue": "0.00000000"}

Invoices History

curl 'https://api.forgingblock.io/get-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce'

curl 'https://api.forgingblock.io/get-store-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'

curl 'https://api.forgingblock.io/get-store-all-invoices'  -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Get history with all invoices for a store

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';

var options = {
    url: 'https://api.forgingblock.io/get-store-invoices',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Get history with all invoices for a store */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/get-store-invoices', $headers, $data);
// Get history with all invoices for a store 

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/get-store-invoices", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

[
    {
        "ReceivedDate": "2020-01-13T13:15:27.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "DS4rs123JN8chH8QXzXMnX",
        "InvoiceCreatedDate": "2020-01-13T13:05:46.000Z",
        "InvoiceExpirationDate": "2020-01-13T13:20:46.000Z",
        "InvoiceMonitoringDate": "2020-01-13T14:20:46.000Z",
        "PaymentId": "354b8163022dfde282b6e025c77beceed145aeea138a4dc01d7d51faf5643e72-1",
        "Destination": "tb1qgr3l8u8fhy2mlumqegu65ep4dkqskvuxzt3gec",
        "CryptoCode": "BTC",
        "ConversionRate": 8090.12550017418,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=DS4rs123JN8chH8QXzXMnX&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-11T05:14:29.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "BWqGGhrKEWJZ9HA1j7MXrs",
        "InvoiceCreatedDate": "2019-04-11T05:08:30.000Z",
        "InvoiceExpirationDate": "2019-04-11T05:23:30.000Z",
        "InvoiceMonitoringDate": "2019-04-11T06:23:30.000Z",
        "PaymentId": "e11e13e2742cfde626b51d197424bb91662bb0121ba1b35c5614230446d95b7a",
        "Destination": "tb1qgfh8epgz8zj92an36ykx2q7fwxqzuhnue4sjnd",
        "CryptoCode": "BTC",
        "ConversionRate": 5213.02452631038,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=BWqGGhrKEWJZ9HA1j7MXrs&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2020-02-17T13:06:43.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "5vVMoUsv4qhUvuu8s9t5ky",
        "InvoiceCreatedDate": "2020-02-17T12:59:31.000Z",
        "InvoiceExpirationDate": "2020-02-17T13:14:31.000Z",
        "InvoiceMonitoringDate": "2020-02-17T14:14:31.000Z",
        "PaymentId": "5962014ec62980a9b7b9e8080ef92ba7fceeea9009e73c1c60921b1a6cde3868-0",
        "Destination": "tb1qur8n45zc6u5easke9e8zz3cajt8906z22hgatq",
        "CryptoCode": "BTC",
        "ConversionRate": 9638.589,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=5vVMoUsv4qhUvuu8s9t5ky&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-10T18:51:08.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "5eQHjRpQ5myesbS9waS34D",
        "InvoiceCreatedDate": "2019-04-10T18:50:38.000Z",
        "InvoiceExpirationDate": "2019-04-10T19:05:38.000Z",
        "InvoiceMonitoringDate": "2019-04-10T20:05:38.000Z",
        "PaymentId": "d8abd7b6093d32bbb4c7a7bb7b59eff13ca3542f65ee89888d20746db02b726a",
        "Destination": "tb1qxxkgrf5qezxrhs2828mc5mz7cft0axf2d7ahe8",
        "CryptoCode": "BTC",
        "ConversionRate": 5437.09577642961,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=5eQHjRpQ5myesbS9waS34D&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-05T13:02:39.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "EtrctTJtah9BUuZJYQJp2L",
        "InvoiceCreatedDate": "2019-04-05T13:02:23.000Z",
        "InvoiceExpirationDate": "2019-04-05T13:17:23.000Z",
        "InvoiceMonitoringDate": "2019-04-05T14:17:23.000Z",
        "PaymentId": "e9ab7cdb3b507c58029242631fa0949c02aba449ae520f65279f6b4b2ebbd797",
        "Destination": "tb1q8dzdl52luedhyn7ly5tdth8dts0zw6rmuly33d",
        "CryptoCode": "BTC",
        "ConversionRate": 5028.43845060516,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=EtrctTJtah9BUuZJYQJp2L&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "A4jCP6gTbsEtRfswrbZKen",
        "InvoiceCreatedDate": "2019-05-07T17:03:24.000Z",
        "InvoiceExpirationDate": "2019-05-07T17:18:24.000Z",
        "InvoiceMonitoringDate": "2019-05-07T18:18:24.000Z",
        "PaymentId": null,
        "Destination": "tb1qtw3uk4j4u0hxd4uj8agjyw9x088qyn6wttg99l",
        "ConversionRate": 5909.29000820981,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": null,
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=A4jCP6gTbsEtRfswrbZKen&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": "0.11531550",
        "EthRate": "$175.38",
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "WiswGDmHiC2aqiATiWEud3",
        "InvoiceCreatedDate": "2019-05-07T11:42:30.000Z",
        "InvoiceExpirationDate": "2019-05-07T11:57:30.000Z",
        "InvoiceMonitoringDate": "2019-05-07T12:57:30.000Z",
        "PaymentId": null,
        "Destination": "tb1qgczevnfqf9xw5ce9m57ee4nhwr2uw6lskm8hh2",
        "ConversionRate": 5892.99314287078,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=WiswGDmHiC2aqiATiWEud3&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-05T13:15:38.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "XktmvPPeD22ZHeBK1iqtmV",
        "InvoiceCreatedDate": "2019-04-05T13:05:35.000Z",
        "InvoiceExpirationDate": "2019-04-05T13:20:35.000Z",
        "InvoiceMonitoringDate": "2019-04-05T14:20:35.000Z",
        "PaymentId": "6d74496a8084eac15a6af7f77ff9e0f13b268c40bbac85c568e717b64fce6308",
        "Destination": "tb1qw67j7m7zcc66gmuf6mc6ullzy4fgwejtqu27yu",
        "CryptoCode": "BTC",
        "ConversionRate": 5028.43845060516,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=XktmvPPeD22ZHeBK1iqtmV&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-10T16:46:44.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "2aUGbRCapf5GcKHcK2KJnZ",
        "InvoiceCreatedDate": "2019-04-10T16:41:02.000Z",
        "InvoiceExpirationDate": "2019-04-10T16:56:02.000Z",
        "InvoiceMonitoringDate": "2019-04-10T17:56:02.000Z",
        "PaymentId": "021c06d1dbfabaeba9378a05a2c3b9243f704d31bd92ffd651d04b7cc9e7cfc5",
        "Destination": "tb1q97n5eelvnfsfx8mpvscqdt38uhmrve59uk4cyd",
        "CryptoCode": "BTC",
        "ConversionRate": 5287.05211729067,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=2aUGbRCapf5GcKHcK2KJnZ&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-06T07:54:56.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "QziNEEcQGDaN8FQqBmXqAf",
        "InvoiceCreatedDate": "2019-04-06T07:53:11.000Z",
        "InvoiceExpirationDate": "2019-04-06T08:08:11.000Z",
        "InvoiceMonitoringDate": "2019-04-06T09:08:11.000Z",
        "PaymentId": "406e1b4354c7261b16b914a2929e05169c5a04fefa5f2e5384c35e62cb8ca79f-1",
        "Destination": "tb1qzgqgd72y5wkk5rne2wla80zm70ra40lfpklqaw",
        "CryptoCode": "BTC",
        "ConversionRate": 5020.57851110224,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=QziNEEcQGDaN8FQqBmXqAf&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "GGtKcvbuaaXo6kfnwPybHd",
        "InvoiceCreatedDate": "2019-05-07T16:33:27.000Z",
        "InvoiceExpirationDate": "2019-05-07T16:48:27.000Z",
        "InvoiceMonitoringDate": "2019-05-07T17:48:27.000Z",
        "PaymentId": null,
        "Destination": "tb1qk4gck8z9pv6ej5ff7sugn94hm97rastddpqsu9",
        "ConversionRate": 5906.34461841557,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": null,
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=GGtKcvbuaaXo6kfnwPybHd&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": "0.11513736",
        "EthRate": "$175.68",
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "UKD5b23dz7rzzmsy5vRvvu",
        "InvoiceCreatedDate": "2019-05-07T17:36:19.000Z",
        "InvoiceExpirationDate": "2019-05-07T17:51:19.000Z",
        "InvoiceMonitoringDate": "2019-05-07T18:51:19.000Z",
        "PaymentId": null,
        "Destination": "tb1qpf3ptyhwpcyegezpd8ma3356nylkten4ftxwlx",
        "ConversionRate": 5913.54195543885,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": null,
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=UKD5b23dz7rzzmsy5vRvvu&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": "0.11562632",
        "EthRate": "$174.57",
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "KUzRUbjNXPpXy4eA9s9Jj2",
        "InvoiceCreatedDate": "2019-05-07T17:24:30.000Z",
        "InvoiceExpirationDate": "2019-05-07T17:39:30.000Z",
        "InvoiceMonitoringDate": "2019-05-07T18:39:30.000Z",
        "PaymentId": null,
        "Destination": "tb1qq5x5et5xkzlh62pcx3fyj9f0cn8kkysp3vxu2n",
        "ConversionRate": 5921.85192741704,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": null,
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=KUzRUbjNXPpXy4eA9s9Jj2&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": "0.11546427",
        "EthRate": "$174.77",
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-06-19T15:35:02.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": "9",
        "InvoiceId": "AV1b2VBA3Hb8cQQqSeQLXw",
        "InvoiceCreatedDate": "2019-06-19T15:34:15.000Z",
        "InvoiceExpirationDate": "2019-06-19T15:49:15.000Z",
        "InvoiceMonitoringDate": "2019-06-19T16:49:15.000Z",
        "PaymentId": "4c16cafe6a7915f6f8b6a255896b0cd5bd582df62c432505974ab0d0301b1541-0",
        "Destination": "tb1q35zxyylvvcj64fya6u8asx6zlxqy08lchsr0lz",
        "CryptoCode": "BTC",
        "ConversionRate": 9078.99249761391,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=AV1b2VBA3Hb8cQQqSeQLXw&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": null,
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "GoB4mGusi4NKb1L3kMZdyK",
        "InvoiceCreatedDate": "2019-05-07T17:09:02.000Z",
        "InvoiceExpirationDate": "2019-05-07T17:24:02.000Z",
        "InvoiceMonitoringDate": "2019-05-07T18:24:02.000Z",
        "PaymentId": null,
        "Destination": "tb1quss873kkrudszuucftrkxp8us4ywlr44s6fxyr",
        "ConversionRate": 5909.29000820981,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": null,
        "BuyerEmail": null,
        "Accounted": null,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=GoB4mGusi4NKb1L3kMZdyK&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": "0.11551228",
        "EthRate": "$175.14",
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-07-11T13:23:52.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "Bx679HRpUM2Ti1Lwn1y55J",
        "InvoiceCreatedDate": "2019-07-11T13:22:34.000Z",
        "InvoiceExpirationDate": "2019-07-11T13:37:34.000Z",
        "InvoiceMonitoringDate": "2019-07-11T14:37:34.000Z",
        "PaymentId": "987342f1eab2ef7011884225ce74d805aeb2761c5117490e95298c0a2e035a91-0",
        "Destination": "tb1qz0z25t35egsazmtnzee3apk7ymtphdtmrpvdvg",
        "CryptoCode": "BTC",
        "ConversionRate": 11689.469622758,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=Bx679HRpUM2Ti1Lwn1y55J&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-12-23T11:18:09.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "4pnDMfAD5s5PWVVXE4BctE",
        "InvoiceCreatedDate": "2019-12-23T11:17:15.000Z",
        "InvoiceExpirationDate": "2019-12-23T11:32:15.000Z",
        "InvoiceMonitoringDate": "2019-12-23T12:32:15.000Z",
        "PaymentId": "6c3609e1a8f3f5abcf297d9bcc5e7a0dc856f688f88db0e5e4f111e418d5119a-0",
        "Destination": "tb1q3yzscnwvjk2eft9rhgpycdvssfmsuw0wpele8w",
        "CryptoCode": "BTC",
        "ConversionRate": 7530.9323601033,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=4pnDMfAD5s5PWVVXE4BctE&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-05T14:01:24.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "FKSuQreLNBo6RqVjYUVDTb",
        "InvoiceCreatedDate": "2019-04-05T14:01:07.000Z",
        "InvoiceExpirationDate": "2019-04-05T14:16:07.000Z",
        "InvoiceMonitoringDate": "2019-04-05T15:16:07.000Z",
        "PaymentId": "096ad909d0c7611968aafa5484da013846b97557803e82089315786f6234cb0a",
        "Destination": "tb1qlfcqsze6k8rx9vmqpn27jparl4x77c8hau9cq7",
        "CryptoCode": "BTC",
        "ConversionRate": 5027.63776201246,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=FKSuQreLNBo6RqVjYUVDTb&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-06-28T14:30:40.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": "14",
        "InvoiceId": "BtgkS415X31Cn8L47tsarB",
        "InvoiceCreatedDate": "2019-06-28T14:28:23.000Z",
        "InvoiceExpirationDate": "2019-06-28T14:43:23.000Z",
        "InvoiceMonitoringDate": "2019-06-28T15:43:23.000Z",
        "PaymentId": "07ad915408d8fb06f8b2277d37ee3c57542e017de54b5cc92f564af335b1a5d9-0",
        "Destination": "tb1qjgnfup3p7s2vssakhyhx5eqv9zgnvyghrj5uk7",
        "CryptoCode": "BTC",
        "ConversionRate": 11765.6470966484,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.mx",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=BtgkS415X31Cn8L47tsarB&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-04-05T12:59:46.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "PqGUBF3JzotxTwnGQ5N8DD",
        "InvoiceCreatedDate": "2019-04-05T12:50:53.000Z",
        "InvoiceExpirationDate": "2019-04-05T13:05:53.000Z",
        "InvoiceMonitoringDate": "2019-04-05T14:05:53.000Z",
        "PaymentId": "53dc9636f57dab521739ebeaa653de75aee1761f272e8d142f8f20af4e68e0b2",
        "Destination": "tb1q5zflf5lwxnza7mff7hpx6tr3m5qmlkpukck6yj",
        "CryptoCode": "BTC",
        "ConversionRate": 5041.0669819548,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": null,
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=PqGUBF3JzotxTwnGQ5N8DD&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    },
    {
        "ReceivedDate": "2019-08-19T05:21:01.000Z",
        "StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
        "OrderId": null,
        "InvoiceId": "4VVQ1yTFT7dXVpA48o27RL",
        "InvoiceCreatedDate": "2019-08-19T05:19:38.000Z",
        "InvoiceExpirationDate": "2019-08-19T05:34:38.000Z",
        "InvoiceMonitoringDate": "2019-08-19T06:34:38.000Z",
        "PaymentId": "2c91d947e3c355ab3a7ebfeb130e4f4f32cb62116da217754401324482a928db-0",
        "Destination": "tb1q5029e8p7udn5ze5t9u3au7rze9aer4x7geg3ga",
        "CryptoCode": "BTC",
        "ConversionRate": 10382.0971205188,
        "InvoiceCurrency": "USD",
        "InvoiceItemCode": null,
        "InvoiceStatus": "complete",
        "InvoiceExceptionStatus": "",
        "BuyerEmail": "test@fastmail.net",
        "Accounted": true,
        "InvoicePaymentDetails": "https://api-demo.forgingblock.io/invoice/status?invoiceId=4VVQ1yTFT7dXVpA48o27RL&paymentMethodId=BTC&_=1",
        "BchAmount": null,
        "BchRate": null,
        "BchPaidDetected": null,
        "DgbAmount": null,
        "DgbRate": null,
        "DgbPaidDetected": null,
        "EosAmount": null,
        "EosRate": null,
        "EosPaidDetected": null,
        "EosTlosAmount": null,
        "EosTlosRate": null,
        "EosTlosPaidDetected": null,
        "EosIqAmount": null,
        "EosIqRate": null,
        "EosIqPaidDetected": null,
        "EthAmount": null,
        "EthRate": null,
        "EthPaidDetected": null,
        "EthUsdtAmount": null,
        "EthUsdtRate": null,
        "EthUsdtPaidDetected": null,
        "EthDaiAmount": null,
        "EthDaiRate": null,
        "EthDaiPaidDetected": null,
        "RddAmount": null,
        "RddRate": null,
        "RddPaidDetected": null,
        "RvnAmount": null,
        "RvnRate": null,
        "RvnPaidDetected": null,
        "TronAmount": null,
        "TronRate": null,
        "TronPaidDetected": null,
        "TronUsdtAmount": null,
        "TronUsdtRate": null,
        "TronUsdtPaidDetected": null,
        "TronBttAmount": null,
        "TronBttRate": null,
        "TronBttPaidDetected": null,
        "XmrAmount": null,
        "XmrRate": null,
        "XmrPaidDetected": null,
        "XtzAmount": null,
        "XtzRate": null,
        "XtzPaidDetected": null
    }
]
{"invoices":[["9rX3PEE8U1rZuMppqtBarn"],["KLo7ca2xbxswBHuFYBjfsU"],["LNgzR6u1nNkcrVmamJkGWU"],["JPQcwAoAo5cdTgi5xNPGZ4"],["Q4c18wkfwDYBg8nQfpSxyq"],["SE7FuzCdaQfwPbD38mkJsQ"]]}

POST /get-invoices

Get history with all invoices with complete/confirmed/paid statuses

POST /get-store-invoices

Get history with all invoices for a store with complete/confirmed/paid statuses

POST /get-store-all-invoices

Get all ever created invoices IDs as array

Parameters

For /get-invoices, and /get-ln-invoices

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)

For /get-store-invoices and /get-store-ln-invoices

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Response Parameters

For /get-invoices, /get-store-invoices

Parameter Description
ReceivedDate payment received date
StoreId store id
OrderId order Id
InvoiceId invoice id
InvoiceCreatedDate date of creation of the invoice
InvoiceExpirationDate date of expiration of the invoice
InvoiceMonitoringDate date when we cease to monitor events of the invoice
PaymentId unique identifier of a payment
Destination the destination address the customer paid to
CryptoCode currency code of the method of payment (e.g. BTC)
NetworkFee network fee paid by the user in this payment
ConvertionRate conversion rate at invoice creation to convert from CryptoCode to InvoiceCurrency
InvoiceCurrency currency of the invoice (e.g. USD)
InvoicePrice price of the invoice (without Network Fee, in InvoiceCurrency)
InvoiceItemCode item code of the invoice
InvoiceStatus status of the invoice (e.g. expired)
InvoiceException status of the invoice (e.g. paidPartial)
BuyerEmail customer email
InvoicePaymentDetails URL for the invoice in BTC (could be changed manually from BTC to the another cryptoCode, for ex. ETH)
BchAmount invoice amount in Bitcoin Cash
BchRate Bitcoin Cash conversion rate
BchPaidDetected Amount of payment in Bitcoin Cash that was detected for the invoice
DgbAmount invoice amount in DigiByte
DgbRate DigiByte conversion rate
DgbPaidDetected Amount of payment in DigiByte that was detected for the invoice
EosAmount invoice amount in EOS
EosRate EOS conversion rate
EosPaidDetected Amount of payment in EOS that was detected for the invoice
EosIqAmount Amount in IQ
EosIqRate IQ conversion rate
EosIqPaidDetected Amount of payment in IQ that was detected for the invoice
EthAmount Amount in Ethereum
EthRate Ethereum conversion rate
EthPaidDetected Amount of payment in ETH that was detected for the invoice
EthUsdtAmount Amount in USDT (on Ethereum)
EthUsdtRate USDT conversion rate
EthUsdtPaidDetected Amount of payment in USDT that was detected for the invoice
EthDaiAmount Amount in DAI (on Ethereum)
EthDaiRate DAI conversion rate
EthDaiPaidDetected Amount of payment in DAI that was detected for the invoice
RddAmount Amount in ReddCoin
RddRate ReddCoin conversion rate
RddPaidDetected Amount of payment in ReddCoin that was detected for the invoice
RvnAmount Amount in Ravencoin
RvnRate Ravencoin conversion rate
RvnPaidDetected Amount of payment in Ravencoin that was detected for the invoice
XmrAmount Amount in Monero
XmrRate Monero conversion rate
XmrPaidDetected Amount of payment in Monero that was detected for the invoice
XtzAmount Amount in Tezos
XtzRate Tezos conversion rate
XtzPaidDetected Amount of payment in Tezos that was detected for the invoice
BtcSingleRate Bitcoin conversion rate
BtcSingleAmount Amount in BTC
BtcSingleTxId Transactions that a used to verify that invoice is complete
BtcSingleTransactionsMempool All transactions in mempool at the time of invoice
BtcSingleMempool Full Mempool state dump
BtcSinglePaidDetectedMempool Amount of payment (im mempool) in BTC that was detected for the invoice
XncAmount Amount in Xenios Coin
XncRate Xenios Coin conversion rate
XncPaidDetected Amount of payment in Xenios Coin that was detected for the invoice
KsmAmount Amount in Kusama
KsmRate Kusama conversion rate
KsmPaidDetected Amount of payment in Kusama that was detected for the invoice
OwcAmount Amount in Oduwa
OwcRate Oduwa conversion rate
OwcPaidDetected Amount of payment in Oduwa that was detected for the invoice

OPTIONS /get-invoices, /get-store-invoices

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Display/render invoices & Invoices by invoice ID

request(options, callback);

// Get invoice information

var request = require('request');

var options = {
    url: 'https://api.forgingblock.io/i/7hqLE4VN5eS5DyhZLzCVby/LTC/status?invoiceId=7hqLE4VN5eS5DyhZLzCVby&paymentMethodId=BTC&_=1557326366001'
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}
/* Get invoice information */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array();
$response = Requests::get('https://api.forgingblock.io/i/7hqLE4VN5eS5DyhZLzCVby/LTC/status?invoiceId=7hqLE4VN5eS5DyhZLzCVby&paymentMethodId=BTC&_=1557326366001', $headers);
// Get invoice information

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("GET", "https://api.forgingblock.io/i/7hqLE4VN5eS5DyhZLzCVby/LTC/status?invoiceId=7hqLE4VN5eS5DyhZLzCVby&paymentMethodId=BTC&_=1557326366001", nil)
	if err != nil {
		log.Fatal(err)
	}
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"htmlTitle":"Forging Block Invoice","defaultLang":"en","availableCryptos":[{"paymentMethodId":"BTC","cryptoImage":"/imlegacy/bitcoin.svg","link":"/i/LPKS9Yr6PFHaicrB3Hc9qJ/BTC","paymentMethodName":"Bitcoin","isLightning":false,"cryptoCode":"BTC"},{"paymentMethodId":"BTC_LightningLike","cryptoImage":"/imlegacy/bitcoin-lightning.svg","link":"/i/LPKS9Yr6PFHaicrB3Hc9qJ/BTC_LightningLike","paymentMethodName":"Bitcoin (Lightning)","isLightning":true,"cryptoCode":"BTC"},{"paymentMethodId":"LTC","cryptoImage":"/imlegacy/litecoin.svg","link":"/i/LPKS9Yr6PFHaicrB3Hc9qJ/LTC","paymentMethodName":"Litecoin","isLightning":false,"cryptoCode":"LTC"},{"paymentMethodId":"ETH","cryptoImage":"/imlegacy/ethereum.svg","link":"/i/LPKS9Yr6PFHaicrB3Hc9qJ/ETH","paymentMethodName":"Ethereum","isLightning":false,"cryptoCode":"ETH"}],"isModal":false,"isLightning":false,"cryptoCode":"BTC","invoiceId":"LPKS9Yr6PFHaicrB3Hc9qJ","btcAddress":"bc1q255c99a3dtezm0566jq0y4d0zw9pwzaa3asp5p","btcDue":"0.00101854","customerEmail":null,"requiresRefundEmail":false,"expirationSeconds":0,"status":"expired","merchantRefLink":"/","maxTimeSeconds":900,"storeName":null,"timeLeft":"00:00","rate":"$5,890.84 (USD)","orderAmount":"0.00101854","orderAmountFiat":"$6.00 (USD)","invoiceBitcoinUrl":"bitcoin:bc1q255c99a3dtezm0566jq0y4d0zw9pwzaa3asp5p?amount=0.00101854","invoiceBitcoinUrlQR":"bitcoin:bc1q255c99a3dtezm0566jq0y4d0zw9pwzaa3asp5p?amount=0.00101854","txCount":1,"btcPaid":"0.00000000","storeEmail":null,"orderId":null,"networkFee":0,"isMultiCurrency":false,"maxTimeMinutes":15,"paymentType":null,"paymentMethodId":"BTC","paymentMethodName":"Bitcoin","cryptoImage":"/imlegacy/bitcoin.svg","storeId":"4Y2otkewdai44wp23j7pbDwvt22E4a2oUnHJ8KYaGwKp","peerInfo":"033c6d5d7e5650f00a6e294c56605554af8e81fd048965ac6adedbf599d6e3214d@lightning.forgingblock.io:9735","rootPath":"/"}

GET /invoice?id= + Invoice ID or /i/ + Invoice ID

Show payform for a given invoice

GET /i/ + Invoice ID + / + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS)

Show payform only for preselected (in query string) cryptocurrency

Payform handles invoice status checking by itself

GET /i/ + Invoice ID + /eth-token/ + Token Code (DAI, USDT)

Show payform only for preselected (in query string) Ethereum token

GET /i/ + Invoice ID + /eos-token/ + Token Code (IQ)

Show payform only for preselected (in query string) EOS token

Payform handles invoice status checking by itself

GET /i/ + Invoice ID + / + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS) + / + status?invoiceId= + Invoice ID + &paymentMethodId= + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS) + &_= + number

Allows to get invoice information, when you know only invoice id (useful for a faster status pulling), also has all connected payment methods details (supported cryptocurrencies details)

GET /i/ + Invoice ID + /eth-token/ + Token Code (DAI, USDT) + / + status?invoiceId= + Invoice ID + &paymentMethodId= + Token Code (DAI, USDT) + &_= + number

GET /i/ + Invoice ID + /eos-token/ + Token Code (IQ) + / + status?invoiceId= + Invoice ID + &paymentMethodId= + Token Code (IQ) + &_= + number

Allows to get invoice information, when you know only invoice id (useful for a faster status pulling), also has all connected payment methods details (supported cryptocurrencies details)

This is a preferred way to check for invoice status and details, as that way you are not exposing your trade and token directly.

GET /create-demo-invoice

Create demo invoice, shows invoice example, non refundable

Query String Parameters

For GET /invoice?id= + Invoice ID or /i/ + Invoice ID

Query String Required Description
id= Invoice ID true payform for a given invoice

For GET /i/ + Invoice ID + / + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS) and GET /i/ + Invoice ID + / + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS) + / + status?invoiceId= + Invoice ID + &paymentMethodId= + Cryptocurrency Code (BTC, LTC, ETH, TRX, XMR, BCH, XTZ, EOS) + &_= + number

Query String Required Description
invoiceId= Invoice ID true invoice id
paymentMethodId= BTC true cryptocurrency code
&_= number true time in range from invoice creation to expiration or just a number

Extending invoice expiration time

curl 'https://api.forgingblock.io/v2/store-invoice-expiration' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60'

// Extend invoice expiration time for a store

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60';

var options = {
    url: 'https://api.forgingblock.io/v2/store-invoice-expiration',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
 /* Extend invoice expiration time for a store */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'trade' => '2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4',
    'time' => '60'
);
$response = Requests::post('https://api.forgingblock.io/v2/store-invoice-expiration', $headers, $data);
// Extend invoice expiration time for a store

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
)

func main() {
	client := &http.Client{}
	var data = strings.NewReader(`trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/v2/store-invoice-expiration", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"success":"Store expiration time updated"}

POST /v2/store-invoice-expiration

Set invoice expiration time

time parameter is a time in minutes, So, for example 30 is 30 minutes. Minimum value for time is 10, while maximum is 360 minutes

Parameters

Parameter In Type Required Description
trade body [string] true trade agreement id
time body [string] true time for expiration in minutes > 10 < 360

OPTIONS /v2/store-invoice-expiration

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Item Payment URLs (could be attached to button, images etc)

curl 'https://api.forgingblock.io/create-item-sale' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon'

curl 'https://api.forgingblock.io/check-item' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=24ea53d945692da5f353b4cd323e7826'

curl 'https://api.forgingblock.io/check-item-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=24ea53d945692da5f353b4cd323e7826'

curl 'https://api.forgingblock.io/items-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647'
// Create new Item Payment URL

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon';

var options = {
    url: 'https://api.forgingblock.io/create-item-sale',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Check Item Payment Details
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'item=24ea53d945692da5f353b4cd323e7826';

var options = {
    url: 'https://api.forgingblock.io/check-item',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Display Details for All Ever Created Payment Urls
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647';

var options = {
    url: 'https://api.forgingblock.io/items-list',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Create new Item Payment URL */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
    'amount' => '550',
    'currency' => 'rub',
    'description' => 'spoon',
    'email' => 'test@fastmail.mx',
	'count' => '2',
	'name'=> 'bestspoon'
);
$response = Requests::post('https://api.forgingblock.io/create-item-sale', $headers, $data);

/* Check Item Payment Details */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'item' => '24ea53d945692da5f353b4cd323e7826'
);
$response = Requests::post('https://api.forgingblock.io/check-item', $headers, $data);

/* Display Details for All Ever Created Payment Urls */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647'
);
$response = Requests::post('https://api.forgingblock.io/items-list', $headers, $data);
// Create new Item Payment URL

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-item-sale", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Check Item Payment Details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{item=24ea53d945692da5f353b4cd323e7826}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/check-item", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Check Item Payment Details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/items-list", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"item":"24ea53d945692da5f353b4cd323e7826","amount":"550","currency":"RUB","description":"spoon","url":"https://api.forgingblock.io/item/24ea53d945692da5f353b4cd323e7826"}
{"item":"24ea53d945692da5f353b4cd323e7826","amount":"550","currency":"RUB","description":"spoon","status":false,"invoices":null}
{"status":false}
{"items":[{"item":"ccfdd6b43b2b6ca4f76bb7f9bbe820fb","email":"test@fastmail.mx","currency":"USD","amount":"550","description":"spoon","invoices":null,"count":2},{"item":"6727f9d6bea3905b8358e3ce33cc7d04","email":"test@fastmail.mx","currency":"USD","amount":"5050","description":"table","invoices":null,"count":1},{"item":"13244be7359c3ec4281eaa79a7cb4ab7","email":"test@fastmail.mx","currency":"USD","amount":"150","description":"cake","invoices":["JbskdTw7GuEvgg44KXZVmF"],"count":1},{"item":"948da028ed35efb14b30f0f3155a088f","email":"test@fastmail.mx","currency":"USD","amount":"250","description":"lake","invoices":null,"count":2}]}

POST /create-item-sale

Creates new item Payment URL

Payment URL could be attached to any button, image or etc. Ones you open a payment URL new invoice for an item would be generated. And after the last item (check count parameter) would be paid new invoice generation would stop and item status would change to true

It could useful for static websites.

POST /check-item

Check item payment details

POST /check-item-status

Check item status

After the last item (check count parameter) would be paid new invoice generation would stop and item status would change to true

POST /items-list

Details for All Ever Created Payment Urls

GET /item/ + Item ID

Generate invoice for certain item or show item details (ones all paid)

Parameters

For /create-item-sale

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
currency body [string] true currency
amount body [string] true amount for the price
description body [string] true item description
name body [string] true item name
count body [boolean] true item availability count
email body [string] true email for notification

For /check-item and /check-item-status

Parameter In Type Required Description
item body [string] true item id

For /items-list

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Response Parameters

For /create-item-sale, /check-item, /check-item-status

Parameter Description
item item id
amount amount for the price
description item description
status item status (changes once the last item payed)
currency currency
invoices array with all generated invoices
url item payment url

For /items-list

Array with values for: item, email, currency, amount, description, invoices, count

Parameter Description
item item id
amount amount for the price
description item description
status item status (changes once the last item payed)
currency currency
invoices array with all generated invoices
url item payment url

OPTIONS /create-item-sale, /check-item, /check-item-status

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Crowdfunding

curl 'https://api.forgingblock.io/create-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000&currency=rub&description=cake&email=test%40fastmail.mx&name=bestcake'

curl 'https://api.forgingblock.io/check-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'

curl 'https://api.forgingblock.io/check-crowdfunding-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'

curl 'https://api.forgingblock.io/crowdfunds-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647'

curl 'https://api.forgingblock.io/crowdfunding-donations' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10'
// Create new Crowdfunding

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000&currency=rub&description=cake&email=test%40fastmail.mx&name=bestcake';

var options = {
    url: 'https://api.forgingblock.io/create-crowdfunding',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Check Crowdfunding Details
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'fund=58e85d60e308043559c8ac9d2efb3c7cae10';

var options = {
    url: 'https://api.forgingblock.io/check-crowdfunding',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Display Details for All Ever Created Crowdfunds
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647';

var options = {
    url: 'https://api.forgingblock.io/crowdfunds-list',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);


// Display Donations Details
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10';

var options = {
    url: 'https://api.forgingblock.io/crowdfunding-donations',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Create new Crowdfunding */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
    'amount' => '1000',
    'currency' => 'rub',
    'description' => 'cake',
	'email' => 'test@fastmail.mx',
	'name'=> 'bestcake'
);
$response = Requests::post('https://api.forgingblock.io/create-crowdfunding', $headers, $data);


/* Check Crowdfunding Details */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'fund' => '58e85d60e308043559c8ac9d2efb3c7cae10'
);
$response = Requests::post('https://api.forgingblock.io/check-crowdfunding', $headers, $data);

/* Display Details for All Ever Created Crowdfunds */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647'
);
$response = Requests::post('https://api.forgingblock.io/crowdfunds-list', $headers, $data);

/* Display Donations Details */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
	'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
	'fund' => '58e85d60e308043559c8ac9d2efb3c7cae10'
);
$response = Requests::post('https://api.forgingblock.io/crowdfunding-donations', $headers, $data);
// Create new Crowdfunding

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000&currency=rub&description=cake&email=test%40fastmail.mx&name=bestcake}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-crowdfunding", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}


// Check Crowdfunding Details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{fund=58e85d60e308043559c8ac9d2efb3c7cae10}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/check-crowdfunding", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Display Details for All Ever Created Crowdfunds

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/crowdfunds-list", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Display Donations Details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/crowdfunding-donations", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"fund":"58e85d60e308043559c8ac9d2efb3c7cae10","amount":"1000","currency":"RUB","description":"spoon","email":"test@fastmail.mx"}
{"fund":"58e85d60e308043559c8ac9d2efb3c7cae12","amount":"1000","currency":"RUB","description":"spoon","status":true,"invoices":["AiTGALf9M2ij6xHk7Xh5UP","NNst8RxtiorxXuVyVdfGqq","CyW1HdAKvKxRCccNVXgNfS","MJbq984yxcwchCneCMr1pK","HM8Jjuno6TSCe3jGYKV3nq"]
{"status":false}
{"funds":[{"fund":"386b1ebd78dc0fc962706a33a9faa4705b78","email":"test@fastmail.mx","currency":"RUB","amount":"1000","description":"cake","invoices":null},{"fund":"8d4e01c49572fa02d82c31281ba2c928eb40","email":"test@fastmail.mx","currency":"RUB","amount":"1000","description":"cake","invoices":null},{"fund":"06c024a312279c7d21b01fbbb19bc7bedfe6","email":"test@fastmail.mx","currency":"RUB","amount":"1000","description":"cake","invoices":["5dB3RVM7nnckEwKRcvVqoQ"]}]}
{"donations":[{"invoice":"5dB3RVM7nnckEwKRcvVqoQ","created":"2019-10-25T14:29:32.000Z","participantEmail":"1@test.me","status":"complete"}]}

POST /create-crowdfunding

Creates new Crowdfunding

Crowdfunding used to raise certain amount. Once amount is raised crowdfunding status changes to true and GET request with fund ID and amount would stop to generate new invoices

POST /check-crowdfunding

Check crowdfunding details

POST /check-crowdfunding-status

Check crowdfunding status

Once amount is raised crowdfunding status changes to true and GET request with fund ID and amount would stop to generate new invoices

POST /crowdfunds-list

Details for All Ever Created Crowdfunds

POST /crowdfunding-donations

Crowdfunding Donations Details

Displays private information with participants of crowdfunding (donations), includes participant email (email that was provided for the invoice)

GET /fund/ + Crowdfunding ID + / + Amount

Generates invoice for any amount to participate in the Crowdfunding

You could design images or buttons and specify exact amount inside URL if there any need of it Ones crowdfunding amount is raised invoice generation would stop, and it would show crowdfunding details

Parameters

For /create-crowdfunding

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
currency body [string] true currency
amount body [string] true amount for the price
description body [string] true crowdfunding description
name body [string] true crowdfunding campaign name
email body [string] true email for notification

For /check-crowdfunding and /check-crowdfunding-status

Parameter In Type Required Description
fund body [string] true crowdfunding id

For /crowdfunds-list

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token

For /crowdfunding-donations

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
fund body [string] true crowdfunding id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Response Parameters

For /create-crowdfunding, /check-crowdfunding and /check-crowdfunding-status

Parameter Description
fund crowdfunding id
amount amount to raise (goal)
description crowdfunding description or purpose
status crowdfunding status (changes once amount is collected)
currency currency
invoices array with all generated invoices
balance total amount collected

For /crowdfunds-list

Array with values for: Crowdfunding ID (fund), email, currency, amount, description, invoices IDs

For /crowdfunding-donations

Array with values for: Invoice ID, Invoice Creation Time, Participant's email, Invoice Status

OPTIONS /create-crowdfunding, /check-crowdfunding and /check-crowdfunding-status

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Attaching image to the item sale or crowdfunding

curl --location --request POST 'https://api.forgingblock.io/upload-image' --header 'trade:myTrageAgreement' --header 'Content-Type: multipart/form-data' --form 'image=@/home/test/Images/image.jpg'

curl 'https://api.forgingblock.io/get-image' -H 'Content-Type: application/x-www-form-urlencoded'  --data 'image=6b7c4e37754354dedba1c8a44dfc'

curl 'https://api.forgingblock.io/attach-image' -H 'Content-Type: application/x-www-form-urlencoded'  --data 'image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement'
// Upload image

var request = require('request');

var headers = {
    'trade': 'myTrageAgreement',
    'Content-Type': 'multipart/form-data'
};

var options = {
    url: 'https://api.forgingblock.io/upload-image',
    method: 'POST',
    headers: headers
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Get image
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'image=6b7c4e37754354dedba1c8a44dfc';

var options = {
    url: 'https://api.forgingblock.io/get-image',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);


// Attach image to item-sale or crowdfunding
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement';

var options = {
    url: 'https://api.forgingblock.io/attach-image',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Upload image */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'trade' => 'myTrageAgreement',
    'Content-Type' => 'multipart/form-data'
);
$response = Requests::post('https://api.forgingblock.io/upload-image', $headers);

/* Get image */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'image' => '6b7c4e37754354dedba1c8a44dfc'
);
$response = Requests::post('https://api.forgingblock.io/get-image', $headers, $data);

/* Attach image to item-sale or crowdfunding */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'image' => '6b7c4e37754354dedba1c8a44dfc',
    'id' => '6727f9d6bea3905b8358e3ce33cc7d04',
    'store' => 'HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y',
    'trade:myTrageAgreement' => ''
);
$response = Requests::post('https://api.forgingblock.io/attach-image', $headers, $data);
/// Upload image

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/upload-image", nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("trade", "myTrageAgreement")
	req.Header.Set("Content-Type", "multipart/form-data")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Get image
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
)

func main() {
	client := &http.Client{}
	var data = strings.NewReader(`image=6b7c4e37754354dedba1c8a44dfc`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/get-image", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Attach image to item-sale or crowdfunding
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
)

func main() {
	client := &http.Client{}
	var data = strings.NewReader(`image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/attach-image", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"image":"6b7c4e37754354dedba1c8a44dfc"}
{"base64":"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","mimetype":"image/png"}
{"success": "Image was successfully attached to the: 6727f9d6bea3905b8358e3ce33cc7d04"}

POST /upload-image

Upload image

Uploads image. Image could be attached later to the payment url (item-sale) or to the crowdfunding, uses multipart/form-data

POST /get-image

Get image mimetype and its base64 representation

POST /attach-image

Attach image id to (item-sale) or to the crowdfunding

Attach image id to (item-sale) or to the crowdfunding. Every new invoice generated that has attached image would have imageId parametrs in status response

Subscription

curl 'https://api.forgingblock.io/create-subscription'  -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&days=1'

curl 'https://api.forgingblock.io/check-subscription'  -H 'Content-Type: application/x-www-form-urlencoded' --data 'subscription=458d16401c85fc17c4e4b64016c09e29'

curl 'https://api.forgingblock.io/check-subscription-status'  -H 'Content-Type: application/x-www-form-urlencoded' --data 'subscription=458d16401c85fc17c4e4b64016c09e29'

curl 'https://api.forgingblock.io/subscriptions-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647'
// Create New Subscription

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&days=1';

var options = {
    url: 'https://api.forgingblock.io/create-subscription',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Check Subscription Details
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'subscription=458d16401c85fc17c4e4b64016c09e29';

var options = {
    url: 'https://api.forgingblock.io/check-subscription',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Display Details for All Ever Created Subscriptions
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647';

var options = {
    url: 'https://api.forgingblock.io/subscriptions-list',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
/* Create New Subscription */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
    'amount' => '550',
    'currency' => 'rub',
    'description' => 'spoon',
    'email' => 'test@fastmail.mx',
	'count' => '2',
	'days' => '1'
);
$response = Requests::post('https://api.forgingblock.io/create-subscription', $headers, $data);

/* Check Subscription Details */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'subscription' => '458d16401c85fc17c4e4b64016c09e29'
);
$response = Requests::post('https://api.forgingblock.io/check-subscription', $headers, $data);

/* Display Details for All Ever Created Subscriptions */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
    'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
    'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647'
);
$response = Requests::post('https://api.forgingblock.io/subscriptions-list', $headers, $data);
// Create New Subscription

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550&currency=rub&description=spoon&email=test%40fastmail.mx&count=2&days=1}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-subscription", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Check Subscription Details

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{subscription=458d16401c85fc17c4e4b64016c09e29}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/check-subscription", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Display Details for All Ever Created Subscriptions

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/subscriptions-list", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"subscription":"458d16401c85fc17c4e4b64016c09e29","amount":"1550","currency":"RUB","description":"nice_service","status":false,"invoices":["RbgRj6HYQhDRZW6yffoYAD","5ivvuTrvcSx7Uegivty9pN"],"days":1}
{"status":false}
{"subscriptions":[{"subscription":"bdd6e43d9babc54968aff49382731850","email":"test@fastmail.mx","currency":"USD","amount":"60550","description":"rocket","invoices":null,"days":1},{"subscription":"ab1c06b07cc154a840ac71c60ba2ee9e","email":"test@fastmail.mx","currency":"RUB","amount":"34550","description":"car","invoices":null,"days":1}]}

POST /create-subscription

Creates new Subscription

Subscription URL could be attached to any button, image or etc. Ones you open a subscription URL new invoice for an subscription would be generated. And after the last subscription (check count parameter) would be paid new invoice generation would stop and item status would change to true. days parameter is number of days to remind pay for subscription on customer email. So for ex. 15 would send email remind to pay for subscription every fifteen days.

POST /check-subscription

Check subscription details

POST /check-subscription-status

Check subscription status

After the last subscription (check count parameter) would be paid new invoice generation would stop and subscription status would change to true

POST /subscriptions-list

Details for All Ever Created Subscriptions

GET /subscription/ + Subscription ID

Generate invoice for certain subscription or show subscription details (ones all paid)

Parameters

For /create-subscription

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token
currency body [string] true currency
amount body [string] true amount for the price
description body [string] true item description
count body [boolean] true item availability count
email body [string] true email for notification
days body [string] true days to send remind on email

For /check-subscription and /check-subscription-status

Parameter In Type Required Description
subscription body [string] true subscription id

For /subscriptions-list

Parameter In Type Required Description
trade body [string] true trade agreement id
token body [string] true token

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Response Parameters

For /create-subscription, /check-subscription, /check-subscription-status

Parameter Description
subscription subscription id
amount amount for the price
description item description
status item status (changes once the last item payed)
currency currency
invoices array with all generated invoices
url subscription url
days days to send remind on email

For /subscriptions-list

Array with values for: subscription (ID), email, currency, amount, description, invoices, days

OPTIONS /create-subscription, /check-subscription, /check-subscription-status

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Account Control

Account Management

curl 'https://api.forgingblock.io/reset-password' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io'

curl 'https://api.forgingblock.io/change-email' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io'

curl 'https://api.forgingblock.io/change-password' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40forgingblock.io&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh'
// Reset password

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io';

var options = {
    url: 'https://api.forgingblock.io/reset-password',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Change email
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io';

var options = {
    url: 'https://api.forgingblock.io/change-email',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Change password

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh';

var options = {
    url: 'https://api.forgingblock.io/change-password',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

/* Reset password */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io'
);
$response = Requests::post('https://api.forgingblock.io/reset-password', $headers, $data);

/* Change email */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'newemail' => 'test2@forgingblock.io'
);
$response = Requests::post('https://api.forgingblock.io/change-email', $headers, $data);

/* Change password */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'AeNu3miG7nahg',
    'newpassword' => 'myhardpwdAeng2uabohcehhh'
);
$response = Requests::post('https://api.forgingblock.io/change-password', $headers, $data);
// Reset password

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/reset-password", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Change email

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/change-email", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Set("DNT", "1")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Change password

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/change-password", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"success":"Check email inbox for reset link"}
{"success":"Check email inbox for email change link"}
{"success":"Password has been changed"}

POST /reset-password

Used to reset password

POST /change-email

Used to change email

POST /change-password

Used to change password

Password requirements:

Do not use common sequences or your private details, add another word or two, consider using lowercase and uppercase and special symbols

Parameters

Parameter In Type Required Description Scope
email body [string] true email reset-password, change-email, change-password
password body [string] true strong password (zxcvbn score >= 1) change-email, change-password
newpassword body [string] true new strong password (zxcvbn score >= 1) change-password
newemail body [string] true new email for password restore change-email

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /reset-password, /change-email and /change-password

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Account Informaton

curl 'https://api.forgingblock.io/provide-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io'
curl 'https://api.forgingblock.io/get-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce'
// Provide Business Information

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io';

var options = {
    url: 'https://api.forgingblock.io/provide-business-details',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Get Business Information

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=AeNu3miG7nahg';

var options = {
    url: 'https://api.forgingblock.io/get-business-details',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

/* Provide Business Information */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
	'business' => 'forgingblock',
	'url' => 'https://forgingblock.io',
);
$response = Requests::post('https://api.forgingblock.io/provide-business-details', $headers, $data);

/* Get Business Information */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'AeNu3miG7nahg'
);
$response = Requests::post('https://api.forgingblock.io/get-business-details', $headers, $data);
// Provide Business Information

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/provide-business-details", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Set("DNT", "1")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Get Business Information

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=AeNu3miG7nahg}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/get-business-details", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{'success': "New business information received"}
{"business":"forgingblock3","url":"https://api.forgingblock.io"}

POST /provide-business-details

Provide information about business

POST /get-business-details

Get information about business

Parameters

Parameter In Type Required Description Scope
email body [string] true email provide-business-details, get-business-details
password body [string] true strong password (zxcvbn score >= 1) provide-business-details, get-business-details
business body [string] true business name provide-business-details
url body [string] true website information provide-business-details

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /provide-business-details, get-business-details

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Backward Compatibility with BitPay API

Backward compatibility allows to use invoicing and authorization similar way as for BitPay API

POST /invoices

Creates an invoice for the calling merchant.

Fully compatible with BitPay API

GET /invoices

Retrieves invoices for the calling merchant filtered by query.

Fully compatible with BitPay API

POST /create-pairing

Used to create pairing code

curl 'https://api.forgingblock.io/create-pairing' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F'
var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};

var dataString = 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F';

var options = {
    url: 'https://api.forgingblock.io/create-pairing',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);


<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce',
    'store' => 'G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F'
);
$response = Requests::post('https://api.forgingblock.io/create-pairing', $headers, $data);
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/create-pairing", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"pairng":"2pqz9hz"}

POST /tokens

Used to receive API access using pairing

Parameters

For /tokens

Parameter In Type Required Description
guid body [string] true parameter to enforce idempotence for POST requests
id body [string] true client id
label body [string] true label for a client
pairingCode body [string] true pairing code

For /create-pairing

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
store body [string] true store id

Responses

Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

OPTIONS /tokens and /create-pairing

Response without content, but with supported methods

Status Meaning Description Schema
204 No Content No Content None

Using API in client-side applications

Sometimes when its security reliable in some client-side applications cookie authentication could be used.

Cookie is valid for 6 hours and it allows to avoid providing email and password or trade and token continuously for certain api calls.

However store param should be provided instead of trade and token

All calls except /withdraw-ln support cookie.

curl 'https://api.forgingblock.io/signin' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'email=test@forgingblock.io&password=myhardpwdAeng2uabohce'

curl 'https://api.forgingblock.io/signout'
// Sign In

var request = require('request');

var headers = {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
};

var dataString = 'email=test@forgingblock.io&password=myhardpwdAeng2uabohce';

var options = {
    url: 'https://api.forgingblock.io/signin',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

// Sign Out

var request = require('request');

var options = {
    url: 'https://api.forgingblock.io/signout'
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

/* Sign In */

<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
);
$data = array(
    'email' => 'test@forgingblock.io',
    'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.forgingblock.io/signin', $headers, $data);

/* Sign Out */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array();
$response = Requests::get('https://api.forgingblock.io/signout', $headers);
// Sign In

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	var data = []byte(`{email=test@forgingblock.io&password=myhardpwdAeng2uabohce}`)
	req, err := http.NewRequest("POST", "https://api.forgingblock.io/signin", data)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

// Sign Out
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("GET", "https://api.forgingblock.io/signout", nil)
	if err != nil {
		log.Fatal(err)
	}
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

Response examples:

{"success":"Sign In success"}
{"success":"Sign Out success"}

POST /signin

Sets 6 hours long cookie

For testing purposes /test/login.html webpage could be use to login.

Cookie could be find under name __forgingblock in cookie store

GET or POST /signout

Sets expired cookie

For /signin

Parameter In Type Required Description
email body [string] true email
password body [string] true strong password (zxcvbn score >= 1)
Status Meaning Description Schema
200 OK Request has succeeded None
400 Bad Request Malformed request syntax None
401 Unauthorized Authorization has been refused None
429 Too Many Requests Rate limiting: Too Many Requests None
422 Unprocessable Entity Unable to be processed None

Integrations

We provide several plugins for popular e-commerce software.

Supported e-commerce engines:

Integration with WooCommerce

Integration with PrestaShop

Integration with OpenCart

Integration with Zen Cart

Integration with Magento 2

Integration with Drupal Commerce 2

Integration osCommerce 2

Integration Shopify

Create Pairing Code

Generated code is located at the bottom of the form