Errors

 

The Errors page includes descriptions of error-related response parameters and errors specific to WePay's system. In addition, the Reason Codes table offers suggestions to help you debug any issues that may arise.

The section below lists and explains the different error-related parameters you may encounter.

  • error_code (String): Code returned to indicate an error occurred.
  • error_message (String): Message describing the error. This message can typically be displayed to your platform's users, except in cases specified otherwise.
  • details (Array): Array of objects describing the specific cause(s) of the error. Contains the following parameters:
    • message (String): This message is intended to help your platform fix an error.
    • reason_code: (String): Code returned to indicate the reason an error occurred.
    • target (List of Strings): Indicates what part of your request is responsible for this detail.
    • target_type(Enum): Describes what part of the request the target is referring to. Possible values:
      • HTTP_REQUEST_BODY
      • HTTP_REQUEST_PATH
      • HTTP_REQUEST_QUERY_STRING
      • HTTP_REQUEST_HEADER
      • SDK_PARAMETER

Example Response

Copy
Copied
{
  "error_code": "TOKEN_CONFLICT",
  "error_message": "There was a problem submitting your information.",
  "details": [
      {
          "message": "The tokenized data modifies field 'credit_card.card_holder.email'
          which is not provided in the permissioned fields.",
          "reason_code": "TOKEN_FIELD_NOT_PERMISSED",
          "target": ["payment method", "token"],
          "target_type": "HTTP_REQUEST_BODY"
       }
  ]
}

WePay Errors

You may encounter any of the following error codes. Click on a specific error code to view reason code details and our suggestions for debugging.

WePay Error CodeHTTP StatusMessage and notes
ACCOUNT_CANNOT_BE_DELETED400This account cannot be deleted.
ACCOUNT_CANNOT_BE_MODIFIED400This account cannot be modified.
ACCOUNT_CANNOT_CREATE_TERMINALS400The account cannot create terminals.
ACCOUNT_CANNOT_PROCESS_PAYOUTS400Merchant account cannot process payouts.
ACCOUNT_CONTROLLER_EMAIL_CANNOT_BE_MODIFIED400The account controller's email cannot be modified after confirmation.
CONTROLLER_EMAIL_CANNOT_BE_MODIFIED400The controller's email cannot be modified after confirmation.
CONTROLLER_TYPE_CANNOT_BE_MODIFIED400The controller's type cannot be modified after the controller's email confirmation.
COULD_NOT_AUTHENTICATE401Could not authenticate with the supplied credentials.
DISPUTE_CANNOT_BE_CONCEDED400This dispute cannot be conceded.
DISPUTE_CANNOT_BE_FURTHER_MODIFIED400This dispute cannot be further modified.
HTTP_BODY_IS_UNEXPECTED400This endpoint does not support an HTTP body.
HTTP_METHOD_NOT_ALLOWED405This endpoint does not support the specified HTTP method.
INVALID_HEADERS400Invalid Header(s)
INVALID_PARAMS400Invalid parameter(s).
INVALID_PATH404Invalid path.
INVALID_SDK_CONFIGURATIONThe application is not configured correctly.
JSON_PARSE_FAILURE400Unable to parse the JSON request.
LEGAL_ENTITY_CANNOT_SETUP_PASSWORD400Insufficient information on the legal entity to perform this action.
MAGIC_HANDLING_NOT_ENABLED400Magic handling is not enabled for this environment.
MERCHANT_ACCOUNT_CANNOT_ACCEPT_PAYMENTS400Merchant account cannot accept payments.
NOT_ACCEPTABLE406The server could not generate a response based on the request.
NOT_AUTHORIZED403The supplied credentials do not have permission to perform this action.
PAYMENT_CANNOT_BE_CANCELED400This payment cannot be canceled.
PAYMENT_CANNOT_BE_CAPTURED400This payment cannot be captured.
PAYMENT_CANNOT_BE_REFUNDED400This payment cannot be refunded.
PAYMENT_COULD_NOT_BE_MODIFIED400This payment could not be modified.
PAYMENT_METHOD_CANNOT_BE_CREATED400This payment method can not be created.
PAYMENT_METHOD_CANNOT_BE_DELETED400This payment method cannot be deleted.
PAYMENT_METHOD_CANNOT_BE_MODIFIED400This payment method cannot be modified. Please create another payment method.
PAYMENT_METHOD_CANNOT_BE_VERIFIED400This payment method cannot be verified.
PAYMENT_METHOD_NOT_ACCEPTED400This payment method is not accepted by this merchant account.
PAYOUT_METHOD_CANNOT_BE_CREATED400This payout method cannot be created.
PAYOUT_METHOD_CANNOT_BE_VERIFIED400This payout method cannot be verified.
RESOURCE_CONFLICT409The requested operation could not be completed due a resource conflict.
RESOURCE_PREVIOUSLY_DELETED400This resource has been previously deleted.
SERVICE_TEMPORARILY_UNAVAILABLE503Service is temporarily unavailable. Please retry your request later.
TERMINAL_CANNOT_BE_ACTIVATED400This terminal cannot be activated.
TERMINAL_CANNOT_BE_CREATED400This terminal cannot be created.
TERMINAL_CANNOT_BE_DEACTIVATED400This terminal cannot be deactivated.
TERMINAL_CANNOT_BE_MODIFIED400This terminal cannot be modified.
TERMINAL_HAS_NOT_BEEN_ONBOARDED400Terminal has not been successfully onboarded yet. Please try again later.
THROTTLE_EXCEEDED429There were too many requests, please wait a moment and try again.
TOKEN_CONFLICT409There was a problem submitting your information.
TRANSACTION_DECLINED400The transaction was declined by the issuing bank.
TRANSFER_CANNOT_BE_CAPTURED400This transfer cannot be captured.
TRANSFER_CANNOT_BE_CREATED400This transfer cannot be created.
UNEXPECTED_ERROR500There was an unknown error.
UNSUPPORTED_COUNTRY400Unsupported country.
UNSUPPORTED_CURRENCY400Unsupported currency.
UNSUPPORTED_MEDIA_TYPE415Unsupported media type.
UNSUPPORTED_PAYMENT_METHOD400This payment method is not supported.
URI_TOO_LONG414URI too long.

