Concepts

Errors

Error codes, what they mean, and which ones are safe to retry.

Oatmilk uses ordinary HTTP status codes and adds a stable code to every error. Branch on code, show message to people, and keep X-Request-Id in your logs: paste it into Developers › Request log to see who sent the request and how it ended.

JSON
{
  "error": {
    "code": "CONFLICT",
    "message": "This record changed. Refresh it before retrying.",
    "docUrl": "https://app.getoatmilk.com/docs/errors#conflict"
  }
}
StatusMeans
200It worked. The result is in data.
400The input doesn't match the action. field names the first problem.
401The credential is missing, expired or revoked.
403The credential or role doesn't allow this, or a person has to do it in Oatmilk.
404The action or record doesn't exist, or you can't see it.
409The record changed, or isn't in a state that allows this yet.
413, 415The body is too large, or isn't JSON.
429Too many requests. Wait for Retry-After.
500, 503Something went wrong on our side, or a feature isn't ready.

Common error codes

CodeStatusMeansWhat to do
UNAUTHORIZED401The Authorization header is missing, malformed, or the key or token has expired or been revoked.Send Authorization: Bearer <key>. Check the key in Developers › API keys and create a new one if it was revoked.
INSUFFICIENT_SCOPE403The key or token works, but it doesn't include a permission this action needs.Every action's page lists the permissions it needs. Create a key that includes them.
FORBIDDEN403Your role in the company doesn't allow this, or the step can only happen in the dashboard.Ask an administrator, or give the person the dashboardUrl from the error.
INTERACTIVE_ADMIN_REQUIRED403An administrator has to do this in Oatmilk itself, such as sending a payout.Give the dashboardUrl from the error to an administrator.
INTERACTIVE_APPROVAL_REQUIRED403A person approves this suggestion in Oatmilk. Listing and declining still work through the API.Give the dashboardUrl to the person who approves it.
INTERACTIVE_SIGNATURE_REQUIRED403Only the named signer can sign or decline, in their own session.Send the signer the signUrl or portalUrl. Integrations can't sign for a person.
INTERACTIVE_PORTAL_REQUIRED403The contractor does this in their own portal: bank details, tax numbers, or agreeing to tax slips by email.Give the contractor the portalUrl from the error.
COMPANY_PROTECTED403This is the company the Oatmilk installation runs for, so it can't be closed.Nothing to fix: export its data with company.export if you need a copy.
UNKNOWN_ACTION404There is no action with that name. Names are case-sensitive.Check the spelling against the API reference. The error suggests the closest name when there is one.
NOT_FOUND404The record doesn't exist in this company, or you can't see it.Check the ID and the company you're working in (X-Accounting-Organization).
METHOD_NOT_ALLOWED405GET was used for an action that changes something, or the method isn't GET or POST.Use POST with a JSON body. GET only works for read actions.
INVALID_INPUT400The input doesn't match the action's fields, or the body isn't JSON (status 415).field names the first problem. Fix it and send the request again.
CONFIRMATION_MISMATCH400The confirmation you typed doesn't match, such as the company's name when closing it.Send the name exactly as Oatmilk shows it (case doesn't matter). Nothing was changed.
TOO_LARGE413The JSON body is larger than 3 MB.Upload files with uploads.prepare and a PUT to the upload address, not inside the JSON body.
REQUEST_TIMEOUT408The request body took longer than 15 seconds to arrive.Retry with the same idempotency key.
IDEMPOTENCY_CONFLICT409The Idempotency-Key header and the idempotencyKey field were both sent, with different values.Send one of them, or send the same value in both.
STALE_REVISION409The record changed after you read it, so your `expectedRevision` is out of date.Read the record again, check what changed, and send the new revision if your change still applies.
CONFLICT409The record changed since you read it, or the idempotency key was already used for a different request.Read the record again before deciding what to do. Use a new idempotency key for a new change; reuse one only to retry exactly the same request.
DUPLICATE409A record with the same details already exists.Look the existing record up instead of creating it again.
INVALID_STATE409The record isn't in a state that allows this yet, such as approving something already approved.Read the record's status and follow the next step it needs.
RATE_LIMITED429This key sent more than 120 requests in the current minute.Wait for the number of seconds in Retry-After, then retry with the same idempotency key.
INTERNAL_ERROR500Something went wrong on our side.Retry after a short wait with the same idempotency key. If it keeps happening, send us the X-Request-Id.
SCHEMA_NOT_READY503The environment is finishing a database update for this feature.Retry in a few minutes.
CLOSE_UNAVAILABLE503This installation's database doesn't let Oatmilk delete a company's records in one step, so nothing was deleted.Whoever runs the installation lets the database owner set session_replication_role, then the company can be closed.
NOT_CONFIGURED503A feature this action needs isn't set up for your company or environment yet.Finish its setup in Settings. The message says what's missing.

Retrying safely

Retry only what can succeed later: 429, 500, 503, timeouts and dropped connections. Wait a little longer each time, and always resend the same Idempotency-Key so the change happens once. Don't retry other 4xx errors unchanged: they fail the same way until you fix the request. See Idempotency and revisions.

retry.js
async function callOatmilk(action, input, idempotencyKey = crypto.randomUUID()) {
  for (let attempt = 1; ; attempt += 1) {
    const response = await fetch(`https://app.getoatmilk.com/api/v1/accounting/${action}`, {
      method: "POST",
      headers: { Authorization: `Bearer ${process.env.OATMILK_API_KEY}`, "Content-Type": "application/json", "Idempotency-Key": idempotencyKey },
      body: JSON.stringify(input),
    });
    if (response.ok) return (await response.json()).data;
    const retryable = response.status === 429 || response.status >= 500;
    if (!retryable || attempt === 5) throw new Error((await response.json()).error.code);
    const wait = Number(response.headers.get("Retry-After")) || 2 ** attempt;
    await new Promise(resolve => setTimeout(resolve, wait * 1000));
  }
}

Steps only a person can take

Some errors mean "a person does this in Oatmilk". They carry the link to the exact step, so your app can pass it on instead of failing.

CodeWhat happens next
INTERACTIVE_ADMIN_REQUIREDAn administrator finishes it in Oatmilk at dashboardUrl, such as sending a payout.
INTERACTIVE_APPROVAL_REQUIREDA person approves the suggestion at dashboardUrl. Listing and declining still work through the API.
INTERACTIVE_SIGNATURE_REQUIREDThe signer signs or declines in their own session. Integrations can't sign for anyone.
INTERACTIVE_PORTAL_REQUIREDThe contractor enters bank details or tax numbers in their own portal at portalUrl.

Every error code

The API can return these codes. The list is generated from Oatmilk's source, so it always matches what the API does.

450 codes

  • ACCESS_ENDED403
  • ACCESS_EXPIRED403
  • ACCESS_REQUIRED403
  • ACCOUNT_CONFIRMATION_REQUIRED409
  • ACCOUNT_DETAILS_REQUIRED400
  • ACCOUNT_EXISTS409
  • ACCOUNT_NOT_ADDED503
  • ACCOUNT_REQUIRED400
  • AGENT_UNAVAILABLE503
  • AGREEMENT_CHANGED409
  • AGREEMENT_REQUIRED409
  • AGREEMENTS_OVERLAP409
  • AI_CREDITS_REQUIRED403
  • AI_KEY_REFUSED400
  • ALREADY_ACCOUNTANT409
  • ALREADY_INVITED409
  • ALREADY_MATCHED409
  • ALREADY_MEMBER409
  • ALREADY_STARTED409
  • ALREADY_SUBMITTED409
  • AMOUNT_MISMATCH409
  • ARCHIVE_FAILED503
  • ARCHIVED409
  • ATTACHMENT_LIMIT400
  • ATTACHMENT_RETRIEVE503
  • ATTACHMENT_SCOPE409
  • ATTACHMENT_UNAVAILABLE503
  • AUDIO_TOO_LARGE413
  • AUDIO_TOO_LONG413
  • AUDIT_FAILED503
  • AUTH_UNAVAILABLE503
  • BANK_MATCH_AMBIGUOUS409
  • BANK_MISMATCH409
  • BATCH_CLAIM_LOST409
  • BATCH_SIZE400
  • BUDGET_SCOPE_TOO_LARGE422
  • BUDGET_SOURCE_UNAVAILABLE503
  • CANNOT_REMOVE_SELF409
  • CARD_IN_USE409
  • CATEGORY_REQUIRED409
  • CATEGORY_UNAVAILABLE409
  • CLASSIFICATION_FAILED503
  • CLERK_UNAVAILABLE503
  • CLOSE_UNAVAILABLE503
  • COMPANY_CHOICE_REQUIRED403
  • COMPANY_LIMIT409
  • COMPANY_PROTECTED403
  • CONFIRMATION_MISMATCH400
  • CONFLICT409
  • CONNECTOR_CREDENTIAL_INVALID503
  • CONNECTOR_KEY_MISSING503
  • CONTRACTOR_CONFIRMATION_REQUIRED409
  • CONTRACTOR_EXISTS409
  • CONTRACTOR_UNAVAILABLE503
  • CORRECTION_CLOSED409
  • CORRECTION_OPEN409
  • CREDENTIAL_EMAIL_REQUIRES_MAILBOX403
  • DATA_SOURCE_UNAVAILABLE409
  • DATA_SOURCE_UNSUPPORTED400
  • DATABASE_ERROR503
  • DAY_FULL422
  • DEPOSIT_EXCEEDED409
  • DISCORD_UNAVAILABLE503
  • DOCUMENT_CHANGED409
  • DOCUMENT_STORAGE503
  • DOWNLOAD_FAILED503
  • DOWNLOAD_UNAVAILABLE503
  • DUPLICATE409
  • DUPLICATE_ENTRY409
  • DUPLICATE_NUMBER409
  • EMAIL_CLAIM_CANCELLED409
  • EMAIL_DISABLED409
  • EMAIL_DOMAIN_EXISTS409
  • EMAIL_DOMAIN_NOT_FOUND404
  • EMAIL_DOMAIN_NOT_VERIFIED409
  • EMAIL_DOMAIN_REJECTED409
  • EMAIL_DOMAIN_SETUP_PENDING503
  • EMAIL_DOMAIN_SETUP_REQUIRED503
  • EMAIL_DOMAIN_UNAVAILABLE503
  • EMAIL_INBOUND_SETUP_REQUIRED503
  • EMAIL_MISMATCH403
  • EMAIL_NEEDED409
  • EMAIL_NOT_ENABLED409
  • EMAIL_UNAVAILABLE503
  • EMAIL_UNVERIFIED403
  • EMPTY_IMPORT400
  • ENCRYPTION_KEY_CHANGED503
  • ENCRYPTION_MISCONFIGURED503
  • ENCRYPTION_NOT_CONFIGURED503
  • ENTRY_EVIDENCE_BINDING409
  • ENTRY_EVIDENCE_RECEIPT_DENIED409
  • EVIDENCE_ARCHIVE_FAILED503
  • EVIDENCE_HASH_MISMATCH409
  • EVIDENCE_INTEGRITY409
  • EVIDENCE_MISSING400, 409
  • EVIDENCE_READ_FAILED503
  • EVIDENCE_READING_PENDING409, 503
  • EVIDENCE_REQUIRED409
  • EVIDENCE_SCOPE403, 409
  • EXPORT_TOO_LARGE400, 409, 413
  • EXTRACTION_FAILED502
  • EXTRACTION_TIMEOUT503
  • FILE_FORMAT400, 415, 422
  • FILE_SIZE400, 413
  • FILE_TOO_LARGE400, 413
  • FILE_TYPE400, 415
  • FINANCIAL_SCOPE_TOO_LARGE422
  • FINGERPRINT_KEY_READABLE409
  • FINGERPRINT_KEY_UNREADABLE503
  • FOLIO_REFUSED409
  • FORBIDDEN403
  • FORECAST_TOO_LARGE422
  • FUTURE_HOURS422
  • FX_RATE_NOT_PUBLISHED404
  • FX_RATE_UNAVAILABLE503
  • FX_RATE_UNSUPPORTED422
  • GIFI_UNAVAILABLE503
  • GOOGLE_DOCS_NOT_PUBLIC422
  • GOOGLE_DOCS_TIMEOUT504
  • GOOGLE_DOCS_UNAVAILABLE503
  • GOOGLE_DRIVE_FORBIDDEN403
  • GOOGLE_DRIVE_NOT_CONFIGURED503
  • GOOGLE_DRIVE_NOT_CONNECTED409
  • GOOGLE_DRIVE_NOT_FOUND404
  • GOOGLE_DRIVE_SCOPE_MISSING400
  • GOOGLE_DRIVE_STATE_INVALID400
  • GOOGLE_DRIVE_TOKEN_FAILED400, 502
  • GOOGLE_DRIVE_UNAVAILABLE502
  • HOURS_BEFORE_START409
  • HOURS_LOCKED409
  • HOURS_NOT_PAID409
  • HOURS_ON_HOLD409
  • HOURS_PAID409
  • HUMAN_CORRECTED409
  • IDEMPOTENCY_CONFLICT409
  • IDENTITY_UNAVAILABLE503
  • IMAGE_LIMIT400, 422
  • IMAGE_TOO_LARGE413
  • IMPORT_FAILED409, 502, 503
  • INBOX_SEARCH_BUSY429
  • INBOX_SEARCH_DAILY_LIMIT429
  • INBOX_SEARCH_RATE_LIMITED429
  • INSUFFICIENT_SCOPE403
  • INTEGRITY_ERROR409
  • INTERACTIVE_ADMIN_REQUIRED403
  • INTERACTIVE_APPROVAL_REQUIRED403
  • INTERACTIVE_PORTAL_REQUIRED403
  • INTERACTIVE_SIGNATURE_REQUIRED403
  • INTERNAL_ERROR500, 502
  • INVALID_ACCOUNT400, 409, 503
  • INVALID_ADDRESS400
  • INVALID_AI_RESULT400
  • INVALID_AMOUNT400
  • INVALID_ASSIGNEE400
  • INVALID_AUDIO400
  • INVALID_BUDGET_CATEGORY400
  • INVALID_CATEGORY400
  • INVALID_CSV400
  • INVALID_CURRENCY400
  • INVALID_CURSOR400
  • INVALID_DATE400
  • INVALID_DATE_RANGE400
  • INVALID_DOCUMENT400
  • INVALID_DOMAIN400
  • INVALID_END_DATE400
  • INVALID_EVIDENCE400
  • INVALID_FIELD400
  • INVALID_FINAL_CHARGE409
  • INVALID_HEADER400
  • INVALID_IDENTITY400
  • INVALID_IMPORT400
  • INVALID_INPUT400, 415, 422
  • INVALID_INVITATION404
  • INVALID_MAPPING400
  • INVALID_MERCHANT400
  • INVALID_PARENT400
  • INVALID_PAYMENT_DETAILS400
  • INVALID_PERIOD400
  • INVALID_RECEIPT409
  • INVALID_RECIPIENT400, 409
  • INVALID_ROW400
  • INVALID_SETTINGS409
  • INVALID_SIGNATURE400
  • INVALID_SOURCE_REFERENCE400, 409
  • INVALID_STATE409
  • INVALID_STRIPE_SIGNATURE400
  • INVALID_TAX_NUMBER400
  • INVALID_WEBHOOK400
  • INVESTIGATION_BUSY409
  • INVESTIGATION_TOO_LARGE409
  • INVESTIGATION_UNAVAILABLE503
  • INVITATION_CLOSED409
  • INVITATION_EXPIRED409
  • INVITATION_REVOKED409
  • INVITATION_USED409
  • INVITE_INVALID400, 403
  • JOB_MISSING503
  • JOB_SUPERSEDED409
  • KICKOFF_UNAVAILABLE409
  • KIND_NOT_ALLOWED403
  • LOCATION_UNAVAILABLE503
  • LOOKUP_CREDITS_LOW503
  • LOOKUP_UNAVAILABLE503
  • MAIL_HELD403
  • MAIL_ORIGINAL_PENDING503
  • MAIL_QUOTA429
  • MAILBOX_ACCESS_REVOKED409
  • MAILBOX_ADDRESS_MISSING502
  • MAILBOX_CONNECT_FAILED503
  • MAILBOX_CONNECT_RATE_LIMITED429
  • MAILBOX_CREDENTIAL_INVALID409
  • MAILBOX_GRANT_EXPIRED409
  • MAILBOX_IMPORT_FAILED503
  • MAILBOX_OFFLINE_ACCESS_MISSING409
  • MAILBOX_PROVIDER_ERROR502
  • MAILBOX_PROVIDER_NOT_CONFIGURED503
  • MAILBOX_RATE_LIMITED429
  • MAILBOX_SCOPE_MISSING409
  • MAILBOX_SCOPE_TOO_BROAD409
  • MAILBOX_STATE_EXPIRED400
  • MAILBOX_STATE_INVALID400
  • MAILBOX_STATE_MISMATCH403
  • MAILBOX_STATE_USED400
  • MAILBOX_TOKEN_FAILED502
  • MATCHING_MODEL_RETRY_PENDING503
  • MATCHING_SUPERSEDED409
  • MATCHING_TOO_LARGE400
  • MATCHING_UNAVAILABLE503
  • MEMBER_UNAVAILABLE404
  • METHOD_NOT_ALLOWED405
  • MISSING_FIELDS400
  • MULTIPLE_ACCOUNTS400
  • NESTED_EMAIL_LIMIT400
  • NO_ADMIN409
  • NO_CHANGES400, 409
  • NO_DOCUMENT409
  • NO_FINGERPRINT_KEY409
  • NO_HOURS_DATABASE400
  • NO_MEMBER409
  • NO_READABLE_SOURCE409
  • NO_REQUESTS400
  • NO_SPEECH422
  • NOT_A_CARD_CHARGE409
  • NOT_A_COMPANY_RECORD409
  • NOT_A_HOTEL_CHARGE409
  • NOT_A_PURCHASE409
  • NOT_A_STATEMENT409
  • NOT_AN_AGREEMENT422
  • NOT_AVAILABLE409
  • NOT_CONFIGURED409, 503
  • NOT_FOUND404
  • NOT_ISSUED409
  • NOT_NEEDED409
  • NOT_REGISTERED409
  • NOT_SIGNED409
  • NOT_TEAM_MEMBER409
  • NOTES_LIMIT409
  • NOTHING_CHANGED400
  • NOTHING_TO_IMPORT400
  • NOTION_ACCESS404
  • NOTION_ARCHIVED409
  • NOTION_FILE_GONE404
  • NOTION_INVALID_VALUE400
  • NOTION_MAPPING_INVALID400
  • NOTION_MAPPING_REQUIRED409
  • NOTION_NOT_CONFIGURED503
  • NOTION_PROPERTY_READ_ONLY400
  • NOTION_SYNC_FAILED503
  • NOTION_WRONG_DATABASE409
  • OLDER_AGREEMENT409
  • ORGANIZATION_REQUIRED403
  • ORIGINAL_IN_USE409
  • ORIGINAL_REMOVED409
  • PAGE_LIMIT400
  • PAGE_UNAVAILABLE404
  • PARTY_HAS_AUTOMATIC_INVOICES409
  • PAY_REQUIRED400
  • PAYMENT_DETAILS_CHANGED409
  • PAYMENT_TOO_SMALL409
  • PDF_UNAVAILABLE409
  • PERIOD_CLOSED409
  • PERIOD_NOT_ENDED409
  • PERIOD_PAID409
  • PERIOD_SKIPPED409
  • PERIODS_OVERLAP409
  • PERSONAL_WORKSPACE403, 409
  • PERSONAL_WORKSPACE_UNAVAILABLE409
  • POSSIBLE_DUPLICATE409
  • PREVIEW_READ_ONLY403
  • PREVIEW_SAMPLE404
  • PROVIDER_ID400
  • PROVIDER_RETRIEVE503
  • PROVIDER_URL503
  • RATE_LIMITED429
  • RAW_EMAIL_UNAVAILABLE503
  • READER_FAILED502
  • READER_UNAVAILABLE503
  • RECEIPT_DETAILS_CHANGED409
  • RECEIPT_DUPLICATE_REVIEW409
  • RECEIPT_NOT_NEEDED409
  • RECEIPT_ON_ITS_WAY409
  • RECEIPT_TARGET_CHANGED409
  • RECEIPT_TARGET_UNAVAILABLE409
  • RECENTLY_SENT429
  • RECIPIENT_IDENTITY_REVIEW409
  • RECONCILIATION_TOO_LARGE400
  • REMOVED_BY_PERSON409
  • REPORT_TOO_LARGE400, 409
  • REQUEST_CLOSED409
  • REQUEST_TIMEOUT408
  • REQUEST_UNAVAILABLE409, 410
  • RESTRICTED_EVIDENCE403
  • REVERIFICATION_REQUIRED403
  • REVIEW_REQUIRED409
  • REVIEW_UNAVAILABLE503
  • REVISION_CONFLICT409
  • ROLE_IN_AGREEMENT409
  • ROLE_MISMATCH409
  • ROLE_REQUIRED409
  • ROLE_UNAVAILABLE409
  • SAME_AGREEMENT_SIGNED409
  • SCHEMA_NOT_READY503
  • SEALED_DATA_UNREADABLE409, 503
  • SEND_LEASE_LOST409
  • SEND_STATE409
  • SETUP_PENDING403
  • SIGN_IN_REQUIRED401
  • SIGNATURES_REQUIRED409
  • SIGNERS_REQUIRED409
  • SIGNING_KEY_EXISTS409
  • SIGNUPS_CLOSED403
  • SOURCE_LIMIT400
  • SOURCE_UNAVAILABLE400
  • STALE_FINANCIAL_SOURCE409
  • STALE_HOURS409
  • STALE_PROPOSAL409
  • STALE_REVISION409
  • STATEMENT_FORMAT422
  • STATEMENT_IMPORTED409
  • STATEMENT_PAGE_TOO_LONG422
  • STATEMENT_SCOPE_TOO_LARGE413
  • STATEMENT_SOURCE_CHANGED409
  • STATEMENT_TOO_LARGE413
  • STATEMENT_UNDECIDED500
  • STATEMENT_UNDONE409
  • STATUS_NOT_APPLICABLE409
  • STORAGE_CONFLICT409
  • STORAGE_ERROR503
  • STRIPE_ACCOUNT_CHANGED409
  • STRIPE_ACCOUNT_MISMATCH403
  • STRIPE_ARCHIVE_FAILED503
  • STRIPE_BODY_LIMIT413
  • STRIPE_EVENT_SCOPE403
  • STRIPE_HISTORY_REQUIRED409
  • STRIPE_INVALID_AMOUNT502
  • STRIPE_INVALID_CURRENCY502
  • STRIPE_INVALID_CURSOR409
  • STRIPE_INVALID_DATE502
  • STRIPE_INVALID_EVENT400
  • STRIPE_INVALID_EXCHANGE_RATE502
  • STRIPE_INVALID_PAGE502
  • STRIPE_INVALID_RESPONSE502
  • STRIPE_INVALID_TRANSACTION502
  • STRIPE_LEASE_LOST409
  • STRIPE_MODE_MISMATCH400, 403
  • STRIPE_NOT_CONFIGURED503
  • STRIPE_NUMERIC_RUNTIME503
  • STRIPE_PATH_DENIED400
  • STRIPE_REPORT_LIMIT409
  • STRIPE_RESPONSE_LIMIT502
  • STRIPE_RESTRICTED_KEY_REQUIRED503
  • STRIPE_TOTAL_CONFLICT502
  • STRIPE_UNREPRESENTABLE_AMOUNT409
  • SUBSCRIPTIONS_TOO_LARGE422
  • TAG_NOT_LINKED409
  • TAX_EXCEEDS_TOTAL400
  • TAX_REVIEW_INCOMPLETE409
  • TAX_REVIEW_REQUIRED409
  • TAX_SETTINGS_REQUIRED400
  • TAX_SOURCE_RECEIPT_DENIED409
  • TERMS_PENDING409
  • TEXT_LIMIT400
  • TIMEOUT504
  • TITLE_AGREEMENT_REQUIRED409
  • TITLE_EVIDENCE_REQUIRED409
  • TOO_LARGE413
  • TOO_MANY_INVITATIONS409
  • TOO_MANY_ROWS400
  • TOO_MANY_TRANSACTIONS409
  • TOO_SOON409
  • TOTALS_CHANGED409
  • TRANSCRIPT_TOO_LONG422
  • TRANSCRIPTION_FAILED502
  • UNAUTHORIZED401
  • UNAVAILABLE503
  • UNKNOWN_ACTION400, 404
  • UNKNOWN_TOOL404
  • UNPAID_WORK409
  • UNREADABLE422
  • UNREADABLE_EVIDENCE409
  • UNSUPPORTED_AUDIO415
  • UNSUPPORTED_RETRY_MODE409
  • UPLOAD_BATCH_CHANGED409
  • UPLOAD_FAILED503
  • UPLOAD_INCOMPLETE409
  • UPLOAD_INTEGRITY409
  • UPLOAD_LIMIT429
  • UPLOAD_UNAVAILABLE503
  • UPSTREAM_UNAVAILABLE503
  • VERIFICATION_EMAIL_UNAVAILABLE503
  • WAITLIST_NOT_NEEDED409
  • WAITLISTED403
  • WEBHOOK_KEY_CHANGED503
  • WEBHOOK_KEY_MISSING503
  • WEBHOOK_SECRET_INVALID503
  • WEBHOOK_URL_INVALID400
  • WISE_ACCOUNT400
  • WISE_ATTACHMENT_NOT_FOUND404
  • WISE_CURRENCY502
  • WISE_DOCUMENT_NOT_READY404
  • WISE_DOCUMENT_TOO_LARGE502
  • WISE_FORMAT502
  • WISE_FUNDING_PENDING409
  • WISE_NO_BALANCE409
  • WISE_NOT_CONFIGURED409, 503
  • WISE_NOT_READY409
  • WISE_PATH400
  • WISE_PERIOD_NOT_STARTED409
  • WISE_PRECISION503
  • WISE_PROFILE400
  • WISE_PROFILE_MISSING409
  • WISE_PROFILE_OWNER403
  • WISE_QUOTE_BLOCKED409
  • WISE_RECIPIENT409
  • WISE_RESPONSE502
  • WISE_SCA_REJECTED502
  • WISE_SETUP_REQUIRED400, 409
  • WISE_SOURCE_BINDING_PENDING409
  • WISE_STATUS_PENDING409
  • WISE_SYNC_CONFIG_CHANGED409
  • WISE_SYNC_LEASE_LOST409
  • WISE_TRANSFER409, 503
  • WISE_TRANSFER_DETAILS_REQUIRED409
  • WISE_UNAVAILABLE502, 503
  • WORKSPACE_PAUSED403
  • WRITE_OFF_TOO_LARGE400