MassPay payout profile
The MassPay payout profile behind the payout wallet, read live from MassPay, with the required fields it still lacks in `missingFields`.
/api/external/payouts/masspay/profileNewThe MassPay payout profile behind the payout wallet, read live from MassPay, with the required fields it still lacks in missingFields.
Before the payee exists (provisioned: false) the profile is a prefill from the account (name, e-mail, country) for your form. A payee created automatically at the ID check often has no address yet: missingFields then lists what POST /payouts/masspay/profile has to send. Personal data — the key's own account only.
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.
Responses
| Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
provisioned | boolean | True once the payee exists at MassPay. | |||||||||||||||||||||||||||||||||||||||||||||
status | string | null | MassPay’s status for the payee (e.g. ACTIVE). Null before it exists. | |||||||||||||||||||||||||||||||||||||||||||||
missingFields | string[] | Required fields blank at MassPay. Empty when complete (and before the payee exists). | |||||||||||||||||||||||||||||||||||||||||||||
profile | MasspayProfile | The values. Blank fields are empty strings.Show child attributes
|
{
"provisioned": true,
"status": "ACTIVE",
"missingFields": [
"address1",
"city",
"stateProvince",
"postalCode"
],
"profile": {
"accountType": "INDIVIDUAL",
"businessName": "",
"firstName": "Jane",
"middleName": "",
"lastName": "Doe",
"email": "[email protected]",
"mobileNumber": "46701234567",
"language": "en",
"dateOfBirth": "1994-05-17",
"country": "SWE",
"address1": "",
"address2": "",
"city": "",
"stateProvince": "",
"postalCode": ""
}
}Errors
| Status | Body | When |
|---|---|---|
| 401 | {"error":"Unauthorized","code":"unauthorized"} | Missing or invalid API key. |
| 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. |
| 502 | {"error":"Could not read your MassPay profile. Try again in a moment.","code":"masspay_unavailable"} | MassPay did not answer. Retry. |
| 503 | {"error":"MassPay is not available right now.","code":"not_configured"} | MassPay payouts are switched off on this environment. |
| 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 "https://www.dropfans.io/api/external/payouts/masspay/profile" \
-H "Authorization: Bearer $DROPFANS_API_KEY"const res = await fetch(`https://www.dropfans.io/api/external/payouts/masspay/profile`, {
headers: {
Authorization: `Bearer ${process.env.DROPFANS_API_KEY}`,
},
});
console.log(await res.json());import os
import requests
res = requests.get(
"https://www.dropfans.io/api/external/payouts/masspay/profile",
headers={"Authorization": f"Bearer {os.environ['DROPFANS_API_KEY']}"},
)
print(res.json())Questions? [email protected]