Error Reason Codes

Error reason codes provide more context around errors. The %s symbols represent data.

Note: The reason code messages below are an approximation to provide you with an example. You may encounter a different or altered reason code message.

ACCOUNT_CANNOT_BE_DELETED

Reason CodeMessageSuggestion
HAS_PENDING_PAYMENTThis account has pending payments.Wait for all payments to be captured or cancelled.
HAS_PENDING_PAYOUTThis account has pending payouts.Wait for all payouts to be captured or returned.
NON_ZERO_BALANCEThis account has non-zero balances.Withdraw all funds from the account until it has a zero account balance, then try again.
NON_ZERO_RESERVEThis account has non-zero reserves.Wait for reserves to be returned to you, if you have any questions about the status of the reserve, contact WePay support.

ACCOUNT_CANNOT_BE_MODIFIED

Reason CodeMessageSuggestion
PENDING_TRANSACTION_DIVISION_SETUPTransaction division setup is currently in progress. If the setup fails, then updates can be made at that time.Avoid attempts to update accounts while transaction division setup is in process.
TRANSACTION_DIVISION_SETUP_ENABLEDTransaction division capability has been enabled based on the account information received. No further updates to this account can be made.Debug any platform logic attempting updates to an account after a MID has been assigned.

ACCOUNT_CANNOT_PROCESS_PAYOUTS

Reason CodeMessageSuggestion
ACCOUNT_NO_BALANCEFailed to process payout because the account has no balance.Failed to process payout because the account has no balance. Please check the account balance.
ALREADY_DELETEDThis resource has already been deleted.Identify why your platform is attempting a duplicate delete request, or did not consume a notification that the resource was deleted.
BLACKLISTED_ACCOUNTFailed to process payout because the account is blacklisted.Failed to process payout because the account is blacklisted. Please check the status of the account.

DISPUTE_CANNOT_BE_CONCEDED

Reason CodeMessageSuggestion
ALREADY_CONCEDEDThis dispute has already been conceded.Stop attempting to concede this dispute. Note: You should investigate why your platform is attempting to concede a dispute that's already been conceded.
PAYEE_CANNOT_CONCEDEThis dispute cannot be conceded by the payee.Fetch the dispute details to identify why the dispute cannot be conceded.

INVALID_HEADERS

Reason CodeMessageSuggestion
HEADER_IS_REPEATEDRepeated occurrences are not supported for '%s'.Identify any duplicate header(s) (identified in the details.target parameter), and remove it from the request before re-sending.

INVALID_PARAMS

