Change a payout method
API reference

Change a payout method

Rename a payout method, make it the default (or stop using it as the default), or point a Paxum method at another Paxum e-mail.

View as MarkdownUpdated Oct 30, 2026
PATCH/api/external/v1/payouts/methods/{id}also served at /api/external/payouts/methods/{id}New

Rename a payout method, make it the default (or stop using it as the default), or point a Paxum method at another Paxum e-mail.

Send only what changes. Any other field is refused with 400 unknown_field. A new paxumEmail is looked up again like on create (422 paxum_account_not_active unless active) and clears the method's earlier Paxum identity check, which was for the old account. isDefault: true moves the default here; isDefault: false leaves the account without a default method.

The key's own account only, after the ID check.

Needs the Payouts category and an app key

Payouts are an API category that is off for every app until we switch it on — ask support. Personal keys can read payouts but get 403 app_key_required here.

Authentication

Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.

Path parameters

NameTypeRequiredDescription
idstringRequiredThe method id (from GET /payouts/methods).

Request body

Content type: application/json

NameTypeRequiredDescription
nicknamestring | nullOptionalNew label; null or "" clears it.
Max length: 100
isDefaultbooleanOptionaltrue: make it the default. false: no longer the default.
paxumEmailstringOptionalPAXUM_P2P only: the new Paxum e-mail.
Format: email
Make it the default
{
  "isDefault": true
}

Responses

200The updated method.
NameTypeDescription
methodPayoutMethodSummaryThe method, masked.
Show child attributes
idstringPayout method id.
typestringProvider method type.
One of: PAXUM_P2P, MASSPAY, BANK_SWIFT
isDefaultbooleanTrue for the method payouts go to.
nicknamestring | nullThe creator’s own label for it.
labelstringDisplay label, masked (see Payout.method.label).
holderTypestring | nullWhether it was set up for the person or the company.
One of: INDIVIDUAL, BUSINESS
createdAtstringWhen the method was added.
Format: date-time
paxumobject | nullPAXUM_P2P only.
Show child attributes
emailstring | nullMasked Paxum e-mail, e.g. "j***@example.com".
lookupStatusstring | nullWhether the e-mail is a live Paxum account: active, inactive, not_found, unconfigured.
verificationStatusstring | nullPaxum identity match against the ID check: PENDING, COMPLETED, MISMATCH, UNAVAILABLE.
masspayobject | nullMASSPAY (payout wallet) only.
Show child attributes
countrystring | nullISO 3166-1 alpha-3 country.
currencystring | nullPayout currency (ISO 4217), when chosen.
payerNamestring | nullPayout option name, when chosen.
activatedbooleanTrue once the payee finished the wallet activation. Payout requests to a wallet need it.
bankobject | nullBANK_SWIFT only.
Show child attributes
last4string | nullLast 4 characters of the account number. The full IBAN / SWIFT is never returned.
countrystring | nullBank country (ISO alpha-2).
bankNamestring | nullBank name.
Example response
{
  "method": {
    "id": "clxpm0002method",
    "type": "PAXUM_P2P",
    "isDefault": true,
    "nickname": "Main Paxum",
    "label": "Main Paxum",
    "holderType": "INDIVIDUAL",
    "createdAt": "2026-10-30T10:00:00.000Z",
    "paxum": {
      "email": "j***@example.com",
      "lookupStatus": "active",
      "verificationStatus": null
    },
    "masspay": null,
    "bank": null
  }
}

Errors

StatusBodyWhen
400{"error":"Unknown field: bankIban. Allowed: nickname, isDefault, paxumEmail.","code":"unknown_field"}A field that cannot be changed (`invalid_nickname`, `invalid_is_default`, `invalid_paxum_email` for bad values).
400{"error":"paxumEmail can only be changed on a PAXUM_P2P method.","code":"field_not_applicable"}`paxumEmail` on a MassPay wallet.
400{"error":"Invalid JSON body"}The body is not valid JSON (`invalid_body` when it is not an object).
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.
403{"error":"Verify your identity (KYC) before setting up payouts.","code":"kyc_required"}The account has not passed the ID check.
403{"error":"Payout methods need the account’s own key — a key an agency minted for a managed account cannot read or change where payouts go.","code":"agency_key_not_allowed"}The key was minted by an agency for an account it manages.
403{"error":"This endpoint needs a key bound to an app with the payouts API category enabled — personal keys cannot use it.","code":"app_key_required","category":"payouts"}A personal key (not bound to an app). Personal keys may read payouts, but not change them.
404{"error":"Not found","code":"not_found"}Unknown id, or it belongs to another account.
422{"error":"This Paxum account is not active. Activate it at Paxum first.","code":"paxum_account_not_active","lookupStatus":"inactive"}The new e-mail is not an active Paxum account.
502{"error":"Could not reach Paxum to check the e-mail. Try again in a moment.","code":"paxum_unavailable"}The Paxum lookup failed. Retry.
400{"error":"This endpoint only acts as the key’s own account — send it without X-Dropfans-Account.","code":"account_header_not_allowed"}`X-Dropfans-Account` names another account. An agency can never change where a creator it manages is paid.
400{"error":"This endpoint acts as the key’s own account or app — call it without /creators/{creatorId}.","code":"creator_scope_not_allowed"}Called under /api/external/v1/creators/{creatorId}/ — this endpoint always acts as the key’s own account, agency or app.
403{"error":"This app does not have the payouts API category enabled. Contact support to enable it.","code":"api_category_disabled","category":"payouts"}Your app has the Payouts [API category](/developers/concepts/api-categories) switched off (the default for new apps).

Rate limiting

Every response carries the X-RateLimit-Tier header and, on limited tiers, the per-minute and per-day trios — read X-RateLimit-Remaining and X-RateLimit-Reset instead of hardcoding limits. Details in Rate limits.

Code samples

curl -X PATCH "https://www.dropfans.io/api/external/v1/payouts/methods/$ID" \
  -H "Authorization: Bearer $DROPFANS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "isDefault": true
}'

Questions? support@dropfans.io