Live sending is refused
Nine refusals block a send because of your domain or your account. Match the error type to its cause, from an unverified domain to a past-due payment.
Nine checks refuse a send because of the sending domain or your account. The status and error type together identify which one:
| Status | type | Cause |
|---|---|---|
| 403 | unverified_domain_required | The org has no verified domain at all |
| 422 | validation_error, param: "from" | The from domain is not itself verified |
| 403 | account_suspended | Setup was never completed |
| 403 | account_rejected | A staff member declined the account |
| 403 | forbidden | The account is paused |
| 429 | account_under_review | A new account's live sending is bounded during review |
| 429 | volume_limit_reached | The account reached its daily sending volume limit |
| 402 | payment_past_due | A payment is past due |
| 403 | account_deleted | The account has been deleted |
403 unverified_domain_required
Your organization has no verified domain at all.
{
"error": {
"type": "unverified_domain_required",
"message": "Your organization has no verified sending domain. Add and verify a domain before sending live email, or use test mode."
}
}
Fix: verify a domain, or send in test mode.
422 on the from field
The from domain is not verified, even if another domain on your organization is. param is "from", and the message names the domain:
{
"error": {
"type": "validation_error",
"message": "The from-domain 'acme.com' is not a verified sending domain for this organization. Add and verify it before sending in live mode.",
"param": "from"
}
}
Fix: verify that exact domain. Test mode skips the verified-domain check.
Why a parent domain is not enough
orders@mail.acme.com needs mail.acme.com itself verified. A verified acme.com does not cover it. See Subdomain or root domain for why the check works this way.
Check which domains are verified
GET /v1/domains returns each domain on the org alongside its current status:
curl https://api.mailfully.com/v1/domains \
-H "Authorization: Bearer mf_live_xxxxxxxxxxxx"
Read status per row; only verified domains pass the from check. See GET /v1/domains.
403 account_suspended
Setup was never completed. Verify a sending domain and the refusal clears. You do not need a ticket.
403 account_rejected
A staff member declined the account. Only a person can undo this. Email contact@mailfully.com instead of retrying.
403 forbidden
The message is "This account is paused." Sending stays refused until the pause is lifted. Do not retry automatically. To appeal, email contact@mailfully.com. See Policies.
429 account_under_review
A new account's live sending is bounded while staff review it. The message is "Your account needs further review before it can send more live email. Reviews take 24 hours on average." Room also frees up as the rolling 24-hour window moves, and test-mode keys keep working. Alert a person instead of retrying in a loop. See New accounts.
429 volume_limit_reached
The message is "This account has reached its daily sending volume limit. Contact contact@mailfully.com to raise it. Test-mode keys keep working." Room also frees up as the rolling 24-hour window moves. Alert a person instead of retrying in a loop. See Rate limits.
402 payment_past_due
The message is "Live sending is paused because a payment is past due. Update your payment method on the Billing page of your Mailfully dashboard; sending resumes as soon as the payment goes through. Test-mode keys keep working."
403 account_deleted
The message is "This account has been deleted." Both environments refuse sends, and a deleted account cannot be restored. Do not retry. If you did not expect this, email contact@mailfully.com.
Test mode
Test mode skips both domain checks, so you can build and test before DNS is in place. A pause (403 forbidden) and account_deleted apply in test mode too.
