Skip to main content
Yapily uses two error response formats. Check which format your product uses below.

Which Error Format Does My Product Use?

Products using enhanced error format with structured issue codes:
  • Hosted Pages
  • Data Plus
  • Webhooks
  • User & Application Beneficiaries
  • VRP (only for payload validation)
  • Bulk Payment (only for payload validation)
Scroll down to the Enhanced Error Format Documentation section for details.

Enhanced Error Format Documentation

Used by: Hosted Pages, Data Plus, Webhooks, User & Application Beneficiaries, VRP (payload validation), Bulk Payment (payload validation)
This format provides detailed error information with structured issue codes. For other operations, see HTTP Status Code Format Documentation.

Introduction

When you make an API call to Yapily and there is an error, you will receive an error response including error codes and message fields to help you diagnose and solve the error. We recommend building your error handling logic around the Error Codes and Message properties in the response, as these provide the most specific information about the underlying issue.

Response Structure

When receiving an error response, it is important to note that there might be multiple error codes included. To effectively troubleshoot the problem, you need to consider all of these error codes.
When an error occurs, you’ll receive a response with an error object containing an issues array:
{
  "error": {
    "tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
    "code": 400,
    "status": "BAD_REQUEST",
    "supportUrl": "https://support.yapily.com/",
    "source": "YAPILY",
    "issues": [
      {
        "type": "INVALID_PAYLOAD",
        "code": "11001",
        "message": "Timeout error"
      },
      {
        "type": "INVALID_PAYLOAD",
        "code": "11003",
        "message": "Failed third party dependency"
      }
    ]
  }
}
FieldTypeRequiredDescription
tracingIdstringYesA unique ID assigned by Yapily to use as a reference. Provide this if you contact our support team for assistance
codeintegerYesNumeric HTTP status code associated with the error
statusstringYesDescription of the HTTP status error type
supportUrlstringYesThe Yapily support URL where further help and support can be accessed
sourcestringYesIndicates who triggered the failure and therefore can take action to correct it. One of: USER (the PSU), INSTITUTION (bank side error) or YAPILY
issuesarray of objectsNoAll issues that have been experienced whilst processing the request
issues.typestringYesIdentifies the error category
issues.codestringYesIdentifies the specific error that has occurred. See error code catalog
issues.messagestringNoMessage associated with the error
If you need to contact support, we advise you share the error response with us, or if not possible include the tracingId and the error codes so we can identify your request and trace the origin of the issue.

Error Code Structure

The error codes are structured as follows:
  • First 2 digits: Represent the group of the error
  • Last 3 digits: Represent the specific error within the group

Error Catalogue

Below is a list of possible error issue codes, along with additional information about how to resolve them.

Unknown Error

We will be sending this error if we encountered an error we haven’t seen yet and does not have a handler on our side. If you see this error please contact support.
CodeHttp Status CodeTextExplanationAction
0400Unknown errorAn unknown error occurredTry again later

10xxx Pre-Flight Checks

This error group represents issues that occur either before payload and header validation, or during third-party calls that use the data from the original request.
CodeHttp Status CodeTextExplanationAction
10001408Timeout errorThe request timed out as it took too long to respondTry again
10002429Unattended limitToo many requests in a given amount of timeWait before retrying
10003424Failed third party dependencyAn error occurred with a third partyTry again later
10004500Internal server errorInternal server errorReach out to support
10005422Retry limit reachedMaximum number of retries reachedCheck our API documentation on retry handling
10006422Unprocessable entityUnable to process the instructions contained in the requestCheck our API documentation

11xxx Payload Validation

CodeHttp Status CodeTextExplanationAction
11001400The server could not understand the request due to invalid format or syntaxSomething in the request is not specified correctlyCheck our API documentation
11002400Invalid parameterA parameter is not specified correctly, for example too many charactersCheck our API documentation for the field requirements for the request
11003400Missing parameterA required parameter is not included in the requestCheck our API documentation to identify the required parameters for the request

12xxx Request Header Validation