Reason CodeMessageSuggestion
ACCOUNT_CANNOT_CREATE_SESSIONThe platform's account cannot be used to generate a session token.Create a merchant with your WePay app credentials via the API. Then, create a session token using that merchant's account_id
AGE_SMALLER_THAN_MINIMUM_REQUIREDYou need to be %s or older to use WePay's services.Review your platform's age requirements and ensure they align with WePay's minimum age requirement of 18.
ALREADY_DELETEDThis resource has already been deleted.Identify why your platform is attempting a duplicate delete request, or did not consume a notification that the resource was deleted.
ALREADY_EXISTSThis resource already exists.Stop attempting to create a duplicate resource, or to modify a resource to an existing one.
AMOUNT_EXCEEDS_AUTHORIZED_LIMITGross amount cannot be greater than the authorized gross amount.Fetch the original payment to identify the maximum amount that can be captured.
CAPTURE_AT_CANNOT_BE_MODIFIEDcapture_at field is not allowed to be modified once it is set.Please either cancel the payment or wait for the scheduled capture time.
CAPTURE_AT_CANNOT_BE_SETcapture_at field can only be set for card present payments.Please either cancel or capture the payment directly.
CARD_FUNDING_VALIDATION_MISMATCHInvalid card funding type.The card funding information (debit or credit) does not match the expected funding source you defined in card_funding.
CONCURRENT_UNIQUE_KEY_REQUEST_IS_PROCESSINGThis unique key is in use by a concurrent request that is still processing.Wait to get an HTTP response for the request that this unique key was already used in. Only use the unique key again if you get a retryable HTTP response code.
DATE_MUST_BE_IN_FUTUREExpected a date in the future.Review the date and ensure it is in future.
DATE_RANGE_EXCEEDS_ALLOWED_LIMIT'%s' and '%s' cannot exceed %s day(s) interval.Review the date parameters given in the message and find the maximum day interval between them cited in the API Reference.
DOCUMENT_AND_DISPUTE_DO_NOT_SHARE_COMMON_OWNERThe owner of the specified document must match the owner of this dispute.Re-submit documents provided by the dispute owner.
EMAIL_ALREADY_TAKENThis email is already being used by another user.Submit a unique email address for each controller with WePay.
ENCODED_PAYMENT_METHOD_CANNOT_BE_REUSEDThe encoded payment method cannot be reused. Please generate a new encoded payment method and try again.Debug your platform logic to be sure encoded payment methods do not get reused for more than one payment.
ENCODED_PAYMENT_METHOD_IS_EXPIREDThe encoded payment method is expired.Please create a new token for the payment method and resubmit the request with the encoded payment method that contains a valid token.
ENCODED_PAYMENT_METHOD_IS_MALFORMED_OR_INCORRECTEncoded payment method is malformed or contains data that is incorrectUse your Card Present SDK logs to fetch the raw encoded payment method, and be sure that no characters or spaces are being added to the string before it is used in an API request.
ENCODED_PAYMENT_METHOD_IS_NOT_INTENDED_FOR_MERCHANT_ACCOUNTThe encoded payment method is not intended for the merchant account.Check that terminal hardware was properly onboarded to the correct merchant Account ID. Once re-onboarded, re-run new authorizations.
ENTERPRISE_CUSTOMER_ID_CANNOT_BE_MODIFIEDEnterprise Customer ID (ECID) already exists and cannot be modified.Avoid modifying the Enterprise Customer ID (ECID). It may already exist and cannot be modified.
FEE_EXCEEDS_PAYMENT_AMOUNT_THRESHOLD_PERCENTAGEApp fee can not be greater than '%s' of the payment amount.Double check what your fee percentage limit is, and try the request again with an appropriate fee.
FEE_TYPE_INCOMPATIBLE_WITH_PAYMENT_METHODThe payment cannot be created because the fee type is incompatible with the payment method. Use a payment method in %s.Ensure that your platform, merchant, and transaction meet the requirements here.
FIELD_REQUIREMENTS_NOT_SATISFIEDLegal entity ID provided has not satisfied field requirements to create banking_applicationsBefore creating a banking application successfully, be sure to first create a legal entity and ensure that this legal entity fulfills all required KYC fields.
ID_NOT_FOUNDID %s not found.Look up a collection of resources in order to find the appropriate ID.
INCORRECT_VALUE_PROVIDEDFailed to onboard because the target provided is incorrect.Double check the value for the target param to be sure it is not already in use.
INVALID_API_VERSIONThe API version is invalid.Verify the value being submitted and that it is a valid API version.
INVALID_BUSINESS_NUMBERThe business number provided is invalid. Expected the business number for the province '%s' to be in '%s' format.Prompt the end user to submit a valid Business Number.
INVALID_CAPTURE_AT_TIMEcapture_at time %s cannot be in the past or beyond 7 days from payment creation.Try the payment again with a valid capture_at time.
INVALID_CAPTURE_TYPEauto_capture cannot be false if capture_at is specified.Deferred capture automatically captures a Payment at the time provided in the capture_at parameter.
INVALID_CREDIT_CARD_NUMBERThe credit card number is invalid.Notify the user and have them resubmit a valid credit card number.
INVALID_DOMAINFailed to register domain(s) %s because either they are incorrect or their certs are invalid.Check that all domains given were properly set up to accept Apple Pay payments through WePay as their gateway and that the certificates are valid.
INVALID_EMAILEmail address is invalid.Double check the email address being submitted, and request a valid submission from the user.
INVALID_EMAIL_CANNOT_BE_MARKED_AS_VERIFIEDEmail must be valid to be marked as verified.If a submitted email value is invalid (such as null), then it cannot be marked as verified.
INVALID_EMPLOYER_IDENTIFICATION_NUMBERThe employer identification number provided is invalid. A valid employer identification number in the '%s' format is expected.Prompt the end user to submit a valid EIN. If testing, see valid testing EINs here
INVALID_INSTITUTION_NUMBERThe institution number is invalid.Notify the user and have them resubmit a valid institution number.
INVALID_NAICS_CODEInvalid NAICS (North American Industry Classification System) code.Verify the NAICS code before sending a new request.
INVALID_PAYOUT_PERIOD_FOR_PAYOUT_METHOD_TYPEInvalid payout period for the payout method type '%s'.Review the payout method type and submit a valid period for that type.
INVALID_PHONE_NUMBERA valid phone number must have a country code whose length is larger than 0 and less than 4. If a North American country code is provided, then there must be a minimum of 10 digits, with the 1st and 4th digits ranging from 2 to 9. For any other country, length should be greater than or equal to 7 digits.Use the guidelines in the error message as requirements for your own system for phone number validation.
INVALID_PLAID_ACCOUNT_IDSupplied Plaid account ID does not match the Plaid account ID associated with the Plaid Processor Token.Make sure to either set plaid_account_id to null, or pass in the Plaid account ID associated with the Plaid Processor Token.
INVALID_PLAID_PROCESSOR_TOKENPlaid processor token is invalid.Debug your platform logic to make sure a valid plaid processor token is provided.
INVALID_POSTAL_CODE_FOR_COUNTRYInvalid postal code for the country '%s'.Review the postal code and ensure it corresponds with the country selected.
INVALID_REGION_FOR_COUNTRYInvalid region for the country '%s'.Identify the correct country being submitted, and only allow valid regions for that country.
INVALID_ROUTING_NUMBERThe routing number is invalid.Notify the user and have them resubmit a valid routing number.
INVALID_SIGNIFICANT_BENEFICIARIES_AFFILIATION_ASSOCIATION_TYPEInvalid association type for significant beneficiaries affiliation. Either mark at least one association type as 'True', or provide an association type in the 'other' field.See list of valid significant beneficiaries affiliation association types.
INVALID_SIGNIFICANT_BENEFICIARIES_ENTITIESInvalid entities for significant beneficiaries. Either mark at least one entity type as 'True', or provide an entity type in the 'other' field.See list of valid significant beneficiaries entity types.
INVALID_SIGNIFICANT_BENEFICIARIES_GEOGRAPHIESInvalid geographies for significant beneficiaries. Either mark at least one location as 'True', or provide a location in the 'international' field.See list of valid significant beneficiaries entity types.
INVALID_SIGNIFICANT_DONORSInvalid significant donors. Either mark at least one donor type as 'True', or provide a donor type in the 'other' field.See list of valid significant donors.
INVALID_SOCIAL_SECURITY_NUMBERThe social security number provided is invalid. A valid social security number in the '%s' format is expected.Notify the user that a valid social security number must be submitted.
INVALID_TEMPORARY_SECURITY_TOKEN_TYPEExpected token type to be '%s'. Token type given '%s' instead.Create a new token of the expected type, and resubmit the request.
INVALID_TRANSIT_NUMBERThe transit number is invalid.Notify the user and have them resubmit a valid transit number.
INVALID_URLA valid url must have a valid scheme that starts with http or https, a valid IP address or a valid hostname whose top level domain must start with a letter and each domain length shouldn't exceed 63 characters.Use the guidelines in the error message as requirements in your own system for URL validation.
MAXIMUM_NOTIFICATION_PREFERENCES_FOR_TOPIC_REACHEDExceeds the maximum number of %s notification preferences allowed for this topic.WePay allows 10 notification preferences per topic.
MISSING_AUTH_ASSERTION_FIELD%s is missing in the auth_assertion.Please include app ID, account ID and controller's email in the auth_assertion token.
MISSING_ONBOARDING_DATAThe account is missing data required for onboarding.Be sure the merchant has submitted KYC and a payout method before attempting to create SDK authentications.
MISSING_SALES_VOLUME_CURRENCYThe currency needs to be specified when updating the annual sales volume.Update annual_sales_volume_currency together with annual_sales_volume. Currently, the supported currencies are USD or CAD.
NO_FILE_CONTENTThe file has no content.This error is currently specific to uploading documents for legal entities or disputes. Ensure that users upload files with content.
PAGE_NOT_FOUNDPage %s is not found.Verify the page ID that is being looked up.
PARAM_CANNOT_BE_MODIFIEDTransaction division setup is currently in progress or has been enabled. Updating field '%s' is not allowed. Fields can be updated are %s.Transaction division setup is currently in progress or has been enabled. Only specified fields could be updated.
PARAM_IS_MISSINGA required parameter is missing.Include the missing required parameter identified in the target. Use the API reference to find valid formatting and usage.
PARAM_IS_MUTUALLY_EXCLUSIVEParameter cannot be specified along with %s.Update your request so incompatible parameters are not being used. Example: using page and page_size when looking up collections.
PARAM_IS_NOT_SUPPORTED_FOR_COUNTRYThis parameter is not supported in '%s'.Review the supported parameters for the given country in the API Reference.
PARAM_IS_NOT_SUPPORTED_FOR_LEGAL_FORMThis parameter is not supported for a legal form of type '%s'.Verify the legal_form of the Legal Entity, and its accepted parameters.
PARAM_IS_REPEATEDRepeated occurrences are not supported for this parameter.Only include the target parameter once.
PARAM_IS_UNEXPECTEDUnexpected parameter.Your request included a parameter that is not accepted on this endpoint. Please remove it and send a new request.
PARAM_IS_WRONG_TYPEExpected type in %s but found type %s.Review the API reference for the parameter's pattern and update your request with the correct type (e.g. string).
PARAM_VALUES_MUST_BE_UNIQUEThis parameter's values must all be unique.This error applies to situations like arrays of objects, where each object in the array must be unique.
PARAM_VALUE_CANNOT_CONTAIN_CREDIT_CARD_NUMBERParam value contains string that passes Luhn check.Notify the user that sensitive information such as credit card numbers cannot be passed in this field and have them resubmit the form.
PARAM_VALUE_CONDITIONALLY_ALLOWEDPlease fill '%s' field first before setting this value to '%s'.In order to use a given parameter, the target parameter must first be set correctly.
PARAM_VALUE_CONTAINS_UNKNOWN_SERVICE_VARIABLEThis parameter contains an unknown service variable.Ensure that your service variable is valid and can be bound to a URL.
PARAM_VALUE_DOES_NOT_PASS_LUHN_CHECKExpected a value that passes a Luhn check.Verify the Canadian SIN being submitted and re-submit a valid SIN.
PARAM_VALUE_HAS_TOO_FEW_ITEMSExpected a minimum of %s items.Verify the minimum number of items accepted in the param using the API reference, and resubmit the request with an appropriate number of items.
PARAM_VALUE_HAS_TOO_MANY_ITEMSExpected a maximum of %s items.Verify the maximum number of items accepted in the param using the API reference, and resubmit the request with an appropriate number of items.
PARAM_VALUE_INCORRECT_LENGTHExpected exactly '%s' characters.In your next request, use the exact number of characters indicated in the error message.
PARAM_VALUE_IS_INVALID_DATEExpected a valid date.Validate the date being submitted and only provide valid dates (e.g. February 29th on a leap year).
PARAM_VALUE_IS_INVALID_ENUMExpected value in %s.Pass a valid value from the enum list in the API Reference.
PARAM_VALUE_IS_INVALID_FORMATExpected a value in a '%s' format.Review the API reference for the parameter's pattern and update your request with the correct format (e.g. int32).
PARAM_VALUE_IS_INVALID_PATTERNExpected a value matching the regular expression '%s'.Supply a string value that passes a regular expression evaluation.
PARAM_VALUE_IS_TOO_LARGE_EXCLUSIVEExpected a value less than %s.Reduce the parameter value to an amount less than the maximum length in the parameter's pattern.
PARAM_VALUE_IS_TOO_LARGE_INCLUSIVEExpected a value less than or equal to %s.Reduce the parameter value to an amount less than or equal to the specified maximum length in the parameter's pattern.
PARAM_VALUE_IS_TOO_LONGExpected a maximum of %s characters.Ensure the character count of your parameter value is less than the maximum length specified in the parameter's pattern.
PARAM_VALUE_IS_TOO_SHORTExpected a minimum of %s characters.Ensure the character count of your parameter value is greater than the minimum length specified in the parameter's pattern.
PARAM_VALUE_IS_TOO_SMALL_EXCLUSIVEExpected a value greater than %s.Increase the parameter value to an amount greater than the minimum length in the parameter's pattern.
PARAM_VALUE_IS_TOO_SMALL_INCLUSIVEExpected a value greater than or equal to %s.Increase the parameter value to an amount greater than or equal to the specified minimum length in the parameter's pattern.
PARAM_VALUE_KEY_FAILEDExpected the value of this parameter to correspond to the presence of exactly one of these keys %s.Ensure the type value matches the corresponding key. If type = value1, then value1 must be a key.
PARAM_VALUE_MAXIMUM_BYTE_SIZE_EXCEEDEDThe UTF-8 serialized byte-size of this parameter must be less than or equal to '%s' bytes.Please try passing lesser data.
PARAM_VALUE_MUST_BE_ZEROUnreferenced refunds must have the fee_refund_amount parameter set to 0.Set the fee_refund_amount parameter to 0.
PARAM_VALUE_MUTUALLY_EXCLUSIVE_BOOLEANThe %s and %s fields are mutually exclusive, so one of them must be true and the other must be false.Identify the parameters in question, and validate your users' input for these fields such that only mutually exclusive boolean values can be sent in the API request.
PASSWORD_TOO_WEAKThis password is too weak.Passwords must not contain the user's email address, the application's name, and must meet WePay standards for password security.
PAYMENTS_CAPABILITY_DISABLEDThe account does not have the payments capability.Be sure the merchant has submitted KYC and a payout method before attempting to create SDK authentications.
PAYMENT_CURRENCY_MISMATCHCurrency does not match with the authorized payment currency.Verify the currency sent in the initial payment request and resubmit the capture request with the appropriate value.
PAYOUT_HISTORY_PREVENTS_ACCOUNT_BENEFICIARY_TRANSFERThe account's payout history prevents a beneficiary transfer.If there is a pending or completed payout for an account, it cannot be transferred to another beneficiary legal entity.
PAYOUT_METHOD_NOT_OWNED_BY_BENEFICIARY_LEGAL_ENTITYThe owner of the specified payout method must be this account's beneficiary legal entity.Choose a payout method owned by the beneficiary legal entity.
PAYOUT_REFERENCE_ID_ALREADY_USEDThe payout reference ID has already been used for a different request.The payout reference ID has already been used for a different request. Please check if your platform is sending duplicate requests or use a new reference ID.
POINT_OF_SALE_TRANSACTION_NOT_YET_PROCESSEDThis deferred point of sale transaction has not yet been processed. Please try again later.As applicable, either fetch the capture_at time, or send a POST /payments/{id}/capture request.
PREAUTHORIZED_DEBIT_AGREEMENT_NOT_FOUNDNo active Pre-Authorized Debit Agreement found for the payment method.Please create an active Pre-Authorized Debit Agreement.
PREPAID_VALIDATION_MISMATCHCard type prepaid validation failed.Double-check the is_prepaid field for this card and try again.
PRICING_POLICY_ELIGIBILITY_CHECK_FAILEDThe payment cannot be created because it fails to pass the eligibility check defined in the pricing policy.Ensure that your platform, merchant, and transaction meet the requirements here.
PRICING_POLICY_FEE_LIMIT_EXCEEDEDThe payment cannot be created because its fee exceeds the upper fee limit defined in the pricing policy.Ensure that your platform, merchant, and transaction meet the requirements here.
PRIMARY_EXCHANGE_NOT_FOUND_IN_TRADED_EXCHANGESPrimary exchange %s is required in traded exchanges.Be sure to include the exchange that a user indicates as primary in the exhaustive array of traded_exchanges.
TOO_MANY_ACCOUNTS_FOR_LEGAL_ENTITYCannot create any more accounts for this legal entity.Legal entities can only have 10 accounts.
TOO_MANY_DOCUMENTSCannot upload more than %s documents.Only the number of documents indicated in the message parameter of the error are allowed for this resource. Work with the user to decide which documents to keep.
TRANSACTION_TYPE_MISSING_FOR_RECURRING_FEEA recurring fee can only be set with an interchange plus pricing model for credit cards.Reach out to your integration team. Technical Account Manager, or api@wepay.com for options on Merchant Interchage+ pricing.
UNIQUE_KEY_ALREADY_USED_FOR_DIFFERENT_REQUESTThis unique key has already been used for a different request.If a unique key is being used on multiple requests, investigate why your platform is sending duplicate requests.
UNKNOWN_CREDIT_CARD_TYPEThe credit card type is unknown.Notify the user and have them resubmit payment using a valid card type which WePay accepts.
UNSUPPORTED_FILE_TYPE_FOR_OWNERThe owner resource '%s' doesn't support the '%s' file type. Supported file types are %s.Verify the document types accepted by the owner resource (i.e. legal entity versus dispute) and re-submit a valid document type.
UNSUPPORTED_PAYMENT_METHOD_FOR_DEFERRED_CAPTURE%s payment_method type is not supported for deferred captures.Deferred capture is exclusively available to card present transactions.
UNSUPPORTED_REGIONThe provided address region %s is not supported for country %s.Entity and controller addresses may not have the following values for the region parameter: PR, VI, AA, AE, and AP.
USER_HAS_NO_APPLICATIONThe user has no application.The user ID provided in the request header must own a WePay application.

