curl --request POST \
--url https://api.bachs.io/v1/balance_settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"schedule_by_currency": {
"NGN": {
"interval": "weekly",
"weekly_payout_days": [
"monday",
"thursday"
],
"anchor_hour_utc": 9,
"minimum_amount": "5000.00"
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
schedule_by_currency: {
NGN: {
interval: 'weekly',
weekly_payout_days: ['monday', 'thursday'],
anchor_hour_utc: 9,
minimum_amount: '5000.00'
}
}
})
};
fetch('https://api.bachs.io/v1/balance_settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/balance_settings"
payload = { "schedule_by_currency": { "NGN": {
"interval": "weekly",
"weekly_payout_days": ["monday", "thursday"],
"anchor_hour_utc": 9,
"minimum_amount": "5000.00"
} } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/balance_settings"
payload := strings.NewReader("{\n \"schedule_by_currency\": {\n \"NGN\": {\n \"interval\": \"weekly\",\n \"weekly_payout_days\": [\n \"monday\",\n \"thursday\"\n ],\n \"anchor_hour_utc\": 9,\n \"minimum_amount\": \"5000.00\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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(string(body))
}{
"schedule_by_currency": {
"NGN": {
"currency": "NGN",
"payout_currency": "NGN",
"interval": "weekly",
"weekly_payout_days": [
"monday",
"thursday"
],
"monthly_payout_days": null,
"anchor_hour_utc": 9,
"minimum_amount": "5000.00",
"next_run_at": "2026-08-13T09:00:00.000Z",
"last_run_at": null,
"last_withdrawal_id": null,
"disabled_reason": null
}
}
}{
"detail": "Invalid request parameters",
"error_code": "VALIDATION_ERROR",
"errors": [
{
"field": "amount",
"message": "Amount must be a positive decimal string",
"type": "value_error"
}
]
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Resource not found",
"error_code": "NOT_FOUND"
}Update payout schedule
Set the payout schedule for your account, or for a connected account named by X-Account-Id. A currency you leave out of schedule_by_currency keeps the schedule it has; a currency you name is replaced in full. See Payout Schedules.
curl --request POST \
--url https://api.bachs.io/v1/balance_settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"schedule_by_currency": {
"NGN": {
"interval": "weekly",
"weekly_payout_days": [
"monday",
"thursday"
],
"anchor_hour_utc": 9,
"minimum_amount": "5000.00"
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
schedule_by_currency: {
NGN: {
interval: 'weekly',
weekly_payout_days: ['monday', 'thursday'],
anchor_hour_utc: 9,
minimum_amount: '5000.00'
}
}
})
};
fetch('https://api.bachs.io/v1/balance_settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/balance_settings"
payload = { "schedule_by_currency": { "NGN": {
"interval": "weekly",
"weekly_payout_days": ["monday", "thursday"],
"anchor_hour_utc": 9,
"minimum_amount": "5000.00"
} } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/balance_settings"
payload := strings.NewReader("{\n \"schedule_by_currency\": {\n \"NGN\": {\n \"interval\": \"weekly\",\n \"weekly_payout_days\": [\n \"monday\",\n \"thursday\"\n ],\n \"anchor_hour_utc\": 9,\n \"minimum_amount\": \"5000.00\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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(string(body))
}{
"schedule_by_currency": {
"NGN": {
"currency": "NGN",
"payout_currency": "NGN",
"interval": "weekly",
"weekly_payout_days": [
"monday",
"thursday"
],
"monthly_payout_days": null,
"anchor_hour_utc": 9,
"minimum_amount": "5000.00",
"next_run_at": "2026-08-13T09:00:00.000Z",
"last_run_at": null,
"last_withdrawal_id": null,
"disabled_reason": null
}
}
}{
"detail": "Invalid request parameters",
"error_code": "VALIDATION_ERROR",
"errors": [
{
"field": "amount",
"message": "Amount must be a positive decimal string",
"type": "value_error"
}
]
}{
"detail": "Invalid API key",
"error_code": "UNAUTHORIZED"
}{
"detail": "API key does not have permission for this operation",
"error_code": "FORBIDDEN"
}{
"detail": "Resource not found",
"error_code": "NOT_FOUND"
}Authorizations
Bearer token authentication. Pass your API key as Authorization: Bearer sk_.... See Authentication for keys, scopes, and sandbox vs production.
Headers
Set the schedule of a connected account you own instead of your own. Same resolution every other API-key route uses: the account must be yours or one you own, or the request 404s.
Body
The payout schedule to set, one call at a time.
Payout schedules to set, keyed by the balance currency each one governs. A currency you leave out keeps the schedule it has, so one call changes NGN without touching USD.
Show child attributes
Show child attributes
Response
The account's payout schedule after the write.
Payout schedules, keyed by the balance currency each one governs. A currency with no schedule is absent rather than present and empty, so you can tell "never configured" from "pays out weekly".
Show child attributes
Show child attributes