CodeHttp Status CodeTextExplanationAction
12001400Invalid header type or syntaxA header is not specified correctlyCheck our API documentation for the header requirements for the request
12002400Missing mandatory headerA required header is missing from the requestCheck our API documentation to see which headers are required for the request

13xxx Authorisation Process

CodeHttp Status CodeTextExplanationAction
13001401Authorisation header is missingThe authorisation header is missing from the requestAll requests to Yapily API require basic authentication, provide your application username and password in the authorisation header for the request
13002403Authorisation header is invalidThe authorisation header is invalidCheck our API documentation to see how to provide the authorisation header
13003401Authorisation failedYou don’t have permissions to make this request. For example, your credentials have expiredView and manage your credentials in the Yapily Console
13004403ForbiddenYou aren’t permitted to make this requestDon’t try again

14xxx Resource Operation

CodeHttp Status CodeTextExplanationAction
14001404Resource not foundIt’s not possible to retrieve the resource you requestedThe resource likely doesn’t exist or the ID you provided is incorrect
14002400Resource not matchingIt’s not possible to update the resource as the information provided doesn’t match the resourceCheck the information supplied in the request is accurate for that resource
14003400Resource not validThe resource request is incomplete or holds invalid dataCheck our API documentation to see how to submit data for the resource
14004400Resource cannot be modifiedThe resource cannot be updatedDon’t try again
14005409Resource conflictThe resource has already been createdDon’t try again
14006409Resource duplicationA resource with the same ID already existsUse a different, unique value for ID and try again
14007406Resource limit reachedMaximum number of resources that can be created has been reachedDon’t try again

15xxx Payment Process

CodeHttp Status CodeTextExplanationAction
15001400Payment authorisation is declinedThe payment failed user authorisationAsk your end user to re-authorise
15002400Destination and source account currency must matchThe benefactor and beneficiary account must be of the same currency typeUse a different payment scheme that allows for different currency types
15003400Source account has insufficient funds to complete transferThe benefactor’s account doesn’t have enough funds to process the transferAlert the benefactor that they have insufficient funds. Try again after funds have been increased
15004400Client must be the parent client for this applicationThe application is not a child of the parent application submittedCheck the application used before trying again
15005400Exceeded payment limitThe request is higher than the specified payment limitReduce the payment value to below the payment limit and try again
15006400Unsupported schemeThe payment scheme is unsupportedCheck our documentation for the supported payment schemes. Select a supported payment scheme and try again
15007400Destination account must be different from the source accountThe benefactor and beneficiary account details cannot be the sameCheck the payer and payee account details and make sure they are different
15008400The payment you wish to return must be of type PAYOUT with status COMPLETEDYou can only refund payments of type PAYOUT and status COMPLETEDCheck our documentation on refunds. If type PAYOUT, try again when the status is COMPLETED
15009400Verification of payee rejectedThe beneficiary or beneficiaries failed the Verification of Payee (VOP) checkVerify that all payment recipients have successfully passed the VOP check before resubmitting. See Verification of Payee documentation

16xxx Transactions Retrieval Process

CodeHttp Status CodeTextExplanationAction
16001424Institution historical data retrieve timeoutThe request timed out when fetching historical data from the InstitutionLimit the requested transaction period
16002204There are no transactions available for the selected time periodNo transactions were found for the time period specifiedAdjust date parameters and try again
16003424The provided dates are outside the consent fetch windowThe dates provided are outside of the consent fetch windowNarrow your date parameters and try again

17xxx Institution Interaction

CodeHttp Status CodeTextExplanationAction
17001404The institution is not active in provided countryThe institution is not currently available in the country you requestedYou are not able to access the institution in this country at this time
17002404The institution is not registered against your applicationYou must register your application with each institution before you can use Yapily’s API to access data or make a payment with that institutionYou can manage and register with institutions in your Yapily Console. Check our documentation on registration. If you are a Yapily Connect customer, get in touch with Support and we can add the institution to your application
17003404The institution does not match the payment initiation valuesThere is a mismatch between institution data submitted at payment initiation and data we hold about the institutionCheck your submission data and try again
17004424Institution credentials errorThe institution does not recognise credentials providedCheck your credentials and try again
17005424Unsupported resourceThe institution resource is not supportedCheck our documentation for the supported resource. Select a supported resource and try again
17006424Institution Operation TimeoutThere was a timeout due to a slow bank response. This is related to how long the financial institution takes to process our requests, hence the timeoutTry again