INVALID_SDK_CONFIGURATION

Reason CodeMessageSuggestion
PARAM_IS_MISSINGA required parameter is missing.Include the missing required parameter identified in the target. Use the API reference to find valid formatting and usage.

JSON_PARSE_FAILURE

Reason CodeMessageSuggestion
MALFORMED_JSONMalformed JSON.Use a tool like JSONLint to properly format your JSON.
NO_JSON_PRESENTNo JSON present.Add the appropriate JSON body to your request.

LEGAL_ENTITY_CANNOT_SETUP_PASSWORD

Reason CodeMessageSuggestion
PARAM_IS_MISSINGA required parameter is missing.Include the missing required parameter identified in the target. Use the API reference to find valid formatting and usage.

NOT_ACCEPTABLE

Reason CodeMessageSuggestion
INVALID_ACCEPT_HEADERThe Accept header in the request is currently not supported. Please use 'application/json' and try again.Debug any platform logic allowing MIME types other than application/json

NOT_AUTHORIZED

Reason CodeMessageSuggestion
AUTH_CODE_CANNOT_ACCESS_SCOPEThe authentication code cannot access the requested scopes.Please ensure the authentication code has the requested scopes.
AUTH_CODE_EXPIREDThe authentication code has expired.Please request a new authentication code by calling POST /authentication_codes
CANNOT_ACCESS_DELEGATED_RESOURCEThe supplied credentials do not have permission to access the delegated resource.Ensure that the credentials in your request are correct. If they are, then reach out to your WePay Integration team, Technical Account Manager, or api@wepay.com.
CANNOT_ACCESS_RESOURCEThe supplied credentials do not have permission to access the specified resource.Ensure the credentials in your request are correct. If they are, then reach out to your WePay Integration team, Technical Account Manager, or api@wepay.com.
FEATURE_NOT_ENABLED_FOR_APPLICATIONThe application does not have permission to use the '%s' feature.Contact your WePay integration team, technical account manager, or the WePay API support team at api@wepay.com.
FEATURE_NOT_ENABLED_FOR_MERCHANTThe merchant does not have permission to use the '%s' feature.Contact your WePay integration team, technical account manager, or the WePay API support team at api@wepay.com
PRODUCTION_ACCESS_NOT_ENABLEDProduction access not enabled for the application ID '%s'.Reach out to your WePay integration team, Technical Account Manager, or API support at api@wepay.com.
VERSION_NOT_AVAILABLEThis application does not have permission to use '%s' api version.Contact your WePay integration team, technical account manager, or the WePay API support team at api@wepay.com
WRONG_AUTH_ASSERTION_FIELD%s provided in the auth_assertion is wrong.Please ensure the email provided is the controller's email and the account ID provided belongs to the app ID.

