Get accounting yield period summary
curl --request GET \
--url https://sandbox.groundtech.co/v2/accounting/yield/period-summary \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/accounting/yield/period-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.groundtech.co/v2/accounting/yield/period-summary', 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://sandbox.groundtech.co/v2/accounting/yield/period-summary",
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://sandbox.groundtech.co/v2/accounting/yield/period-summary"
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://sandbox.groundtech.co/v2/accounting/yield/period-summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/accounting/yield/period-summary")
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{
"periodStart": "2026-05-01T00:00:00.000Z",
"periodEnd": "2026-06-01T00:00:00.000Z",
"scope": "wallet",
"portfolioWalletId": "b1c2d3e4-0000-4000-8000-000000000001",
"costBasisMethod": "fifo",
"status": "exact",
"reason": null,
"summary": {
"startingValueUsd": "10000.000000",
"endingValueUsd": "10482.310000",
"externalDepositsUsd": "250.000000",
"externalPayoutsUsd": "0.000000",
"groundCreditsUsd": "0.000000",
"explicitFeesUsd": "1.120000",
"protocolSlippageUsd": "0.000000",
"realizedPerformanceUsd": "41.250000",
"unrealizedPerformanceUsd": "192.180000",
"investmentPerformanceUsd": "233.430000",
"grossYieldGeneratedUsd": "234.550000",
"netYieldEarnedUsd": "233.430000",
"reconciliationStatus": "exact"
},
"yieldSources": [
{
"walletId": "b1c2d3e4-0000-4000-8000-000000000001",
"walletLabel": "Corporate Treasury",
"yieldSourceId": "syrup-usdc",
"yieldSourceLabel": "Syrup USDC",
"costBasisMethod": "fifo",
"startingNativeUnits": "4000000000",
"endingNativeUnits": "4212430000",
"startingValuationUsd": "4000.000000",
"endingValuationUsd": "4212.430000",
"startingValuedAt": "2026-05-01T00:00:00.000Z",
"endingValuedAt": "2026-06-01T00:00:00.000Z",
"startingPriceUsd": "1.000000",
"endingPriceUsd": "1.053108",
"startingPriceSource": "reference_price",
"endingPriceSource": "reference_price",
"startingValueUsd": "4000.000000",
"endingValueUsd": "4212.430000",
"entryValueUsd": "4000.000000",
"exitValueUsd": "4212.430000",
"realizedPerformanceUsd": "0.000000",
"unrealizedPerformanceUsd": "212.430000",
"explicitFeesUsd": "0.000000",
"protocolSlippageUsd": "0.000000",
"groundCreditsUsd": "0.000000",
"grossYieldGeneratedUsd": "212.430000",
"netYieldEarnedUsd": "212.430000",
"timeWeightedCapitalUsd": "4018.250000",
"netPeriodPerformanceBps": "528.665588",
"netPeriodPerformanceApyBps": "6225.204231",
"grossPeriodPerformanceApyBps": "6225.204231",
"status": "exact",
"reason": null
}
]
}{
"error": "start must be earlier than end",
"code": "validation_error"
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}Accounting
Get accounting yield period summary
Returns an accounting performance summary for a period, scoped to either one wallet or the authenticated organization. Period performance metrics can be negative and are distinct from customer-facing displayed yield.
GET
/
v2
/
accounting
/
yield
/
period-summary
Get accounting yield period summary
curl --request GET \
--url https://sandbox.groundtech.co/v2/accounting/yield/period-summary \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/accounting/yield/period-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.groundtech.co/v2/accounting/yield/period-summary', 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://sandbox.groundtech.co/v2/accounting/yield/period-summary",
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://sandbox.groundtech.co/v2/accounting/yield/period-summary"
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://sandbox.groundtech.co/v2/accounting/yield/period-summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/accounting/yield/period-summary")
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{
"periodStart": "2026-05-01T00:00:00.000Z",
"periodEnd": "2026-06-01T00:00:00.000Z",
"scope": "wallet",
"portfolioWalletId": "b1c2d3e4-0000-4000-8000-000000000001",
"costBasisMethod": "fifo",
"status": "exact",
"reason": null,
"summary": {
"startingValueUsd": "10000.000000",
"endingValueUsd": "10482.310000",
"externalDepositsUsd": "250.000000",
"externalPayoutsUsd": "0.000000",
"groundCreditsUsd": "0.000000",
"explicitFeesUsd": "1.120000",
"protocolSlippageUsd": "0.000000",
"realizedPerformanceUsd": "41.250000",
"unrealizedPerformanceUsd": "192.180000",
"investmentPerformanceUsd": "233.430000",
"grossYieldGeneratedUsd": "234.550000",
"netYieldEarnedUsd": "233.430000",
"reconciliationStatus": "exact"
},
"yieldSources": [
{
"walletId": "b1c2d3e4-0000-4000-8000-000000000001",
"walletLabel": "Corporate Treasury",
"yieldSourceId": "syrup-usdc",
"yieldSourceLabel": "Syrup USDC",
"costBasisMethod": "fifo",
"startingNativeUnits": "4000000000",
"endingNativeUnits": "4212430000",
"startingValuationUsd": "4000.000000",
"endingValuationUsd": "4212.430000",
"startingValuedAt": "2026-05-01T00:00:00.000Z",
"endingValuedAt": "2026-06-01T00:00:00.000Z",
"startingPriceUsd": "1.000000",
"endingPriceUsd": "1.053108",
"startingPriceSource": "reference_price",
"endingPriceSource": "reference_price",
"startingValueUsd": "4000.000000",
"endingValueUsd": "4212.430000",
"entryValueUsd": "4000.000000",
"exitValueUsd": "4212.430000",
"realizedPerformanceUsd": "0.000000",
"unrealizedPerformanceUsd": "212.430000",
"explicitFeesUsd": "0.000000",
"protocolSlippageUsd": "0.000000",
"groundCreditsUsd": "0.000000",
"grossYieldGeneratedUsd": "212.430000",
"netYieldEarnedUsd": "212.430000",
"timeWeightedCapitalUsd": "4018.250000",
"netPeriodPerformanceBps": "528.665588",
"netPeriodPerformanceApyBps": "6225.204231",
"grossPeriodPerformanceApyBps": "6225.204231",
"status": "exact",
"reason": null
}
]
}{
"error": "start must be earlier than end",
"code": "validation_error"
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Wallet ID for a wallet-scoped report. Provide exactly one of walletId or scope=organization.
Use organization for an organization-wide report. Provide exactly one of walletId or scope=organization.
Available options:
organization Inclusive ISO-8601 UTC period start.
Exclusive ISO-8601 UTC period end.
Cost basis method used for realized performance calculations.
Available options:
fifo, average_cost Response
Yield period summary
Available options:
wallet, all Available options:
fifo, average_cost Available options:
exact, incomplete Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I