18xxx Query Parameters

CodeHttp Status CodeTextExplanationAction
18001400Invalid query parameterA query parameter is not specified correctlyCheck our API documentation for how to specify the query parameter for the request
18002400Missing query parameterA query parameter is missing from the requestCheck our API documentation to see the required query parameter for the request
CodeHttp Status CodeTextExplanationAction
19001400Consent authorisation is declinedConsent provided is not authorised for the triggered operationCheck if the consent is authorised for the triggered operation or if the consent has an authorised state

20xxx Webhook Validation

CodeHttp Status CodeTextExplanationAction
20001400Invalid callback URL syntaxThe callback URL must not contain query parametersProvide the query parameters in the metadata field of the request

21xxx VRP Mandate Validation

CodeHttp Status CodeTextExplanationAction
21001400Mandate either not yet active or already expiredPayment not authorised at this timeCheck mandate control parameters, then either wait until mandate becomes active or request new VRP authorisation from the user
21002500Mandate not foundPayment could not be validated because its mandate was not foundReach out to support
21003400Payment amount exceeds authorised limit per paymentPayment will exceed maximum amount per payment, specified at VRP authorisationSubmit a smaller payment amount or request new VRP authorisation from the user with greater limits
21004400Payment amount exceeds authorised limit over some periodPayment will exceed some maximum amount per frequency, specified at VRP authorisationSubmit a smaller payment amount or wait until the next period starts or request new VRP authorisation from the user with greater limits

HTTP Status Code Format Documentation

Used by: Financial Data (Accounts, Transactions, Balances), Single Payments, Bulk Payments, Authorisations, Consents, Institutions & Users, Variable Recurring Payments (VRPs)

Introduction

After sending an API request, you may receive a response back including an error object. You should build logic to account for any API errors that a request or the system may return. You may also receive an authorisation error after the end user’s redirection to the bank. You should log the query parameters returned from the redirect to understand any failures that occur.

Error Response Fields

All errors are returned with the same structure. The response object contains the following fields for 4XX errors:
FieldTypeRequiredDescription
codeintegerYesNumeric HTTP status code associated with the error
statusstringYesDescription of the HTTP status error type
messagestringYesDescription of the exact error, including Yapily support URL
institutionErrorobjectNoError details provided by the institution when the institution is the source of the error
sourcestringNoIndicates who triggered the failure and therefore can take action to correct it. One of: USER (the PSU), INSTITUTION (bank side error) or YAPILY
tracingIdstringNoA unique ID assigned by Yapily to use as a reference. Provide this if you contact our support team for assistance
500 Internal Server Errors return a simplified structure containing only the message field and tracingId:
{
  "error": {
    "tracingId": "8f3c6d2a1b4e5f9g0h1i2j3k",
    "message": "Internal server error. Please contact support with this tracing ID."
  }
}
Example 4XX error response:
{
  "error": {
    "tracingId": "74b13ce8ed51419f92c5d609e04532de",
    "code": 424,
    "status": "FAILED_DEPENDENCY",
    "message": "The requested resource has not been found in the institution. We can help you on https://support.yapily.com/",
    "source": "INSTITUTION",
    "institutionError": {
      "errorMessage": "{\"Code\":\"400 BadRequest\",\"Id\":\"3517bfc2-c3ee-4f2f-b4f8-12f62478e0d1\",\"Message\":\"No Resource found\",\"Errors\":[{\"ErrorCode\":\"UK.OBIE.Resource.NotFound\",\"Message\":\"No resource found corresponding to the consent id\"}]}",
      "httpStatusCode": 400
    }
  }
}
If you need to contact support, include the tracingId so we can identify your request.