PAYMENT_CANNOT_BE_CANCELED

Reason CodeMessageSuggestion
TIME_LIMIT_EXCEEDEDThis payment cannot be canceled as the allowed authorization limit of %s minutes has passed.Debug your platform logic to be sure cancel requests are never made after the time limit has passed.

PAYMENT_CANNOT_BE_CAPTURED

Reason CodeMessageSuggestion
AMOUNT_EXCEEDS_AUTHORIZED_LIMITGross amount cannot be greater than the authorized gross amount.Fetch the original payment to identify the maximum amount that can be captured.
CAPTURE_CURRENCY_MISMATCHCurrency does not match with the authorized payment currency.Fetch the payment currency and make a new capture request in the appropriate currency.
NOT_ELIGIBLE_FOR_CAPTUREOnly payments that are pending with 'pending_capture' can be captured.Fetch the payment status to identify why the payment cannot be captured.
PINLESS_DEBIT_MISSING_MERCHANT_URLCard is processed as PINless debit but merchant url is not provided.Add the primary url to the legal entity.

PAYMENT_CANNOT_BE_REFUNDED

Reason CodeMessageSuggestion
PAYMENT_IS_DISPUTEDThis payment cannot be refunded because of an ongoing dispute.Wait until the Dispute is resolved, either for the payer or merchant, before deciding whether a refund is needed.
PAYMENT_NOT_COMPLETEDThe payment must have the 'completed' status.Options include: Cancel the payment if it is in a pending status and you set the auto_capture parameter to false; Wait for the payment to finish processing before attempting another refund.
PAYMENT_TOO_OLDThe payment must be less than or equal to %s day(s) old.Stop attempting to refund this payment.
REFUND_ALREADY_COMPLETEDPayment has already been fully refunded.Stop attempting to refund this payment. Debug your platform's logic so that you no longer attempt to refund payments that are already refunded.
REFUND_CURRENCY_MISMATCHThe refund currency mismatches the payment currency.Review the refund currency and ensure it matches the payment currency.
REFUND_EXCEEDS_ALLOWED_LIMITRequested refund amount exceeds allowed amount limit.Fetch the payment details to determine the amount_refundable.
REFUND_EXCEEDS_BALANCEYou may not refund more than the non-refunded balance of the payment.Only request refunds equal to or less than the non-refunded amount of the payment. Debug your platform's logic to avoid this issue moving forward.
REFUND_FEE_EXCEEDS_FEE_BALANCEThe refund fee must not be greater than the non-refunded fee balance.Fetch the payment details to determine the initial fee amount, and what is available for refund.
REFUND_FEE_MUST_BE_FULL_AMOUNTThe refund fee amount must match the original payment's fee amount for a full refund.If a full refund request is made, please ensure the fee_refund_amount is the full fee amount. As an example, if the original payment amount is 100 with a fee_amount of 5, then the refund total_amount should be 100 with a fee_refund_amount of 5.
REFUND_HOLD_PERIODFailed to process the refund. Refunds of ACH/eCheck payments may only be initiated after %s days from the creation of payment.Try the refund again outside of the 7 day hold period.

