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
{
"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 Code | HTTP Status | Message and notes |
---|---|---|
ACCOUNT_CANNOT_BE_DELETED | 400 | This account cannot be deleted. |
ACCOUNT_CANNOT_BE_MODIFIED | 400 | This account cannot be modified. |
ACCOUNT_CANNOT_CREATE_TERMINALS | 400 | The account cannot create terminals. |
ACCOUNT_CANNOT_PROCESS_PAYOUTS | 400 | Merchant account cannot process payouts. |
ACCOUNT_CONTROLLER_EMAIL_CANNOT_BE_MODIFIED | 400 | The account controller's email cannot be modified after confirmation. |
CONTROLLER_EMAIL_CANNOT_BE_MODIFIED | 400 | The controller's email cannot be modified after confirmation. |
CONTROLLER_TYPE_CANNOT_BE_MODIFIED | 400 | The controller's type cannot be modified after the controller's email confirmation. |
COULD_NOT_AUTHENTICATE | 401 | Could not authenticate with the supplied credentials. |
DISPUTE_CANNOT_BE_CONCEDED | 400 | This dispute cannot be conceded. |
DISPUTE_CANNOT_BE_FURTHER_MODIFIED | 400 | This dispute cannot be further modified. |
HTTP_BODY_IS_UNEXPECTED | 400 | This endpoint does not support an HTTP body. |
HTTP_METHOD_NOT_ALLOWED | 405 | This endpoint does not support the specified HTTP method. |
INVALID_HEADERS | 400 | Invalid Header(s) |
INVALID_PARAMS | 400 | Invalid parameter(s). |
INVALID_PATH | 404 | Invalid path. |
INVALID_SDK_CONFIGURATION | The application is not configured correctly. | |
JSON_PARSE_FAILURE | 400 | Unable to parse the JSON request. |
LEGAL_ENTITY_CANNOT_SETUP_PASSWORD | 400 | Insufficient information on the legal entity to perform this action. |
MAGIC_HANDLING_NOT_ENABLED | 400 | Magic handling is not enabled for this environment. |
MERCHANT_ACCOUNT_CANNOT_ACCEPT_PAYMENTS | 400 | Merchant account cannot accept payments. |
NOT_ACCEPTABLE | 406 | The server could not generate a response based on the request. |
NOT_AUTHORIZED | 403 | The supplied credentials do not have permission to perform this action. |
PAYMENT_CANNOT_BE_CANCELED | 400 | This payment cannot be canceled. |
PAYMENT_CANNOT_BE_CAPTURED | 400 | This payment cannot be captured. |
PAYMENT_CANNOT_BE_REFUNDED | 400 | This payment cannot be refunded. |
PAYMENT_COULD_NOT_BE_MODIFIED | 400 | This payment could not be modified. |
PAYMENT_METHOD_CANNOT_BE_CREATED | 400 | This payment method can not be created. |
PAYMENT_METHOD_CANNOT_BE_DELETED | 400 | This payment method cannot be deleted. |
PAYMENT_METHOD_CANNOT_BE_MODIFIED | 400 | This payment method cannot be modified. Please create another payment method. |
PAYMENT_METHOD_CANNOT_BE_VERIFIED | 400 | This payment method cannot be verified. |
PAYMENT_METHOD_NOT_ACCEPTED | 400 | This payment method is not accepted by this merchant account. |
PAYOUT_METHOD_CANNOT_BE_CREATED | 400 | This payout method cannot be created. |
PAYOUT_METHOD_CANNOT_BE_VERIFIED | 400 | This payout method cannot be verified. |
RESOURCE_CONFLICT | 409 | The requested operation could not be completed due a resource conflict. |
RESOURCE_PREVIOUSLY_DELETED | 400 | This resource has been previously deleted. |
SERVICE_TEMPORARILY_UNAVAILABLE | 503 | Service is temporarily unavailable. Please retry your request later. |
TERMINAL_CANNOT_BE_ACTIVATED | 400 | This terminal cannot be activated. |
TERMINAL_CANNOT_BE_CREATED | 400 | This terminal cannot be created. |
TERMINAL_CANNOT_BE_DEACTIVATED | 400 | This terminal cannot be deactivated. |
TERMINAL_CANNOT_BE_MODIFIED | 400 | This terminal cannot be modified. |
TERMINAL_HAS_NOT_BEEN_ONBOARDED | 400 | Terminal has not been successfully onboarded yet. Please try again later. |
THROTTLE_EXCEEDED | 429 | There were too many requests, please wait a moment and try again. |
TOKEN_CONFLICT | 409 | There was a problem submitting your information. |
TRANSACTION_DECLINED | 400 | The transaction was declined by the issuing bank. |
TRANSFER_CANNOT_BE_CAPTURED | 400 | This transfer cannot be captured. |
TRANSFER_CANNOT_BE_CREATED | 400 | This transfer cannot be created. |
UNEXPECTED_ERROR | 500 | There was an unknown error. |
UNSUPPORTED_COUNTRY | 400 | Unsupported country. |
UNSUPPORTED_CURRENCY | 400 | Unsupported currency. |
UNSUPPORTED_MEDIA_TYPE | 415 | Unsupported media type. |
UNSUPPORTED_PAYMENT_METHOD | 400 | This payment method is not supported. |
URI_TOO_LONG | 414 | URI 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 Code | Message | Suggestion |
---|---|---|
HAS_PENDING_PAYMENT | This account has pending payments. | Wait for all payments to be captured or cancelled. |
HAS_PENDING_PAYOUT | This account has pending payouts. | Wait for all payouts to be captured or returned. |
NON_ZERO_BALANCE | This account has non-zero balances. | Withdraw all funds from the account until it has a zero account balance, then try again. |
NON_ZERO_RESERVE | This 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 Code | Message | Suggestion |
---|---|---|
PENDING_TRANSACTION_DIVISION_SETUP | Transaction 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_ENABLED | Transaction 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 Code | Message | Suggestion |
---|---|---|
ACCOUNT_NO_BALANCE | Failed 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_DELETED | This 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_ACCOUNT | Failed 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 Code | Message | Suggestion |
---|---|---|
ALREADY_CONCEDED | This 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_CONCEDE | This dispute cannot be conceded by the payee. | Fetch the dispute details to identify why the dispute cannot be conceded. |
INVALID_HEADERS
Reason Code | Message | Suggestion |
---|---|---|
HEADER_IS_REPEATED | Repeated 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 Code | Message | Suggestion |
---|---|---|
ACCOUNT_CANNOT_CREATE_SESSION | The 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_REQUIRED | You 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_DELETED | This 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_EXISTS | This resource already exists. | Stop attempting to create a duplicate resource, or to modify a resource to an existing one. |
AMOUNT_EXCEEDS_AUTHORIZED_LIMIT | Gross 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_MODIFIED | capture_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_SET | capture_at field can only be set for card present payments. | Please either cancel or capture the payment directly. |
CARD_FUNDING_VALIDATION_MISMATCH | Invalid 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_PROCESSING | This 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_FUTURE | Expected 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_OWNER | The owner of the specified document must match the owner of this dispute. | Re-submit documents provided by the dispute owner. |
EMAIL_ALREADY_TAKEN | This email is already being used by another user. | Submit a unique email address for each controller with WePay. |
ENCODED_PAYMENT_METHOD_CANNOT_BE_REUSED | The 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_EXPIRED | The 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_INCORRECT | Encoded payment method is malformed or contains data that is incorrect | Use 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_ACCOUNT | The 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_MODIFIED | Enterprise 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_PERCENTAGE | App 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_METHOD | The 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_SATISFIED | Legal entity ID provided has not satisfied field requirements to create banking_applications | Before 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_FOUND | ID %s not found. | Look up a collection of resources in order to find the appropriate ID. |
INCORRECT_VALUE_PROVIDED | Failed 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_VERSION | The API version is invalid. | Verify the value being submitted and that it is a valid API version. |
INVALID_BUSINESS_NUMBER | The 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_TIME | capture_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_TYPE | auto_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_NUMBER | The credit card number is invalid. | Notify the user and have them resubmit a valid credit card number. |
INVALID_DOMAIN | Failed 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_EMAIL | Email address is invalid. | Double check the email address being submitted, and request a valid submission from the user. |
INVALID_EMAIL_CANNOT_BE_MARKED_AS_VERIFIED | Email 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_NUMBER | The 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_NUMBER | The institution number is invalid. | Notify the user and have them resubmit a valid institution number. |
INVALID_NAICS_CODE | Invalid NAICS (North American Industry Classification System) code. | Verify the NAICS code before sending a new request. |
INVALID_PAYOUT_PERIOD_FOR_PAYOUT_METHOD_TYPE | Invalid payout period for the payout method type '%s'. | Review the payout method type and submit a valid period for that type. |
INVALID_PHONE_NUMBER | A 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_ID | Supplied 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_TOKEN | Plaid processor token is invalid. | Debug your platform logic to make sure a valid plaid processor token is provided. |
INVALID_POSTAL_CODE_FOR_COUNTRY | Invalid postal code for the country '%s'. | Review the postal code and ensure it corresponds with the country selected. |
INVALID_REGION_FOR_COUNTRY | Invalid region for the country '%s'. | Identify the correct country being submitted, and only allow valid regions for that country. |
INVALID_ROUTING_NUMBER | The routing number is invalid. | Notify the user and have them resubmit a valid routing number. |
INVALID_SIGNIFICANT_BENEFICIARIES_AFFILIATION_ASSOCIATION_TYPE | Invalid 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_ENTITIES | Invalid 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_GEOGRAPHIES | Invalid 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_DONORS | Invalid 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_NUMBER | The 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_TYPE | Expected token type to be '%s'. Token type given '%s' instead. | Create a new token of the expected type, and resubmit the request. |
INVALID_TRANSIT_NUMBER | The transit number is invalid. | Notify the user and have them resubmit a valid transit number. |
INVALID_URL | A 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_REACHED | Exceeds 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_DATA | The 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_CURRENCY | The 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_CONTENT | The 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_FOUND | Page %s is not found. | Verify the page ID that is being looked up. |
PARAM_CANNOT_BE_MODIFIED | Transaction 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_MISSING | A 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_EXCLUSIVE | Parameter 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_COUNTRY | This parameter is not supported in '%s'. | Review the supported parameters for the given country in the API Reference. |
PARAM_IS_NOT_SUPPORTED_FOR_LEGAL_FORM | This 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_REPEATED | Repeated occurrences are not supported for this parameter. | Only include the target parameter once. |
PARAM_IS_UNEXPECTED | Unexpected parameter. | Your request included a parameter that is not accepted on this endpoint. Please remove it and send a new request. |
PARAM_IS_WRONG_TYPE | Expected 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_UNIQUE | This 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_NUMBER | Param 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_ALLOWED | Please 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_VARIABLE | This 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_CHECK | Expected a value that passes a Luhn check. | Verify the Canadian SIN being submitted and re-submit a valid SIN. |
PARAM_VALUE_HAS_TOO_FEW_ITEMS | Expected 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_ITEMS | Expected 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_LENGTH | Expected exactly '%s' characters. | In your next request, use the exact number of characters indicated in the error message. |
PARAM_VALUE_IS_INVALID_DATE | Expected 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_ENUM | Expected value in %s. | Pass a valid value from the enum list in the API Reference. |
PARAM_VALUE_IS_INVALID_FORMAT | Expected 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_PATTERN | Expected a value matching the regular expression '%s'. | Supply a string value that passes a regular expression evaluation. |
PARAM_VALUE_IS_TOO_LARGE_EXCLUSIVE | Expected 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_INCLUSIVE | Expected 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_LONG | Expected 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_SHORT | Expected 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_EXCLUSIVE | Expected 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_INCLUSIVE | Expected 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_FAILED | Expected 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_EXCEEDED | The 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_ZERO | Unreferenced refunds must have the fee_refund_amount parameter set to 0. | Set the fee_refund_amount parameter to 0. |
PARAM_VALUE_MUTUALLY_EXCLUSIVE_BOOLEAN | The %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_WEAK | This 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_DISABLED | The 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_MISMATCH | Currency 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_TRANSFER | The 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_ENTITY | The 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_USED | The 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_PROCESSED | This 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_FOUND | No active Pre-Authorized Debit Agreement found for the payment method. | Please create an active Pre-Authorized Debit Agreement. |
PREPAID_VALIDATION_MISMATCH | Card type prepaid validation failed. | Double-check the is_prepaid field for this card and try again. |
PRICING_POLICY_ELIGIBILITY_CHECK_FAILED | The 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_EXCEEDED | The 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_EXCHANGES | Primary 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_ENTITY | Cannot create any more accounts for this legal entity. | Legal entities can only have 10 accounts. |
TOO_MANY_DOCUMENTS | Cannot 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_FEE | A 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_REQUEST | This 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_TYPE | The 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_OWNER | The 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_REGION | The 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_APPLICATION | The user has no application. | The user ID provided in the request header must own a WePay application. |
INVALID_SDK_CONFIGURATION
Reason Code | Message | Suggestion |
---|---|---|
PARAM_IS_MISSING | A 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 Code | Message | Suggestion |
---|---|---|
MALFORMED_JSON | Malformed JSON. | Use a tool like JSONLint to properly format your JSON. |
NO_JSON_PRESENT | No JSON present. | Add the appropriate JSON body to your request. |
LEGAL_ENTITY_CANNOT_SETUP_PASSWORD
Reason Code | Message | Suggestion |
---|---|---|
PARAM_IS_MISSING | A 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 Code | Message | Suggestion |
---|---|---|
INVALID_ACCEPT_HEADER | The 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 Code | Message | Suggestion |
---|---|---|
AUTH_CODE_CANNOT_ACCESS_SCOPE | The authentication code cannot access the requested scopes. | Please ensure the authentication code has the requested scopes. |
AUTH_CODE_EXPIRED | The authentication code has expired. | Please request a new authentication code by calling POST /authentication_codes |
CANNOT_ACCESS_DELEGATED_RESOURCE | The 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_RESOURCE | The 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_APPLICATION | The 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_MERCHANT | The 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_ENABLED | Production 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_AVAILABLE | This 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 Code | Message | Suggestion |
---|---|---|
TIME_LIMIT_EXCEEDED | This 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 Code | Message | Suggestion |
---|---|---|
AMOUNT_EXCEEDS_AUTHORIZED_LIMIT | Gross amount cannot be greater than the authorized gross amount. | Fetch the original payment to identify the maximum amount that can be captured. |
CAPTURE_CURRENCY_MISMATCH | Currency 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_CAPTURE | Only 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_URL | Card is processed as PINless debit but merchant url is not provided. | Add the primary url to the legal entity. |
PAYMENT_CANNOT_BE_REFUNDED
Reason Code | Message | Suggestion |
---|---|---|
PAYMENT_IS_DISPUTED | This 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_COMPLETED | The 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_OLD | The payment must be less than or equal to %s day(s) old. | Stop attempting to refund this payment. |
REFUND_ALREADY_COMPLETED | Payment 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_MISMATCH | The refund currency mismatches the payment currency. | Review the refund currency and ensure it matches the payment currency. |
REFUND_EXCEEDS_ALLOWED_LIMIT | Requested refund amount exceeds allowed amount limit. | Fetch the payment details to determine the amount_refundable . |
REFUND_EXCEEDS_BALANCE | You 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_BALANCE | The 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_AMOUNT | The 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_PERIOD | Failed 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 Code | Message | Suggestion |
---|---|---|
CAPTURE_AT_ALREADY_PASSED | This 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 Code | Message | Suggestion |
---|---|---|
DIGITAL_WALLETS_CERTIFICATE_ERROR | Your certificates are either expired or incorrect | Please reach out to WePay to help resolve the certificate issue or please send us your updated certificates |
PAYMENT_METHOD_CANNOT_BE_MODIFIED
Reason Code | Message | Suggestion |
---|---|---|
ALREADY_DELETED | This 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 Code | Message | Suggestion |
---|---|---|
ALREADY_DELETED | This 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_VERIFIED | This 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_PERMANENTLY | Payment 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 Code | Message | Suggestion |
---|---|---|
CARD_BRAND_DISABLED_FOR_ACCOUNT | This 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 Code | Message | Suggestion |
---|---|---|
PREVIOUSLY_REJECTED | This 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 Code | Message | Suggestion |
---|---|---|
ALREADY_DELETED | This 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_VERIFIED | This 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 Code | Message | Suggestion |
---|---|---|
ALREADY_ACTIVE | This 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_DISABLED | The account does not have the terminals capability. | Merchants must enable the Payments and Payouts capabilities on their Account. |
TERMINAL_CANNOT_BE_CREATED
Reason Code | Message | Suggestion |
---|---|---|
TERMINALS_CAPABILITY_DISABLED | The account does not have the terminals capability. | Merchants must enable the Payments and Payouts capabilities on their Account. |
TERMINAL_CANNOT_BE_DEACTIVATED
Reason Code | Message | Suggestion |
---|---|---|
ALREADY_INACTIVE | This 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 Code | Message | Suggestion |
---|---|---|
TERMINALS_CAPABILITY_DISABLED | The account does not have the terminals capability. | Merchants must enable the Payments and Payouts capabilities on their Account. |
THROTTLE_EXCEEDED
Reason Code | Message | Suggestion |
---|---|---|
APPLICATION_ACCOUNT_LEVEL_REQUEST_THROTTLE_EXCEEDED | The 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_EXCEEDED | The 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_EXCEEDED | The 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 Code | Message | Suggestion |
---|---|---|
TOKEN_FIELD_CONFLICTS_WITH_PROVIDED_FIELD | The 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_PERMISSED | The 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 Code | Message | Suggestion |
---|---|---|
ADDRESS_MISMATCH | The 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_TRANSACT | The card cannot transact. | Notify the user and have them resubmit payment with another card or with their bank account. |
CVV_IS_REQUIRED | CVV 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_MISMATCH | The provided cvv does not match the payment method. | Ask the payer to provide their card details again with the correct CVV number. |
EXPIRED | The payment method has expired. | Ask the payer to provide a different payment method with a valid expiration date. |
GENERAL_DECLINE | The transaction was declined by the issuing bank. | Ask the payer to provide a different payment method or to call their bank. |
INSUFFICIENT_FUNDS | The amount provided exceeds available funds. | Ask the payer to provide a different payment method with sufficient funds. |
LOST_OR_STOLEN | The 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_BANK | The card is rejected by the issuing bank. | Notify the user and have them work with their card issuer before resubmitting payment. |
UNSUPPORTED_CARD_TYPE | The 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 Code | Message | Suggestion |
---|---|---|
TRANSFER_NOT_ELIGIBLE_FOR_CAPTURE | This transfer is not eligible for capture. | Fetch the transfer status to identify why the transfer cannot be captured. |
TRANSFER_CANNOT_BE_CREATED
Reason Code | Message | Suggestion |
---|---|---|
CANNOT_TRANSFER_ACROSS_CURRENCY | The sender account currency mismatches the recipient account currency. | Make sure to create transfers only between accounts with the same currency. |
INSUFFICIENT_BALANCE | The 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 Code | Message | Suggestion |
---|---|---|
APP_DOES_NOT_SUPPORT_ACCOUNTS_FOR_LEGAL_ENTITY_COUNTRY | The 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_MATCH | The 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_COUNTRY | The 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_TYPE | Unsupported country for the payout method type '%s'. | Paper check payouts are only available in the United States. |
UNSUPPORTED_CURRENCY
Reason Code | Message | Suggestion |
---|---|---|
PAYOUT_CURRENCY_NOT_ENABLED_FOR_APP | Payout 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_MISMATCH | The 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_APP | Transfer 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_ACCOUNT | This account does not support the currency '%s'. | Use a currency supported by the account. |
UNSUPPORTED_MEDIA_TYPE
Reason Code | Message | Suggestion |
---|---|---|
UNSUPPORTED_CHARACTER_SET | Unsupported character set '%s'. | Double check the Content-Type header of the request and be sure it has the correct value. |
UNSUPPORTED_PAYMENT_METHOD
Reason Code | Message | Suggestion |
---|---|---|
RISK_REVIEW_DECLINED | Internal risk review declined creating payment method. | |
UNSUPPORTED_CARD_TYPE | The 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_REFUNDS | Unreferenced 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 Code | Error Message |
---|---|
INVALID_PARAMS | Invalid parameter(s). |
TOKEN_CANNOT_BE_CREATED | Token cannot be created. |
TRANSACTION_DECLINED | The transaction was declined by the issuing bank. |
COULD_NOT_AUTHENTICATE | The supplied credentials do not have permission to perform this action. |
INVALID_PARAMS
Reason Code | Message | Suggestion |
---|---|---|
PARAM_VALUE_IS_INVALID_PATTERN | Expected 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_PATTERN | Expected 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_PATTERN | Expected 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 Code | Message | Suggestion |
---|---|---|
NO_ACTION_PERFORMED | No 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 Code | Message | Suggestion |
---|---|---|
INSTITUTE_NOT_RESPONDING | No 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_FOUND | No 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_FOUND | No 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_REQUIRED | Pending 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_BANK | User 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_BANK | This 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 Code | Message | Suggestion |
---|---|---|
INVALID_CREDENTIALS | The 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_MFA | MFA 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. |