Payment Assets
curl --request GET \
--url https://payments.shakesco.com/assets \
--header 'Authorization: Bearer <token>'import requests
url = "https://payments.shakesco.com/assets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://payments.shakesco.com/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://payments.shakesco.com/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://payments.shakesco.com/assets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://payments.shakesco.com/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://payments.shakesco.com/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"assets": [
{ "asset": "BTC", "type": "crypto", "label": "Bitcoin (BTC)" },
{ "asset": "ETH", "type": "crypto", "label": "Ethereum (ETH)" },
{ "asset": "USDT", "type": "crypto", "label": "Tether (USDT)" },
{ "asset": "SATS", "type": "crypto", "label": "Lightning (SATS)" },
{ "asset": "LOYALTY", "type": "loyalty", "label": "Loyalty token (SHK)" },
{ "asset": "NVDAon", "type": "stock", "label": "Nvidia Corp (NVDAon)", "followed": true },
{ "asset": "AAPLon", "type": "stock", "label": "Apple Inc. (AAPLon)", "followed": false }
]
}
{
"error": "Invalid API key"
}
{
"error": "Service temporarily unavailable"
}
General
Payment Assets
Get every asset you can ask to be paid in when you create an invoice
GET
/
assets
Payment Assets
curl --request GET \
--url https://payments.shakesco.com/assets \
--header 'Authorization: Bearer <token>'import requests
url = "https://payments.shakesco.com/assets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://payments.shakesco.com/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://payments.shakesco.com/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://payments.shakesco.com/assets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://payments.shakesco.com/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://payments.shakesco.com/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"assets": [
{ "asset": "BTC", "type": "crypto", "label": "Bitcoin (BTC)" },
{ "asset": "ETH", "type": "crypto", "label": "Ethereum (ETH)" },
{ "asset": "USDT", "type": "crypto", "label": "Tether (USDT)" },
{ "asset": "SATS", "type": "crypto", "label": "Lightning (SATS)" },
{ "asset": "LOYALTY", "type": "loyalty", "label": "Loyalty token (SHK)" },
{ "asset": "NVDAon", "type": "stock", "label": "Nvidia Corp (NVDAon)", "followed": true },
{ "asset": "AAPLon", "type": "stock", "label": "Apple Inc. (AAPLon)", "followed": false }
]
}
{
"error": "Invalid API key"
}
{
"error": "Service temporarily unavailable"
}
For the complete documentation index, see llms.txt.
Retrieve the assets you can pass as
asset when you create an invoice. The list has three kinds of asset:
- Crypto:
BTC,ETH,USDTandSATS. - Loyalty:
LOYALTY, your own loyalty token. It is listed only when your business has one. - Stock: one entry for every stock Shakesco supports, largest company first. The value to pass is the stock’s symbol, for example
AAPLon.
Which stocks you can ask for
You can name any stock in this list on an invoice, whether or not it is on your watchlist. Naming it is how you accept it for that invoice. Your watchlist matters when an invoice has noasset. The payer then chooses what to pay with, and for stocks they can only choose ones on your watchlist. Each stock in this list has a followed field that tells you whether it is on yours. Add a stock to your watchlist in the Shakesco app to let customers pay with it on those invoices.
Response
array
Every asset you can put on an invoice.
Show Asset fields
Show Asset fields
string
The value to pass as
asset when creating an invoice. Case sensitive.string
"crypto", "loyalty", or "stock"string
A name to show people, for example
"Apple Inc. (AAPLon)" or "Loyalty token (SHK)"boolean
Stocks only.
true when the stock is on your watchlist, so a payer can pick it on an invoice that has no asset. You can name the stock on an invoice either way.{
"assets": [
{ "asset": "BTC", "type": "crypto", "label": "Bitcoin (BTC)" },
{ "asset": "ETH", "type": "crypto", "label": "Ethereum (ETH)" },
{ "asset": "USDT", "type": "crypto", "label": "Tether (USDT)" },
{ "asset": "SATS", "type": "crypto", "label": "Lightning (SATS)" },
{ "asset": "LOYALTY", "type": "loyalty", "label": "Loyalty token (SHK)" },
{ "asset": "NVDAon", "type": "stock", "label": "Nvidia Corp (NVDAon)", "followed": true },
{ "asset": "AAPLon", "type": "stock", "label": "Apple Inc. (AAPLon)", "followed": false }
]
}
{
"error": "Invalid API key"
}
{
"error": "Service temporarily unavailable"
}
A customer can only pay with an asset they hold. An invoice that asks for a stock or for your loyalty token can be paid only by a customer who owns enough of it, so use these for customers you know hold them.