PAYMENT_COULD_NOT_BE_MODIFIED

Reason CodeMessageSuggestion
CAPTURE_AT_ALREADY_PASSEDThis payment cannot be modified as the capture_at time on this payment has already passed.Either issue a refund or a create a new payment in the amount of the difference. Debug your platform logic to avoid attempting to modify a payment after it has been captured in the future.

PAYMENT_METHOD_CANNOT_BE_CREATED

Reason CodeMessageSuggestion
DIGITAL_WALLETS_CERTIFICATE_ERRORYour certificates are either expired or incorrectPlease reach out to WePay to help resolve the certificate issue or please send us your updated certificates

PAYMENT_METHOD_CANNOT_BE_MODIFIED

Reason CodeMessageSuggestion
ALREADY_DELETEDThis resource has already been deleted.Identify why your platform is attempting a duplicate delete request, or did not consume a notification that the resource was deleted.

PAYMENT_METHOD_CANNOT_BE_VERIFIED

Reason CodeMessageSuggestion
ALREADY_DELETEDThis resource has already been deleted.Identify why your platform is attempting a duplicate delete request, or did not consume a notification that the resource was deleted.
ALREADY_VERIFIEDThis payment method has already been verified.Stop attempting to verify this payment method. Note: You should investigate why your platform is attempting to verify a payment method that's already been verified.
VERIFICATION_FAILED_PERMANENTLYPayment method verification has failed permanently. Delete this payment method and prompt the payer to double-check their payment details before re-trying.The payer should double check their payment bank details before attempting to re-try the payment.

PAYMENT_METHOD_NOT_ACCEPTED

Reason CodeMessageSuggestion
CARD_BRAND_DISABLED_FOR_ACCOUNTThis card brand '%s' is disabled for this account.Retry the payment with a different card brand that is accepted by the merchant.
WALLET_DISABLED_FOR_ACCOUNT'%s' is disabled for this account.Retry the payment with a type of payment method that is accepted by the merchant. Reach out to your WePay integration team, technical account manager, or api@wepay.com to get this merchant access.

