Organization
Check payout eligibility
Pre-check whether a payout would succeed right now, without executing anything.
Returns the flat/tradable state, the current payout cycle (starting balance, cycle profit, payout count), any locked loss floor, and the full consistency status — including the daily cap, the best day, and plain-language reasons whenever the rule is currently blocking.
Use this to show traders their payout readiness, or gate your own payout approval flow before calling the payout endpoint with enforceConsistency.
GET
/
v1
/
organization
/
accounts
/
{accountId}
/
payout-eligibility
Check payout eligibility
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility \
--header 'Authorization: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility', 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://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility",
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: <api-key>"
],
]);
$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://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"accountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"eligible": false,
"flat": true,
"status": "InProgress",
"currentBalance": 52500,
"cycleStartingBalance": 50000,
"cycleProfit": 2500,
"payoutCount": 0,
"lossFloorBalance": null,
"consistency": {
"enforced": true,
"gate": "funded_payout",
"eligible": false,
"consistency_pct": 50,
"base_mode": "cycle_profit",
"base_amount": 2500,
"daily_cap": 1290,
"buffer": 40,
"best_day_pnl": 1290,
"best_day": "2026-07-10",
"profitable_days": 3,
"min_profitable_days": 0,
"reference_pnl": 2500,
"blocking_days": [
{
"trading_day": "2026-07-10",
"net_pnl": 1290
}
],
"reasons": [
"Best day $1,290.00 reaches the $1,290.00 daily cap (50% of $2,500.00 + $40.00 buffer). Spread gains across more days to dilute it."
]
}
}
}{
"success": false,
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication required",
"code": "UNAUTHORIZED"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Account not found in your organization",
"code": "ACCOUNT_NOT_FOUND"
}{
"success": false,
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"code": "INTERNAL_ERROR"
}Authorizations
BearerX-API-Key
JWT Bearer token for user session auth. Format: "Bearer {token}". Used by User and Organization endpoints.
Path Parameters
Trading account to check
Response
Eligibility computed
Example:
true
Show child attributes
Show child attributes
Example:
{
"accountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"eligible": false,
"flat": true,
"status": "InProgress",
"currentBalance": 52500,
"cycleStartingBalance": 50000,
"cycleProfit": 2500,
"payoutCount": 0,
"lossFloorBalance": null,
"consistency": {
"enforced": true,
"gate": "funded_payout",
"eligible": false,
"consistency_pct": 50,
"base_mode": "cycle_profit",
"base_amount": 2500,
"daily_cap": 1290,
"buffer": 40,
"best_day_pnl": 1290,
"best_day": "2026-07-10",
"profitable_days": 3,
"min_profitable_days": 0,
"reference_pnl": 2500,
"blocking_days": [
{
"trading_day": "2026-07-10",
"net_pnl": 1290
}
],
"reasons": [
"Best day $1,290.00 reaches the $1,290.00 daily cap (50% of $2,500.00 + $40.00 buffer). Spread gains across more days to dilute it."
]
}
}
Related topics
Payout queue — bulk payout eligibilityList roles (system presets + your custom roles)Execute a payout (balance withdrawal)ErrorsHealth check endpoint⌘I
Check payout eligibility
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility \
--header 'Authorization: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility', 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://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility",
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: <api-key>"
],
]);
$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://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/accounts/{accountId}/payout-eligibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"accountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"eligible": false,
"flat": true,
"status": "InProgress",
"currentBalance": 52500,
"cycleStartingBalance": 50000,
"cycleProfit": 2500,
"payoutCount": 0,
"lossFloorBalance": null,
"consistency": {
"enforced": true,
"gate": "funded_payout",
"eligible": false,
"consistency_pct": 50,
"base_mode": "cycle_profit",
"base_amount": 2500,
"daily_cap": 1290,
"buffer": 40,
"best_day_pnl": 1290,
"best_day": "2026-07-10",
"profitable_days": 3,
"min_profitable_days": 0,
"reference_pnl": 2500,
"blocking_days": [
{
"trading_day": "2026-07-10",
"net_pnl": 1290
}
],
"reasons": [
"Best day $1,290.00 reaches the $1,290.00 daily cap (50% of $2,500.00 + $40.00 buffer). Spread gains across more days to dilute it."
]
}
}
}{
"success": false,
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication required",
"code": "UNAUTHORIZED"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Account not found in your organization",
"code": "ACCOUNT_NOT_FOUND"
}{
"success": false,
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"code": "INTERNAL_ERROR"
}