OPT-OAU-005Bank's choiceOAuth2 and tokens

Code and token lifetime

How long do the authorization code and the access token live?

The options

  • Authorization code

    Ten minutes, as recommended by RFC 6749. The server sets its own value.

  • Access token

    expires_in is optional in every token response.

Bank side
For the PISP confirmation token, the spec asks the server to set a lifetime that limits its use, and to issue no refresh token.
TPP side
Do not assume a lifetime. An expired token returns 401 invalid_token.

Entry checked on October 19, 2026.

Based on the STET PSD2 API 1.6.3 specification, licensed CC BY 3.0 FR.

The entry as stored
{
  "id": "OPT-OAU-005",
  "edition": "1.6.3",
  "chooser": "aspsp",
  "title": {
    "fr": "Durée de vie du code et du token",
    "en": "Code and token lifetime",
    "es": "Tiempo de vida del código y del token",
    "pt-br": "Tempo de vida do código e do token"
  },
  "question": {
    "fr": "Combien de temps vivent le code d'autorisation et l'access token ?",
    "en": "How long do the authorization code and the access token live?",
    "es": "¿Cuánto duran el código de autorización y el access token?",
    "pt-br": "Por quanto tempo valem o código de autorização e o access token?"
  },
  "options": [
    {
      "label": {
        "fr": "Code d'autorisation",
        "en": "Authorization code",
        "es": "Código de autorización",
        "pt-br": "Código de autorização"
      },
      "text": {
        "fr": "Dix minutes recommandées par la RFC 6749. Le serveur fixe sa propre valeur.",
        "en": "Ten minutes, as recommended by RFC 6749. The server sets its own value.",
        "es": "Diez minutos, según recomienda la RFC 6749. El servidor fija su propio valor.",
        "pt-br": "A RFC 6749 recomenda dez minutos. O servidor define o próprio valor."
      }
    },
    {
      "label": {
        "fr": "Access token",
        "en": "Access token",
        "es": "Access token",
        "pt-br": "Access token"
      },
      "text": {
        "fr": "`expires_in` est optionnel dans toutes les réponses token.",
        "en": "`expires_in` is optional in every token response.",
        "es": "`expires_in` es opcional en todas las respuestas de token.",
        "pt-br": "`expires_in` é opcional em todas as respostas de token."
      }
    }
  ],
  "stet": {
    "sections": [
      {
        "part": "framework",
        "section": "3.4.2.3",
        "page": 27
      },
      {
        "part": "framework",
        "section": "3.4.5.3",
        "page": 51
      }
    ],
    "openapi": [],
    "flows": [],
    "changes": [],
    "remark": null
  },
  "aspsp": {
    "fr": "Pour le token de confirmation PISP, la spec demande au serveur une durée de vie qui limite son usage, et aucun refresh token.",
    "en": "For the PISP confirmation token, the spec asks the server to set a lifetime that limits its use, and to issue no refresh token.",
    "es": "Para el token de confirmación PISP, la especificación pide al servidor un tiempo de vida que limite su uso, y ningún refresh token.",
    "pt-br": "Para o token de confirmação PISP, a especificação pede ao servidor um tempo de vida que limite o seu uso, e nenhum refresh token."
  },
  "tpp": {
    "fr": "Ne pas supposer de durée. Un token expiré renvoie 401 `invalid_token`.",
    "en": "Do not assume a lifetime. An expired token returns 401 `invalid_token`.",
    "es": "No suponer ninguna duración. Un token expirado devuelve 401 `invalid_token`.",
    "pt-br": "Não supor nenhuma duração. Um token expirado retorna 401 `invalid_token`."
  },
  "regulation": null,
  "note": null,
  "production": null,
  "verifiedAt": "2026-10-19"
}