PAYOUT_METHOD_CANNOT_BE_CREATED

Reason CodeMessageSuggestion
PREVIOUSLY_REJECTEDThis payout method is invalid as it was previously rejected for your legal entity. Please add a new payout method.Create a new payout method using a supported payout method type that was not previously rejected.

PAYOUT_METHOD_CANNOT_BE_VERIFIED

Reason CodeMessageSuggestion
ALREADY_DELETEDThis resource has already been deleted.Identify why your platform is attempting a duplicate delete request, or did not consume a notification that the resource was deleted.
PAYOUT_METHOD_ALREADY_VERIFIEDThis payout method has already been verified.Stop attempting to verify this payout method. Note: You should investigate why your platform is attempting to verify a payout method that's already been verified.

TERMINAL_CANNOT_BE_ACTIVATED

Reason CodeMessageSuggestion
ALREADY_ACTIVEThis terminal is already active.Review your logs to identify any gaps in your logic which would cause the platform to call an activation request for a Terminal with an active status.
TERMINALS_CAPABILITY_DISABLEDThe account does not have the terminals capability.Merchants must enable the Payments and Payouts capabilities on their Account.

TERMINAL_CANNOT_BE_CREATED

Reason CodeMessageSuggestion
TERMINALS_CAPABILITY_DISABLEDThe account does not have the terminals capability.Merchants must enable the Payments and Payouts capabilities on their Account.

TERMINAL_CANNOT_BE_DEACTIVATED

Reason CodeMessageSuggestion
ALREADY_INACTIVEThis terminal is already inactive.Review your logs to identify any gaps in your logic which would cause the platform to call a deactivation request for a Terminal with an inactive status.

TERMINAL_CANNOT_BE_MODIFIED

Reason CodeMessageSuggestion
TERMINALS_CAPABILITY_DISABLEDThe account does not have the terminals capability.Merchants must enable the Payments and Payouts capabilities on their Account.

THROTTLE_EXCEEDED

Reason CodeMessageSuggestion
APPLICATION_ACCOUNT_LEVEL_REQUEST_THROTTLE_EXCEEDEDThe application has exceeded the Account level HTTP request limit of %s requests per %s seconds. Please retry again after the limit has passed.Reduce the rate of API requests for the given account resource.
APPLICATION_ENDPOINT_LEVEL_REQUEST_THROTTLE_EXCEEDEDThe application has exceeded the endpoint level HTTP request limit of %s requests per %s seconds. Please retry again after the limit has passed.Reduce the rate of API requests to the given endpoint.
APPLICATION_REQUEST_THROTTLE_EXCEEDEDThe application has exceeded the Application level HTTP request limit of %s requests per %s seconds. Please retry again after the limit has passed.Reduce the rate of your API requests.

TOKEN_CONFLICT

Reason CodeMessageSuggestion
TOKEN_FIELD_CONFLICTS_WITH_PROVIDED_FIELDThe tokenized data modifies '%s' but that field conflicts with the provided field.Review the conflicting field and identify whether it is necessary to include in the request you are attempting. If it is not a required field, then omit the field from your request. If it is a required field, then you'll need to obtain the exact value already present and send that same value for the field in the request. Note: You may have a malicious user if your platform encounters this reason code post-integration.
TOKEN_FIELD_NOT_PERMISSEDThe tokenized data modifies field '%s' which is not provided in the permissioned fields.Once a token has been created, its fields cannot be modified unless the field was included in the permissioned fields while converting the token to an API resource.

TRANSACTION_DECLINED

Reason CodeMessageSuggestion
ADDRESS_MISMATCHThe provided address does not match the payer's billing address.Ask the payer to enter a new address that matches their billing address.
CARD_CANNOT_TRANSACTThe card cannot transact.Notify the user and have them resubmit payment with another card or with their bank account.
CVV_IS_REQUIREDCVV is required for this transaction.Certain transactions require the card's CVV. Prompt the payer to resubmit their card details with the CVV before making a new request.
CVV_MISMATCHThe provided cvv does not match the payment method.Ask the payer to provide their card details again with the correct CVV number.
EXPIREDThe payment method has expired.Ask the payer to provide a different payment method with a valid expiration date.
GENERAL_DECLINEThe transaction was declined by the issuing bank.Ask the payer to provide a different payment method or to call their bank.
INSUFFICIENT_FUNDSThe amount provided exceeds available funds.Ask the payer to provide a different payment method with sufficient funds.
LOST_OR_STOLENThe payment method has been reported as lost or stolen.Handle this reason code the same way your platform handles GENERAL_DECLINE. Note: If a payment method appears to be lost or stolen, do not disclose this information in your messaging. It may tip off a malicious user.
REJECTED_BY_ISSUING_BANKThe card is rejected by the issuing bank.Notify the user and have them work with their card issuer before resubmitting payment.
UNSUPPORTED_CARD_TYPEThe card type is not supported.Either the card type (Visa, MasterCard, American Express, Discover, JCB, or Diners Club) is not supported by the account, or the card is a debit card and it's not supported by the merchant. Direct the payer to try a different payment method

TRANSFER_CANNOT_BE_CAPTURED

Reason CodeMessageSuggestion
TRANSFER_NOT_ELIGIBLE_FOR_CAPTUREThis transfer is not eligible for capture.Fetch the transfer status to identify why the transfer cannot be captured.

TRANSFER_CANNOT_BE_CREATED

Reason CodeMessageSuggestion
CANNOT_TRANSFER_ACROSS_CURRENCYThe sender account currency mismatches the recipient account currency.Make sure to create transfers only between accounts with the same currency.
INSUFFICIENT_BALANCEThe sender merchant account has insufficient balance to perform this transfer.Fetch the sender account balance to determine what is available for transfer.

UNSUPPORTED_COUNTRY

