# FAQs

This page contains some Frequently Asked Questions and some common errors reported by TPPs, categorised into four main sections:

- [Certificates](#certificates)
- [Consent Authorisations](#consent-authorisation)
- [Access Restrictions](#access-restrictions)
- [Payment Execution](#payment-execution)

## Certificates

### No client registered with `client_id = xxx` and `tls_client_auth_dn = yyy` [!details]

This error can be returned by the `/token` endpoint when you have changed your transport certificate or, in some cases, when your certificate's distinguished name (DN) contains special characters.

- If you have just obtained a new transport certificate, check the guide on how to [rotate your certificate](/docs/guides/build-banking-apps/manage-your-applications/update-certificates). 
- If you have already rotated your certificate and are unable to access the API with the new certificate, reach out to us providing the details:
  1. [Make a request to the `/distinguished-name` endpoint](/docs/guides/build-banking-apps/register-your-application-using-dcr/get-your-certificates-distinguished-name).
  2. Save the full response to a plaintext file, and email it to our [API Support team](mailto:api-requests@revolut.com).

### Can I register several applications with the same certificate? [!details]

Yes. In fact, we recommend that you register separate applications for separate use cases, especially if those applications serve different purposes or correspond to different customer-facing applications.

Every application that you register gets a distinct `client_id`, which you must provide when obtaining the `client_credentials` access tokens.
See an example [here](/docs/guides/build-banking-apps/get-started/get-access-token#example).

### I need to rotate the certificates for my application. Will I face any downtime? [!details]

There is no downtime for rotating signing certificates.
However, when rotating transport certificates, there might be some downtime if the distinguished name of the new certificate is different from the previous one's.

To learn how to rotate the certificates, see the guide: [Update application certificates](/docs/guides/build-banking-apps/manage-your-applications/update-certificates).

## Consent authorisation

### I can create a consent, but the PSU sees a generic error during authorisation [!details]

Check the **JWT** parameters, especially the [`request` **JWT** parameter from the authorisation URL](/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information#4-get-consent-from-the-user):

1. Check that the [JWT parameters](/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information#3-create-a-jwt-url-parameter), especially the `request` parameter, are correct.
2. Make sure that the JSON Web key set (JWKS) endpoint of your application is publicly accessible.
   The link must contain only a raw JSON.
3. Make sure your JWKS contains a JWK for the `kid` you are using in your **JWT**.
4. Make sure that the `n` parameter (for RSA keys) or `x` and `y` parameters (for EC256 keys) in the JWK match those of your signing certificate.
   :::tip
   Check how to [calculate the keys](/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-jwks-url#supported-key-types).
   :::
5. For you to be able to create payment consents, the JWK must contain the signing certificate in the `x5c` parameter.

You can validate your JWK using the [JWK / JWKS / PEM Converter](https://dailydevelopertools.com/jwk-jwks-pem-converter.html) or by checking that the key structure matches the [supported key types](/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-jwks-url#supported-key-types).

### I get the error `Request signature is not valid for key id` [!details]

This error is returned when you call some PIS endpoints.
Those endpoints require a `x-jws-signature` header to be included.

1. Double check that the signature is included and correctly formatted.
   :::tip
   Learn how to [work with JSON web signatures](/docs/guides/build-banking-apps/tutorials/work-with-json-web-signatures). 
   :::
    Pay special attention to the JSON formatting applied to your JWS and your request payload.
2. Additionally, make sure your that your JWKS is correct, and that it contains a JWK for the `kid` you are using in your JWS.

### I created a consent but the PSU sees "Unfortunately your country is not supported" [!details]

When you register an Open Banking application, it has access to certain regions, depending on the certificate which is being used.

For more information, check the guide: [Global customer access controls](/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/global-customer-access-controls).

### I created a consent, but the PSU is asked to contact their administrator [!details]

This can happen when the PSU is a Revolut Business user, and they don't have the necessary permissions for the account.

- For AIS consents, the user must have the permissions to manage integrations, view accounts, and view transactions. 
- For PIS consents, the user must have enough permissions to initiate a transaction of the same amount in the application not subject to additional approval rules.

In addition to the above, the PSU must have their ID verified in the Revolut Business account.

## Access restrictions

### I created a consent, but when querying it, I get a 404 [!details]

This can happen when you are querying the consent with an incorrect application.

1. Check which application you used to obtain the access token.
   It must be the same application that was used to create the consent.
2. If you have created multiple applications with the same certificate, make sure that you provide the correct `client_id` when [requesting the access token](/docs/guides/build-banking-apps/get-started/get-access-token#example).

### I am unable to retrieve transactions before or after a certain date [!details]

There are several restrictions which apply to the timeframe within which you can query PSU transactions.

- When creating a consent, you can define the [optional parametrs](/docs/api/open-banking#create-an-account-access-consent): `ExpirationDateTime`, `TransactionFromDateTime` and `TransactionToDateTime`. 
  If those dates are provided, no transaction which occurred before `TransactionFromDateTime` or after `TransactionToDateTime` will be returned. 
  Additionally, the consent will expire after `ExpirationDateTime`, which means you will no longer be able to query transactions past this date.

- Additionally, if a request for [transactions](/docs/api/open-banking#retrieve-all-transactions) is made later than 5 minutes after the user authorised the consent, no transactions older than 90 days are returned, even if the `TransactionFromDateTime` is set to an earlier date.
  Those 90 days are counted from the moment the request for the transactions is made.

- When the PSU authorises the consent, you will [get an access token](/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information#5-exchange-the-authorisation-code-for-an-access-token) linked to that consent with a validity that will depend on the region assigned to your application: 
  - 50 years for the UK,
  - 180 days for the EU. 
  
  After your access token expires, the user must reauthorise the consent (or authorise a new consent) in order for you to maintain the access.

## Payment execution

### Does Revolut support instant payments? [!details]

Yes. By default, all payments are sent via instant payment schemes if the recipient's bank supports them.
However, we cannot specify which payment scheme is used for a particular payment.

### Why is a payment stuck in `Pending` / `AcceptedSettlementInProcess`? [!details]

By default, all payments are processed via instant schemes, and they typically return the `AcceptedSettlementCompleted` status after just a few seconds.
However, in certain cases, a payment might take longer:

- If the payment has the status `Pending`, it means that it has not yet been submitted for processing.
   This might happen if the payment is still pending some internal checks.

- If the payment has the status `AcceptedSettlementInProcess`, it means that it has already been submitted for processing.

   A payment which is not sent via an instant payment scheme might remain in this status for several hours or days, depending on when the payment is executed and which payment scheme is used.
   After this status, the payment is expected to transition to `AcceptedSettlementCompleted`, unless it is rejected by the recipient's bank or an unexpected technical issue occurs.

:::note
`Pending` is always the first status returned when [you initiate a payment](/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment#6-initiate-the-domestic-payment).
After that, to monitor the progress of the payment at any time, [check the transaction status](/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment#7-check-the-status-of-the-payment).
:::

### Why is my payment not processed as SEPA Instant? [!details]

By default, all EUR domestic payments are processed via SEPA Instant. 
However, in some cases, when this is not possible, the payment is sent via SEPA Credit Transfer.

Furthermore, when processing a SEPA Instant transaction from any Revolut user, if the recipient's bank returns some specific error indicating that SEPA Instant is not supported, the affected IBAN or BIC might be temporarily excluded from future SEPA Instant payments.

If that happens, it affects not just this user but also any other Revolut user initiating a SEPA transaction to this IBAN or BIC, regardless of whether the payment is initiated via the Open Banking API or from the Revolut app.

If you experience this issue and need further assistance, please contact our [API Support team](mailto:api-requests@revolut.com).

### Why wasn’t my GBP payment sent instantly? [!details]

GBP payments over £250,000 can’t be processed via the UK’s Faster Payments scheme. These transactions are sent through the standard payment route instead, resulting in processing times of 1-2 business days.

If you experience this issue and need further assistance, please contact our [API Support team](mailto:api-requests@revolut.com).

### How are consent and payment statuses connected? [!details]

| Consent status          | Payment status                                                                                                                                                                                                                                                                             | What happened                                                                                                                                                                                                                                                                |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AwaitingAuthorisation` | Not yet created                                                                                                                                                                                                                                                                            | [PSU](/docs/guides/build-banking-apps/glossary#:~:text=with%20the%20merchant.-,PSU,-Payment%20Service%20User) has been redirected to the [TPP](/docs/guides/build-banking-apps/glossary#:~:text=CBPIIs%20and%20PISPs.-,TPP,-Third%20Party%20Provider) portal, no action yet. |
| `Authorised`            | Not yet created                                                                                                                                                                                                                                                                            | [PSU](/docs/guides/build-banking-apps/glossary#:~:text=with%20the%20merchant.-,PSU,-Payment%20Service%20User) has approved the consent.                                                                                                                                      |
| `Consumed`              | <ul><li>`Pending` – when initiation successful</li><li>`Rejected` – when the <a href="/docs/guides/build-banking-apps/glossary#:~:text=CBPIIs%20and%20PISPs.-,TPP,-Third%20Party%20Provider" alt="TPP definition">TPP</a> attempted to initiate the payment, but it was rejected</li></ul> | [TPP](/docs/guides/build-banking-apps/glossary#:~:text=CBPIIs%20and%20PISPs.-,TPP,-Third%20Party%20Provider) has attempted payment initiation, thus consuming the consent. The consent changes to `Consumed` regardless of the payment outcome.                              |
| `Consumed`              | `AcceptedSettlementInProcess`                                                                                                                                                                                                                                                              | Revolut is processing the payment.                                                                                                                                                                                                                                           |
| `Consumed`              | <ul><li>`AcceptedSettlementCompleted` – when the payment has been successfully processed</li><li>`Rejected` – when the payment has been rejected</li></ul>                                                                                                                                 | Final payment status; consent remains `Consumed`.                                                                                                                                                                                                                            |