Request a payout
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.feitpay.com/v1/payouts"
payload := strings.NewReader("{ \"asset\": \"example\", \"amount\": \"59.90\", \"destination_id\": \"example\", \"note\": \"example\" }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Gryphem-Environment", "test") req.Header.Add("Authorization", "Bearer <token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://api.feitpay.com/v1/payouts';const options = { method: 'POST', headers: { 'Gryphem-Environment': 'test', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"asset":"example","amount":"59.90","destination_id":"example","note":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.feitpay.com/v1/payouts \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Gryphem-Environment: test' \ --data '{ "asset": "example", "amount": "59.90", "destination_id": "example", "note": "example" }'Holds amount from the available balance and asks for approval: another member of the organization approves it (when four-eyes is on), then a GRYPHEM operator reviews it, then the platform Bitcart hot wallet sends it to the allow-listed destination. Amounts are exact in the asset (no conversion); the network fee is paid by the platform. Honors Idempotency-Key.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Active organization for dashboard sessions. Ignored for API keys (the key determines the organization).
test (default) or live for dashboard sessions. API keys determine the environment.
Unique key per logical create operation (max 255 chars). Replays return the original response; reuse with a different body returns idempotency_error.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Decimal string. Never a float.
Responses
Section titled “Responses”Payout requested; the amount is held.
object
Decimal string. Never a float.
Integer amount in the asset’s smallest unit.
Pending_approval (waiting for a second merchant member) → pending_operator (GRYPHEM review) → submitting → submitted (created in Bitcart) → sent (broadcast) → complete (confirmed). Terminal: rejected, canceled, failed.
bitcart: sent by the platform Bitcart hot wallet (live).
The held amount went back to the available balance (always for canceled and rejected payouts; for a failed payout only when nothing can have been sent, or after an operator verified that and released it).
Operator console only.
Operator console only.
Example
{ "object": "payout", "amount": "59.90", "amount_units": "99834", "status": "pending_approval", "requested_via": "session", "processor": "bitcart"}Missing or invalid credentials.
object
object
Example
{ "error": { "type": "invalid_request_error" }}Authenticated but not permitted.
object
object
Example
{ "error": { "type": "invalid_request_error" }}State conflict.
object
object
Example
{ "error": { "type": "invalid_request_error" }}Validation failed.
object
object
Example
{ "error": { "type": "invalid_request_error" }}Too many requests. See Retry-After.
object
object
Example
{ "error": { "type": "invalid_request_error" }}