curl --request POST \
--url https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel \
--header 'Authorization: Bearer <token>'const url = 'https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel';
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel"
req, _ := http.NewRequest("POST", 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))
}{
"object": "payout",
"id": "6e0e15cf-8736-44fc-bb9b-372eb7b14145",
"status": "cancelled",
"currency": "NGN",
"amount": 5000000,
"fee": 0,
"transfer_fee": 0,
"scheme": "ngn_bank",
"country": "NG",
"stan": "OUT-2610-ABCDEF12",
"beneficiary_id": "bbd938a2-dbbe-43bf-bfb9-1c5dbe444523",
"cancellable": false,
"created_at": "2026-10-27T13:00:00Z",
"updated_at": "2026-10-27T13:05:00Z"
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API key provided."
}
}Cancel Payout
Cancel while awaiting auth or pending approval. Queued sends cannot be cancelled via API.
curl --request POST \
--url https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel \
--header 'Authorization: Bearer <token>'const url = 'https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel';
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://20b9-41-90-209-232.ngrok-free.app/v1/payouts/{id}/cancel"
req, _ := http.NewRequest("POST", 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))
}{
"object": "payout",
"id": "6e0e15cf-8736-44fc-bb9b-372eb7b14145",
"status": "cancelled",
"currency": "NGN",
"amount": 5000000,
"fee": 0,
"transfer_fee": 0,
"scheme": "ngn_bank",
"country": "NG",
"stan": "OUT-2610-ABCDEF12",
"beneficiary_id": "bbd938a2-dbbe-43bf-bfb9-1c5dbe444523",
"cancellable": false,
"created_at": "2026-10-27T13:00:00Z",
"updated_at": "2026-10-27T13:05:00Z"
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API key provided."
}
}Authorizations
Secret API key from Settings → Developers → API keys.
Example: Authorization: Bearer sk_test_…
Path Parameters
Response
Cancelled payout
Object type discriminator.
payout Payout id.
Lifecycle status. pending_approval means maker-checker is waiting
on a second admin in the dashboard. queued/sending are in flight.
awaiting_auth, pending_approval, queued, sending, completed, failed, cancelled, rejected, expired Source book currency that was (or will be) debited.
Gross send in Ledger minor units.
System trace / remittance reference.
Recipient beneficiary id.
Customer-visible transfer fee (partner + margin + cross-border).
Transfer fee component in minor units (same as fee for most corridors).
Corridor scheme used for the send.
Destination country (ISO 3166-1 alpha-2).
Purpose code submitted with the payout.
Human-readable purpose label.
Free-text note from the request.
Invoice or remittance reference.
Firm FX quote used when currencies differed.
Applied FX rate when cross-currency.
Currency credited to the beneficiary.
Amount the beneficiary receives, in their minor units.
Decimal places for recipient_currency.
Whether POST /payouts/{id}/cancel can still succeed.
Partner or validation failure message when status is failed/rejected.
When the send was authorised (API key or PIN).
When the payout reached a terminal success state.
Creation time (UTC).
Last status change (UTC).