HTTP Response Codes

Yapily uses standard HTTP response codes to indicate the success or failure of an API request.
HTTP status codeHTTP status messageDescriptionAction
200OKEverything worked as expected-
201CreatedA resource was created successfully-
400Bad RequestThe receiving server cannot understand the request because of malformed syntax or a missing fieldCheck and modify the request before repeating
401UnauthorisedMissing, incomplete or invalid credentials (e.g. key, secret, auth token, certificate)Input valid and complete authentication credentials
403ForbiddenInsufficient permissions to process the requestYou don’t have permissions to perform the request
404Not FoundResource not foundIt’s not possible to retrieve the resource you requested. This could be the result of an incorrect URL or the resource doesn’t exist
406Not AcceptableUnacceptable response contentInclude JSON in the list of accepted response values for your application
409ConflictRequest couldn’t be completed due to conflict with current state of target resource (e.g. attempting to create a user that already exists)Consult the message returned in the response body to find the source of conflict
424Failed DependencyUnable to complete the required operations with the institutionThis indicates a bank side error
429Too Many RequestsToo many requests in a given amount of timeWait before retrying
500Internal Server ErrorServer could not process the requestSomething went wrong on Yapily’s end
501Not ImplementedThe requested feature is unavailable for the specified institutionConfirm which features are supported by each institution

Authorisation Errors

Authorisation errors can occur when the user is redirected to the institution to provide their consent. If the user doesn’t provide their consent or there is an issue with the institution, the failure response is returned as query parameters. We recommend you log the query parameters received on your callback URL or redirect URL for all requests so you have access to the information explaining what has occurred. For more information see:

Handling Missing Callbacks

Callbacks may not reach your application due to network issues, browser restrictions, or bank-side errors. When this happens, users can become stuck in incomplete flows. To prevent this, poll the consent or payment status endpoint to check if the authorisation completed successfully. Implementation Steps:
  1. Set a timeout: Wait 10-15 minutes after redirecting the user to the bank
  2. Start polling: If no callback is received, poll at increasing intervals: 1s, 2s, 3s, 5s, 8s, 13s, 21s, 34s. Stop after 8 attempts (~1.5 minutes total).
  3. Handle the result based on the status returned:
    • AUTHORIZED - Continue your flow
    • REJECTED - Show error message to user
    • AWAITING_AUTHORIZATION - User may still be completing authorisation on the bank screen or app
    • FAILED - Show error details
Example Implementation:
async function pollConsentStatus(consentId: string, maxAttempts: number = 9): Promise<string> {
  const delays = [1000, 1000, 2000, 3000, 5000, 8000, 13000, 21000, 34000]; // Fibonacci sequence in milliseconds

  for (let attempt = 0; attempt < maxAttempts; attempt++) {
    await sleep(delays[attempt]);

    const status = await getConsentStatus(consentId);

    // If authorisation complete, return status
    if (status !== 'AWAITING_AUTHORIZATION') {
      return status;
    }
  }

  // Final check after all attempts
  return await getConsentStatus(consentId);
}
If Using Yapily Connect (https://auth.yapily.com/): Contact Yapily Support with your consent or payment ID if you receive no callback. We log all redirects to our URL and can investigate. If Using Your Own Redirect URL: You must implement the polling strategy above. Yapily cannot log redirects to your URL, so ensure your endpoint has comprehensive logging to diagnose failures.

When to Contact Support

If you encounter errors that you cannot resolve:
  1. Collect the error details:
    • tracingId from the error response
    • Full error response body
    • Request details (endpoint, parameters)
  2. Review the documentation:
    • Check the error code catalog above
    • Verify your request format matches our API Reference
    • Review product-specific documentation
  3. Contact support:
    • Visit our Support page
    • Include the tracingId in your message
    • Provide context about what you’re trying to accomplish
Our support team can help investigate issues and provide guidance on resolving errors.