curl --request PUT \
--url https://api.bachs.io/v1/accounts/checkout/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled_payment_methods": {
"USD_CARD": {
"enabled": true
},
"NGN_BANK_TRANSFER": {
"enabled": true
},
"MOMO_GHS": {
"enabled": true
},
"MOMO_XAF": {
"enabled": true
},
"MOMO_XOF": {
"enabled": true
},
"CRYPTO": {
"enabled": false,
"currencies": {
"BNB_BEP20": false,
"ETH_ETH": false,
"SOL_SOL": false,
"USDC_BEP20": false,
"USDT_BEP20": false,
"USDT_ERC20": false,
"USDT_SOL": false,
"USDT_TRC20": false
}
}
},
"fee_preference": "org_pays"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled_payment_methods: {
USD_CARD: {enabled: true},
NGN_BANK_TRANSFER: {enabled: true},
MOMO_GHS: {enabled: true},
MOMO_XAF: {enabled: true},
MOMO_XOF: {enabled: true},
CRYPTO: {
enabled: false,
currencies: {
BNB_BEP20: false,
ETH_ETH: false,
SOL_SOL: false,
USDC_BEP20: false,
USDT_BEP20: false,
USDT_ERC20: false,
USDT_SOL: false,
USDT_TRC20: false
}
}
},
fee_preference: 'org_pays'
})
};
fetch('https://api.bachs.io/v1/accounts/checkout/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/accounts/checkout/settings"
payload = {
"enabled_payment_methods": {
"USD_CARD": { "enabled": True },
"NGN_BANK_TRANSFER": { "enabled": True },
"MOMO_GHS": { "enabled": True },
"MOMO_XAF": { "enabled": True },
"MOMO_XOF": { "enabled": True },
"CRYPTO": {
"enabled": False,
"currencies": {
"BNB_BEP20": False,
"ETH_ETH": False,
"SOL_SOL": False,
"USDC_BEP20": False,
"USDT_BEP20": False,
"USDT_ERC20": False,
"USDT_SOL": False,
"USDT_TRC20": False
}
}
},
"fee_preference": "org_pays"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/accounts/checkout/settings"
payload := strings.NewReader("{\n \"enabled_payment_methods\": {\n \"USD_CARD\": {\n \"enabled\": true\n },\n \"NGN_BANK_TRANSFER\": {\n \"enabled\": true\n },\n \"MOMO_GHS\": {\n \"enabled\": true\n },\n \"MOMO_XAF\": {\n \"enabled\": true\n },\n \"MOMO_XOF\": {\n \"enabled\": true\n },\n \"CRYPTO\": {\n \"enabled\": false,\n \"currencies\": {\n \"BNB_BEP20\": false,\n \"ETH_ETH\": false,\n \"SOL_SOL\": false,\n \"USDC_BEP20\": false,\n \"USDT_BEP20\": false,\n \"USDT_ERC20\": false,\n \"USDT_SOL\": false,\n \"USDT_TRC20\": false\n }\n }\n },\n \"fee_preference\": \"org_pays\"\n}")
req, _ := http.NewRequest("PUT", 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))
}{
"organization_id": "acct_7KpQ2mNv4XbR9dLc",
"enabled_payment_methods": {
"USD_CARD": {
"enabled": true
},
"NGN_BANK_TRANSFER": {
"enabled": true
},
"MOMO_GHS": {
"enabled": true
},
"MOMO_XAF": {
"enabled": true
},
"MOMO_XOF": {
"enabled": true
},
"CRYPTO": {
"enabled": false,
"currencies": {
"BNB_BEP20": false,
"ETH_ETH": false,
"SOL_SOL": false,
"USDC_BEP20": false,
"USDT_BEP20": false,
"USDT_ERC20": false,
"USDT_SOL": false,
"USDT_TRC20": false
}
}
},
"fee_preference": "org_pays",
"message": "Checkout settings updated successfully"
}{
"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"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}{
"detail": "An unexpected error occurred. Please try again later.",
"error_code": "INTERNAL_SERVER_ERROR"
}Update checkout settings
Update checkout configuration for your account context, including enabled payment methods and fee preference.
curl --request PUT \
--url https://api.bachs.io/v1/accounts/checkout/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled_payment_methods": {
"USD_CARD": {
"enabled": true
},
"NGN_BANK_TRANSFER": {
"enabled": true
},
"MOMO_GHS": {
"enabled": true
},
"MOMO_XAF": {
"enabled": true
},
"MOMO_XOF": {
"enabled": true
},
"CRYPTO": {
"enabled": false,
"currencies": {
"BNB_BEP20": false,
"ETH_ETH": false,
"SOL_SOL": false,
"USDC_BEP20": false,
"USDT_BEP20": false,
"USDT_ERC20": false,
"USDT_SOL": false,
"USDT_TRC20": false
}
}
},
"fee_preference": "org_pays"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled_payment_methods: {
USD_CARD: {enabled: true},
NGN_BANK_TRANSFER: {enabled: true},
MOMO_GHS: {enabled: true},
MOMO_XAF: {enabled: true},
MOMO_XOF: {enabled: true},
CRYPTO: {
enabled: false,
currencies: {
BNB_BEP20: false,
ETH_ETH: false,
SOL_SOL: false,
USDC_BEP20: false,
USDT_BEP20: false,
USDT_ERC20: false,
USDT_SOL: false,
USDT_TRC20: false
}
}
},
fee_preference: 'org_pays'
})
};
fetch('https://api.bachs.io/v1/accounts/checkout/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.bachs.io/v1/accounts/checkout/settings"
payload = {
"enabled_payment_methods": {
"USD_CARD": { "enabled": True },
"NGN_BANK_TRANSFER": { "enabled": True },
"MOMO_GHS": { "enabled": True },
"MOMO_XAF": { "enabled": True },
"MOMO_XOF": { "enabled": True },
"CRYPTO": {
"enabled": False,
"currencies": {
"BNB_BEP20": False,
"ETH_ETH": False,
"SOL_SOL": False,
"USDC_BEP20": False,
"USDT_BEP20": False,
"USDT_ERC20": False,
"USDT_SOL": False,
"USDT_TRC20": False
}
}
},
"fee_preference": "org_pays"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bachs.io/v1/accounts/checkout/settings"
payload := strings.NewReader("{\n \"enabled_payment_methods\": {\n \"USD_CARD\": {\n \"enabled\": true\n },\n \"NGN_BANK_TRANSFER\": {\n \"enabled\": true\n },\n \"MOMO_GHS\": {\n \"enabled\": true\n },\n \"MOMO_XAF\": {\n \"enabled\": true\n },\n \"MOMO_XOF\": {\n \"enabled\": true\n },\n \"CRYPTO\": {\n \"enabled\": false,\n \"currencies\": {\n \"BNB_BEP20\": false,\n \"ETH_ETH\": false,\n \"SOL_SOL\": false,\n \"USDC_BEP20\": false,\n \"USDT_BEP20\": false,\n \"USDT_ERC20\": false,\n \"USDT_SOL\": false,\n \"USDT_TRC20\": false\n }\n }\n },\n \"fee_preference\": \"org_pays\"\n}")
req, _ := http.NewRequest("PUT", 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))
}{
"organization_id": "acct_7KpQ2mNv4XbR9dLc",
"enabled_payment_methods": {
"USD_CARD": {
"enabled": true
},
"NGN_BANK_TRANSFER": {
"enabled": true
},
"MOMO_GHS": {
"enabled": true
},
"MOMO_XAF": {
"enabled": true
},
"MOMO_XOF": {
"enabled": true
},
"CRYPTO": {
"enabled": false,
"currencies": {
"BNB_BEP20": false,
"ETH_ETH": false,
"SOL_SOL": false,
"USDC_BEP20": false,
"USDT_BEP20": false,
"USDT_ERC20": false,
"USDT_SOL": false,
"USDT_TRC20": false
}
}
},
"fee_preference": "org_pays",
"message": "Checkout settings updated successfully"
}{
"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"
}{
"detail": "Rate limit exceeded. Please retry after a few seconds.",
"error_code": "TOO_MANY_REQUESTS"
}{
"detail": "An unexpected error occurred. Please try again later.",
"error_code": "INTERNAL_SERVER_ERROR"
}Authorizations
Bearer token authentication. Pass your API key as Authorization: Bearer sk_.... See Authentication for keys, scopes, and sandbox vs production.
Headers
Account ID when acting on behalf of a sub-account.
Body
- Option 1
- Option 2
Provide one or both fields: enabled_payment_methods and fee_preference.
The corridors to offer at checkout, keyed by exact corridor (USD_CARD, NGN_CARD, NGN_BANK_TRANSFER, MOMO_GHS..MOMO_ZMW, CRYPTO) -- see payment method support. Each entry you send must carry an enabled boolean; CRYPTO additionally accepts a currencies map of per-asset booleans. This replaces the stored configuration wholesale: a corridor you omit resets to its platform default rather than keeping its current state.
Show child attributes
Show child attributes
Who pays the processing fee on a checkout from now on. customer_pays: the fee is added on top of the amount the customer pays, so you settle the full amount. org_pays: you absorb the fee and it is netted out of what settles into your balance. Omit the field to leave the current preference untouched.
customer_pays, org_pays "org_pays"
Response
Success - Checkout settings updated
The account whose settings were updated, which is the account your API key belongs to, or the account you named in X-Account-Id.
"acct_7KpQ2mNv4XbR9dLc"
The stored configuration after the update, keyed by exact corridor. The update replaces the whole map, so this returns the corridors you sent and nothing else. Read it back to confirm which corridors are now live at checkout.
Show child attributes
Show child attributes
Who now pays the processing fee on a checkout. customer_pays: the fee is added on top of the amount the customer pays, so you settle the full amount. org_pays: you absorb the fee and it is netted out of what settles into your balance.
customer_pays, org_pays "org_pays"
A confirmation string for the update. Do not branch on it, since the returned enabled_payment_methods and fee_preference carry the state you should check.
"Checkout settings updated successfully"