Reason CodeMessageSuggestion
APP_DOES_NOT_SUPPORT_ACCOUNTS_FOR_LEGAL_ENTITY_COUNTRYThe given application does not support accounts for '%s' based legal entities.Create a new legal entity based in a country your WePay app supports. Work with your WePay Integration team, Technical Account manager, or api@wepay.com for help.
BENEFICIARY_AND_OWNING_LEGAL_ENTITY_COUNTRIES_MUST_MATCHThe beneficiary legal entity's country must match the owning legal entity's country.Any beneficiary (owning 25% or more) must be based in the same country as the legal entity.
COUNTRY_DOES_NOT_MATCH_LEGAL_ENTITY_COUNTRYThe given value must match the legal entity's country '%s'.Update the currency value of the payment so it matches the legal entity's country.
UNSUPPORTED_COUNTRY_FOR_PAYOUT_METHOD_TYPEUnsupported country for the payout method type '%s'.Paper check payouts are only available in the United States.

UNSUPPORTED_CURRENCY

Reason CodeMessageSuggestion
PAYOUT_CURRENCY_NOT_ENABLED_FOR_APPPayout in '%s' is not enabled for this app. Please contact your account manager, or the WePay support team at api@wepay.com.Follow the prompt in the message.
PAYOUT_METHOD_TYPE_CURRENCY_MISMATCHThe specified payout method's type '%s' does not support the specified currency '%s'.Create a new payout method using a supported payout method type for the currency being paid out.
TRANSFER_CURRENCY_NOT_ENABLED_FOR_APPTransfer in '%s' is not enabled for this app. Please contact your account manager, or the WePay support team at api@wepay.com.Follow the prompt in the message.
UNSUPPORTED_CURRENCY_FOR_ACCOUNTThis account does not support the currency '%s'.Use a currency supported by the account.

UNSUPPORTED_MEDIA_TYPE

Reason CodeMessageSuggestion
UNSUPPORTED_CHARACTER_SETUnsupported character set '%s'.Double check the Content-Type header of the request and be sure it has the correct value.

UNSUPPORTED_PAYMENT_METHOD

Reason CodeMessageSuggestion
RISK_REVIEW_DECLINEDInternal risk review declined creating payment method.
UNSUPPORTED_CARD_TYPEThe card type is not supported.Either the card type (Visa, MasterCard, American Express, Discover, JCB, or Diners Club) is not supported by the account, or the card is a debit card and it's not supported by the merchant. Direct the payer to try a different payment method
UNSUPPORTED_PAYMENT_METHOD_FOR_PAD_AGREEMENT%s payment_method type is not supported for pad agreement.Use a payment_bank_ca to create a Pre-Authorized Debit (PAD) agreement.
UNSUPPORTED_PAYMENT_METHOD_FOR_UNREFERENCED_REFUNDSUnreferenced refunds can only accept payment methods types in %s.Please verify that the payment method is one of the accepted payment method types.

WePay JS Library Errors

Note: This is not an exhaustive list, and currently only covers JS SDK errors specific to the Plaid modal for processing ACH transactions.

You may encounter any of the following error while interfacing with the WePay JS Library. Find more information about the JS SDK here.

Error CodeError Message
INVALID_PARAMSInvalid parameter(s).
TOKEN_CANNOT_BE_CREATEDToken cannot be created.
TRANSACTION_DECLINEDThe transaction was declined by the issuing bank.
COULD_NOT_AUTHENTICATEThe supplied credentials do not have permission to perform this action.

INVALID_PARAMS

Reason CodeMessageSuggestion
PARAM_VALUE_IS_INVALID_PATTERNExpected a value matching the regular expression '^([^,:;=@\"'\\\s()\[\]]+)+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$'.The user should double check the email address they submitted, and ensure that it is a valid email address.
PARAM_VALUE_IS_INVALID_PATTERNExpected a value matching the regular expression '^[0-9]{9}$'.The user should double check the routing number submitted, end ensure that it is a valid routing number.
PARAM_VALUE_IS_INVALID_PATTERNExpected a value matching the regular expression '^[0-9]{3,17}$'.The user should double check the account number submitted, and ensure it is a valid account number.

TOKEN_CANNOT_BE_CREATED

Reason CodeMessageSuggestion
NO_ACTION_PERFORMEDNo input received. Payment method can not be verified.This error means that the payer closed the Plaid modal without submitting any information. Contact the payer with options to complete payment.

TRANSACTION_DECLINED

Reason CodeMessageSuggestion
INSTITUTE_NOT_RESPONDINGNo response from the financial institution. Please try again later.The financial institution (i.e. bank) may be having server down time. The payer should check with their financial institution or use a different payment method.
NO_AUTH_ACCOUNT_FOUNDNo valid checking or savings accounts found to retrieve routing numbers.The user does not have an active savings or checking account with these login credentials. They should double check their information or try using a different payment method.
NO_ACCOUNT_FOUNDNo matching accounts found.The account/user does not exist. The user should double check their credentials or try using a different payment method.
USER_SETUP_REQUIREDPending action with the financial institution. Please log in directly to resolve and then retry.The financial institution requires the user to complete some action item (i.e. password reset, agree to ToS, etc.) before Plaid can access the account. Once that action is complete, the payer can retry with the same account. Alternatively, they can try using a different payment method.
REJECTED_BY_ISSUING_BANKUser account locked. Contact the financial institution to unlock.The response from the financial institution (i.e. bank) indicated that the account cannot transact. The payer should contact their financial institution or use a different payment method.
REJECTED_BY_ISSUING_BANKThis account is restricted by the financial institution selected. User Account can't be supported by Plaid.Some bank accounts are not allowed to be accessed by Plaid. To resolve, the payer can either reach out to their financial institution, or use a different payment method.

COULD_NOT_AUTHENTICATE

Reason CodeMessageSuggestion
INVALID_CREDENTIALSThe credentials provided are invalid. Please try again.The login credentials provided by the user in the Plaid modal were invalid. The payer can try logging in again or use an alternate payment method.
INVALID_MFAMFA responses provided are invalid. Please try again.The user's financial institution (i.e. bank) web login requires MFA authentication, and the user provided invalid responses. They can try logging in again or use an alternate payment method.