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/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.

Dropfans-operated integrations only, for now

At launch this endpoint answers 403 first_party_only to every other app. The read endpoints of this group are open to every key.

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 is only available to Dropfans-operated integrations.","code":"first_party_only"}During launch, payout-method endpoints are open to Dropfans-operated integrations only.
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.

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/payouts/methods/$ID" \
  -H "Authorization: Bearer $DROPFANS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "isDefault": true
}'

Questions? [email protected]