1:I["911c8e14a321",[],"RevpressProvider",1] 2:I["b0b3943575f9",[],"Link",1] 3:I["cdb22823b999",[],"MenuGroupItem",1] 8:I["98d563c3c055",[],"ToastProvider",1] 9:I["9ab2c8c971c4",[],"LayoutTopNav",1] a:I["3c81c6443917",[],"LayoutMenu",1] b:I["98d563c3c055",[],"Tag",1] c:I["98d563c3c055",[],"Action",1] e:I["e7f2352d5acc",[],"ApiAuthentication",1] :HL["/_assets/request-CDxOZxWD.css","stylesheet"] :HL["https://assets.revolut.com/Brand/Retail/Logos/Wordmark/Revolut_Black.svg","image"] :HL["https://assets.revolut.com/Brand/Retail/Logos/Wordmark/Revolut_White.svg","image"] 0:{"root":["$","html",null,{"suppressHydrationWarning":true,"lang":"en","data-feature-web-density":"true","data-banner-id":"$undefined","children":[["$","head",null,{"children":[[["$","meta",null,{"charSet":"utf-8"}],["$","meta",null,{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta",null,{"name":"color-scheme","content":"light dark"}],["$","meta",null,{"name":"generator","content":"Revpress v0.9.4"}],["$","meta",null,{"property":"og:site_name","content":"Developer"}],["$","meta",null,{"property":"og:type","content":"website"}]],[["$","link","css:/_assets/request-CDxOZxWD.css",{"rel":"stylesheet","precedence":"vite-rsc/importer-resources","href":"/_assets/request-CDxOZxWD.css","data-rsc-css-href":"/_assets/request-CDxOZxWD.css"}],"$undefined"],["$","script",null,{"src":"/_assets/theme-init-2d2b4912.js"}],[["$","link",null,{"rel":"apple-touch-icon","sizes":"180x180","href":"/_assets/favicons/apple-touch-icon.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"32x32","href":"/_assets/favicons/favicon-32x32.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"16x16","href":"/_assets/favicons/favicon-16x16.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"192x192","href":"/_assets/favicons/android-chrome-192x192.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"512x512","href":"/_assets/favicons/android-chrome-512x512.png"}],["$","link",null,{"rel":"shortcut icon","href":"/_assets/favicons/favicon.ico"}]]]}],["$","body",null,{"className":"pjjwra0","children":["$","$L1",null,{"nav":[{"item":{"id":"Guides","title":"Guides","items":[{"id":"/docs/guides/merchant/introduction","title":"Merchant","use":"$2","to":"/docs/guides/merchant/introduction","scope":"/docs/guides/merchant","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction","title":"Accept Revolut Pay payments","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction","title":"Accept card payments","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction","title":"Accept Apple Pay and Google Pay payments","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction","title":"Accept direct bank payments","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction","title":"Accept payments with Revolut Checkout","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction","title":"Accept payments via Hosted Checkout Page","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/introduction","title":"Accept payments via SEPA Direct Debit","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/introduction","title":"Accept payments via Click to Pay","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/introduction","title":"Plugins and integrations","use":"$2","to":"/docs/guides/merchant/accept-payments/no-code/plugins/introduction","scope":"/docs/guides/merchant"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/introduction","title":"In-person payments","use":"$2","to":"/docs/guides/merchant/accept-payments/in-person-payments/introduction","scope":"/docs/guides/merchant"}]},{"id":"/docs/guides/manage-accounts/introduction","title":"Business","use":"$2","to":"/docs/guides/manage-accounts/introduction","scope":"/docs/guides/manage-accounts","items":[{"id":"/docs/guides/manage-accounts/transfers/send-money","title":"Send money","use":"$2","to":"/docs/guides/manage-accounts/transfers/send-money","scope":"/docs/guides/manage-accounts"},{"id":"/docs/guides/manage-accounts/accounts-and-transactions/manage-your-accounts","title":"Manage your money","use":"$2","to":"/docs/guides/manage-accounts/accounts-and-transactions/manage-your-accounts","scope":"/docs/guides/manage-accounts"},{"id":"/docs/guides/manage-accounts/exchange-money","title":"Exchange currency","use":"$2","to":"/docs/guides/manage-accounts/exchange-money","scope":"/docs/guides/manage-accounts"},{"id":"/docs/guides/manage-accounts/cards/manage-cards","title":"Manage cards","use":"$2","to":"/docs/guides/manage-accounts/cards/manage-cards","scope":"/docs/guides/manage-accounts"},{"id":"/docs/guides/manage-accounts/teams/manage-team-members","title":"Manage your team","use":"$2","to":"/docs/guides/manage-accounts/teams/manage-team-members","scope":"/docs/guides/manage-accounts"}]},{"id":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/introduction","title":"Open Banking","use":"$2","to":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/introduction","scope":"/docs/guides/build-banking-apps","items":[{"id":"/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment","title":"Make payments","use":"$2","to":"/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment","scope":"/docs/guides/build-banking-apps"},{"id":"/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information","title":"Get account information","use":"$2","to":"/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information","scope":"/docs/guides/build-banking-apps"}]},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/introduction-to-revolut-ramp","title":"Crypto Ramp","use":"$2","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/introduction-to-revolut-ramp","scope":"/docs/guides/crypto-ramp","items":[{"id":"/docs/guides/crypto-ramp/get-started/integrate-with-revolut-ramp","title":"Integrate with Revolut Ramp","use":"$2","to":"/docs/guides/crypto-ramp/get-started/integrate-with-revolut-ramp","scope":"/docs/guides/crypto-ramp"}]}]}},{"item":{"id":"APIs","title":"APIs","items":[{"id":"/docs/api/merchant","title":"Merchant API","use":"$2","to":"/docs/api/merchant","items":[{"id":"/docs/api/merchant#tag-orders","title":"Orders","use":"$2","to":"/docs/api/merchant#tag-orders"},{"id":"/docs/api/merchant#tag-customers","title":"Customers","use":"$2","to":"/docs/api/merchant#tag-customers"},{"id":"/docs/api/merchant#tag-payments","title":"Payments","use":"$2","to":"/docs/api/merchant#tag-payments"},{"id":"/docs/api/merchant#tag-subscriptions","title":"Subscriptions","use":"$2","to":"/docs/api/merchant#tag-subscriptions"},{"id":"/docs/api/merchant#tag-payouts","title":"Payouts","use":"$2","to":"/docs/api/merchant#tag-payouts"},{"id":"/docs/api/merchant#tag-disputes","title":"Disputes","use":"$2","to":"/docs/api/merchant#tag-disputes"},{"id":"/docs/api/merchant#tag-report-runs","title":"Report runs","use":"$2","to":"/docs/api/merchant#tag-report-runs"},{"id":"/docs/api/merchant#tag-webhooks","title":"Webhooks","use":"$2","to":"/docs/api/merchant#tag-webhooks"},{"id":"/docs/api/merchant#tag-locations","title":"Locations","use":"$2","to":"/docs/api/merchant#tag-locations"}]},{"id":"/docs/api/business","title":"Business API","use":"$2","to":"/docs/api/business","items":[{"id":"/docs/api/business#tag-accounting","title":"Accounting settings","use":"$2","to":"/docs/api/business#tag-accounting"},{"id":"/docs/api/business#tag-accounts","title":"Accounts","use":"$2","to":"/docs/api/business#tag-accounts"},{"id":"/docs/api/business#tag-cards","title":"Cards","use":"$2","to":"/docs/api/business#tag-cards"},{"id":"/docs/api/business#tag-counterparties","title":"Counterparties","use":"$2","to":"/docs/api/business#tag-counterparties"},{"id":"/docs/api/business#tag-expenses","title":"Expenses","use":"$2","to":"/docs/api/business#tag-expenses"},{"id":"/docs/api/business#tag-foreign-exchange","title":"Foreign exchange","use":"$2","to":"/docs/api/business#tag-foreign-exchange"},{"id":"/docs/api/business#tag-payment-drafts","title":"Payment drafts","use":"$2","to":"/docs/api/business#tag-payment-drafts"},{"id":"/docs/api/business#tag-payout-links","title":"Payout links","use":"$2","to":"/docs/api/business#tag-payout-links"},{"id":"/docs/api/business#tag-teams","title":"Teams","use":"$2","to":"/docs/api/business#tag-teams"},{"id":"/docs/api/business#tag-transactions","title":"Transactions","use":"$2","to":"/docs/api/business#tag-transactions"},{"id":"/docs/api/business#tag-transfers","title":"Transfers","use":"$2","to":"/docs/api/business#tag-transfers"},{"id":"/docs/api/business#tag-webhooks-v2","title":"Webhooks","use":"$2","to":"/docs/api/business#tag-webhooks-v2"}]},{"id":"/docs/api/open-banking","title":"Open Banking API","use":"$2","to":"/docs/api/open-banking","items":[{"id":"/docs/api/open-banking#tag-accounts","title":"Accounts","use":"$2","to":"/docs/api/open-banking#tag-accounts"},{"id":"/docs/api/open-banking#tag-applications","title":"Applications","use":"$2","to":"/docs/api/open-banking#tag-applications"},{"id":"/docs/api/open-banking#tag-domestic-payment","title":"Payments","use":"$2","to":"/docs/api/open-banking#tag-domestic-payment"},{"id":"/docs/api/open-banking#tag-transactions","title":"Transactions","use":"$2","to":"/docs/api/open-banking#tag-transactions"}]},{"id":"/docs/api/crypto-ramp","title":"Crypto Ramp API","use":"$2","to":"/docs/api/crypto-ramp","items":[{"id":"/docs/api/crypto-ramp#tag-partners","title":"Partners","use":"$2","to":"/docs/api/crypto-ramp#tag-partners"},{"id":"/docs/api/crypto-ramp#tag-webhooks","title":"Webhooks","use":"$2","to":"/docs/api/crypto-ramp#tag-webhooks"}]},{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","title":"Crypto Exchange APIs","use":"$2","to":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","scope":"/docs/guides/exchange-fix-api","items":[{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","title":"Crypto Exchange FIX API","use":"$2","to":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","scope":"/docs/guides/exchange-fix-api"},{"id":"/docs/api/revolut-x-crypto-exchange","title":"Crypto Exchange REST API","use":"$2","to":"/docs/api/revolut-x-crypto-exchange"}]}]}},{"item":{"id":"SDKs","title":"SDKs","items":[{"id":"/docs/sdks/merchant-web-sdk/introduction","title":"Merchant Web SDKs","use":"$2","to":"/docs/sdks/merchant-web-sdk/introduction","scope":"/docs/sdks/merchant-web-sdk","items":[{"id":"/docs/sdks/merchant-web-sdk/payment-methods/embedded-checkout","title":"Revolut Checkout","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/embedded-checkout","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/revolut-pay","title":"Revolut Pay","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/revolut-pay","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/apple-pay-google-pay","title":"Apple Pay and Google Pay","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/apple-pay-google-pay","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/pay-by-bank","title":"Pay by Bank","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/pay-by-bank","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/sepa-direct-debit","title":"SEPA Direct Debit","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/sepa-direct-debit","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/click-to-pay","title":"Click to Pay","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/click-to-pay","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/card-field","title":"Card field","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/card-field","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/pop-up","title":"Card pop-up","use":"$2","to":"/docs/sdks/merchant-web-sdk/payment-methods/pop-up","scope":"/docs/sdks/merchant-web-sdk"},{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets/introduction","title":"Promotional widgets","use":"$2","to":"/docs/sdks/merchant-web-sdk/promotional-widgets/introduction","scope":"/docs/sdks/merchant-web-sdk"}]},{"id":"/docs/sdks/merchant-ios-sdk/introduction","title":"Merchant iOS SDKs","use":"$2","to":"/docs/sdks/merchant-ios-sdk/introduction","scope":"/docs/sdks/merchant-ios-sdk","items":[{"id":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/introduction","title":"Revolut Pay","use":"$2","to":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/introduction","scope":"/docs/sdks/merchant-ios-sdk"},{"id":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/introduction","title":"Apple Pay","use":"$2","to":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/introduction","scope":"/docs/sdks/merchant-ios-sdk"},{"id":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/introduction","title":"Tap to Pay","use":"$2","to":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/introduction","scope":"/docs/sdks/merchant-ios-sdk"},{"id":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/introduction","title":"Card Form","use":"$2","to":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/introduction","scope":"/docs/sdks/merchant-ios-sdk"}]},{"id":"/docs/sdks/merchant-android-sdk/introduction","title":"Merchant Android SDKs","use":"$2","to":"/docs/sdks/merchant-android-sdk/introduction","scope":"/docs/sdks/merchant-android-sdk","items":[{"id":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/introduction","title":"Revolut Pay","use":"$2","to":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/introduction","scope":"/docs/sdks/merchant-android-sdk"},{"id":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/introduction","title":"Card Form","use":"$2","to":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/introduction","scope":"/docs/sdks/merchant-android-sdk"}]},{"id":"/docs/sdks/revolut-id-sdk/introduction","title":"Revolut ID SDKs","use":"$2","to":"/docs/sdks/revolut-id-sdk/introduction","scope":"/docs/sdks/revolut-id-sdk","items":[{"id":"/docs/sdks/revolut-id-sdk/web/introduction","title":"Web","use":"$2","to":"/docs/sdks/revolut-id-sdk/web/introduction","scope":"/docs/sdks/revolut-id-sdk"},{"id":"/docs/sdks/revolut-id-sdk/ios/introduction","title":"iOS","use":"$2","to":"/docs/sdks/revolut-id-sdk/ios/introduction","scope":"/docs/sdks/revolut-id-sdk"},{"id":"/docs/sdks/revolut-id-sdk/android/introduction","title":"Android","use":"$2","to":"/docs/sdks/revolut-id-sdk/android/introduction","scope":"/docs/sdks/revolut-id-sdk"}]}]}},{"item":{"id":"Resources","title":"Resources","items":[{"id":"/docs/resources/marketing-guidelines","title":"Revolut Pay marketing assets and guidelines","use":"$2","to":"/docs/resources/marketing-guidelines","scope":"/docs/resources"},{"id":"/docs/resources/revolut-pay-button-guidelines","title":"Revolut Pay button guidelines","use":"$2","to":"/docs/resources/revolut-pay-button-guidelines","scope":"/docs/resources"},{"id":"/docs/resources/open-banking-logo-guidelines","title":"Revolut Open Banking logo assets and guidelines","use":"$2","to":"/docs/resources/open-banking-logo-guidelines","scope":"/docs/resources"}]}},{"item":{"id":"More","title":"More","items":[{"id":"/blog","title":"Blog","use":"$2","to":"/blog","scope":"/blog"},{"id":"https://developer.revolut.com/portal/signup","title":"Developer Portal","use":"a","href":"https://developer.revolut.com/portal/signup","target":"_blank","rel":"noreferrer"}]}}],"menu":{"docs":[{"id":"/docs","title":"Docs","use":"$2","items":[{"id":"/docs/guides","title":"Guides","use":"$2","items":[]},{"id":"/docs/sdks","title":"Sdks","use":"$2","items":[]}]},{"id":"/docs/guides/api-console","title":"API Console","use":"$2","root":true,"items":[{"id":"/docs/guides/api-console/introduction","title":"Introduction","to":"/docs/guides/api-console/introduction","use":"$2"},{"id":"/docs/guides/api-console/get-started","title":"Get started","to":"/docs/guides/api-console/get-started","use":"$2"},{"id":"separator-/docs/guides/api-console-2-API KEY MANAGEMENT","title":"API KEY MANAGEMENT","use":"$3"},{"id":"/docs/guides/api-console/create-key","title":"Create an API key","to":"/docs/guides/api-console/create-key","use":"$2"},{"id":"/docs/guides/api-console/signing-requirements","title":"Signing requirements","to":"/docs/guides/api-console/signing-requirements","use":"$2"},{"id":"/docs/guides/api-console/manage-key-permissions","title":"Manage API key settings","to":"/docs/guides/api-console/manage-key-permissions","use":"$2"},{"id":"/docs/guides/api-console/replicate-key-to-production","title":"Replicate an API key to Production","to":"/docs/guides/api-console/replicate-key-to-production","use":"$2"},{"id":"/docs/guides/api-console/rotate-api-key","title":"Rotate an API key","to":"/docs/guides/api-console/rotate-api-key","use":"$2"},{"id":"separator-/docs/guides/api-console-8-TESTING & INTEGRATION","title":"TESTING & INTEGRATION","use":"$3"},{"id":"/docs/guides/api-console/make-a-request","title":"Make a request","to":"/docs/guides/api-console/make-a-request","use":"$2"},{"id":"/docs/guides/api-console/test-with-sandbox","title":"Test your integration with Revolut Sandbox","to":"/docs/guides/api-console/test-with-sandbox","use":"$2"},{"id":"/docs/guides/api-console/set-up-postman","title":"Set up Postman","to":"/docs/guides/api-console/set-up-postman","use":"$2"}]},{"id":"/docs/guides/build-banking-apps","title":"Build Banking Apps","use":"$2","root":true,"items":[{"id":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api","title":"Introduction to the Open Banking API","use":"$2","items":[{"id":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/introduction","title":"Introduction","to":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/introduction","use":"$2"},{"id":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/who-can-access-the-api","title":"Who can access the API","to":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/who-can-access-the-api","use":"$2"},{"id":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/global-customer-access-controls","title":"Global customer access controls","to":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/global-customer-access-controls","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/get-started","title":"Get started","use":"$2","items":[{"id":"/docs/guides/build-banking-apps/get-started/register-your-application-in-the-developer-portal","title":"1. Register your application in the Developer Portal","to":"/docs/guides/build-banking-apps/get-started/register-your-application-in-the-developer-portal","use":"$2"},{"id":"/docs/guides/build-banking-apps/get-started/prepare-sandbox-environment","title":"2. Prepare your Sandbox environment","to":"/docs/guides/build-banking-apps/get-started/prepare-sandbox-environment","use":"$2"},{"id":"/docs/guides/build-banking-apps/get-started/setup-prod-environment","title":"3. Set up production environment","to":"/docs/guides/build-banking-apps/get-started/setup-prod-environment","use":"$2"},{"id":"/docs/guides/build-banking-apps/get-started/get-access-token","title":"4. Get the access token","to":"/docs/guides/build-banking-apps/get-started/get-access-token","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr","title":"Register your application using DCR","use":"$2","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr","items":[{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-jwks-url","title":"1. Get the JWKs URL","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-jwks-url","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-software-statement","title":"2. Get the software statement","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-the-software-statement","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-your-certificates-distinguished-name","title":"3. Get your certificate's distinguished name","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-your-certificates-distinguished-name","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/create-a-jwt","title":"4. Create a JWT","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/create-a-jwt","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/validate-your-jwt","title":"5. Validate your JWT","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/validate-your-jwt","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-a-client-id","title":"6. Get a client ID","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/get-a-client-id","use":"$2"},{"id":"/docs/guides/build-banking-apps/register-your-application-using-dcr/open-id-configuration-urls","title":"Open ID configuration URLs","to":"/docs/guides/build-banking-apps/register-your-application-using-dcr/open-id-configuration-urls","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/manage-your-applications","title":"Manage your applications","use":"$2","items":[{"id":"/docs/guides/build-banking-apps/manage-your-applications/get-an-application","title":"Retrieve application data","to":"/docs/guides/build-banking-apps/manage-your-applications/get-an-application","use":"$2"},{"id":"/docs/guides/build-banking-apps/manage-your-applications/update-an-application","title":"Update application data","to":"/docs/guides/build-banking-apps/manage-your-applications/update-an-application","use":"$2"},{"id":"/docs/guides/build-banking-apps/manage-your-applications/update-certificates","title":"Update application certificates","to":"/docs/guides/build-banking-apps/manage-your-applications/update-certificates","use":"$2"},{"id":"/docs/guides/build-banking-apps/manage-your-applications/delete-an-application","title":"Delete an application","to":"/docs/guides/build-banking-apps/manage-your-applications/delete-an-application","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/tutorials","title":"Tutorials","use":"$2","items":[{"id":"/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information","title":"Get account and transaction information","to":"/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment","title":"Initiate your first payment","to":"/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/test-with-postman","title":"Test with Postman","use":"$2","items":[{"id":"/docs/guides/build-banking-apps/tutorials/test-with-postman/set-up-postman","title":"Set up Postman","to":"/docs/guides/build-banking-apps/tutorials/test-with-postman/set-up-postman","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/test-with-postman/get-an-account-access-consent","title":"Get an account access consent","to":"/docs/guides/build-banking-apps/tutorials/test-with-postman/get-an-account-access-consent","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/test-with-postman/get-a-payment-consent","title":"Get a payment consent","to":"/docs/guides/build-banking-apps/tutorials/test-with-postman/get-a-payment-consent","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/tutorials/create-a-file-payment","title":"Create a file payment","to":"/docs/guides/build-banking-apps/tutorials/create-a-file-payment","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/create-your-first-draft-payment","title":"Create your first draft payment","to":"/docs/guides/build-banking-apps/tutorials/create-your-first-draft-payment","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/work-with-draft-payments","title":"Work with draft payments","to":"/docs/guides/build-banking-apps/tutorials/work-with-draft-payments","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/work-with-json-web-tokens","title":"Work with JSON Web Tokens","to":"/docs/guides/build-banking-apps/tutorials/work-with-json-web-tokens","use":"$2"},{"id":"/docs/guides/build-banking-apps/tutorials/work-with-json-web-signatures","title":"Work with JSON Web Signatures","to":"/docs/guides/build-banking-apps/tutorials/work-with-json-web-signatures","use":"$2"}]},{"id":"/docs/guides/build-banking-apps/api-metrics","title":"API metrics","to":"/docs/guides/build-banking-apps/api-metrics","use":"$2"},{"id":"/docs/guides/build-banking-apps/usage-and-limits","title":"Usage and limits","to":"/docs/guides/build-banking-apps/usage-and-limits","use":"$2"},{"id":"/docs/guides/build-banking-apps/glossary","title":"Glossary","to":"/docs/guides/build-banking-apps/glossary","use":"$2"},{"id":"/docs/guides/build-banking-apps/faqs","title":"FAQs","to":"/docs/guides/build-banking-apps/faqs","use":"$2"},{"id":"/docs/guides/build-banking-apps/errors","title":"Errors","to":"/docs/guides/build-banking-apps/errors","use":"$2"}]},{"id":"/docs/guides/crypto-ramp","title":"Crypto Ramp","use":"$2","root":true,"items":[{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp","title":"Introduction to Revolut Ramp","use":"$2","items":[{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/introduction-to-revolut-ramp","title":"Introduction","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/introduction-to-revolut-ramp","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/partner-journey","title":"Partner journey","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/partner-journey","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details","title":"Coverage and other details","use":"$2","items":[{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/crypto-tokens","title":"Tokens","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/crypto-tokens","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/currencies-and-regions","title":"Currencies and regions","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/currencies-and-regions","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/payment-options","title":"Payment options","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/payment-options","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/limits-and-fees","title":"Limits and fees","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/coverage-and-other-details/limits-and-fees","use":"$2"}]},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/integration-options","title":"Integration with Revolut Ramp","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/integration-options","use":"$2"},{"id":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/configuration-options","title":"Configuration options","to":"/docs/guides/crypto-ramp/introduction-to-revolut-ramp/configuration-options","use":"$2"}]},{"id":"/docs/guides/crypto-ramp/get-started","title":"Get started","use":"$2","items":[{"id":"/docs/guides/crypto-ramp/get-started/integrate-with-revolut-ramp","title":"Integrate with Revolut Ramp","to":"/docs/guides/crypto-ramp/get-started/integrate-with-revolut-ramp","use":"$2"},{"id":"/docs/guides/crypto-ramp/get-started/initiate-transaction","title":"Initiate a transaction","to":"/docs/guides/crypto-ramp/get-started/initiate-transaction","use":"$2"},{"id":"/docs/guides/crypto-ramp/get-started/customer-perspective","title":"Create an order - customer's perspective","to":"/docs/guides/crypto-ramp/get-started/customer-perspective","use":"$2"}]},{"id":"/docs/guides/crypto-ramp/tutorials","title":"API usage and testing","use":"$2","items":[{"id":"/docs/guides/crypto-ramp/tutorials/test-the-integration","title":"Test the integration","to":"/docs/guides/crypto-ramp/tutorials/test-the-integration","use":"$2"},{"id":"/docs/guides/crypto-ramp/tutorials/use-the-api","title":"Leverage the Crypto Ramp API","to":"/docs/guides/crypto-ramp/tutorials/use-the-api","use":"$2"},{"id":"/docs/guides/crypto-ramp/tutorials/work-with-webhooks","title":"Work with webhooks","use":"$2","items":[{"id":"/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks","title":"Track order and payment lifecycle","to":"/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks","use":"$2"},{"id":"/docs/guides/crypto-ramp/tutorials/work-with-webhooks/verify-the-payload-signature","title":"Verify the payload signature","to":"/docs/guides/crypto-ramp/tutorials/work-with-webhooks/verify-the-payload-signature","use":"$2"}]}]},{"id":"/docs/guides/crypto-ramp/glossary","title":"Glossary","to":"/docs/guides/crypto-ramp/glossary","use":"$2"}]},{"id":"/docs/guides/exchange-fix-api","title":"Exchange FIX API","use":"$2","root":true,"items":[{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api","title":"Introduction to the Revolut Exchange FIX API","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","title":"Introduction","to":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/exchange-fix-api","use":"$2"},{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/system-overview","title":"System overview","to":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/system-overview","use":"$2"},{"id":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/reading-instructions","title":"Reading instructions","to":"/docs/guides/exchange-fix-api/introduction-to-the-exchange-fix-api/reading-instructions","use":"$2"}]},{"id":"/docs/guides/exchange-fix-api/trading-fix-api","title":"Trading FIX API","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages","title":"Supported FIX messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/supported-fix-messages-trading-overview","title":"Overview","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/supported-fix-messages-trading-overview","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages","title":"Session level messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon","title":"A (Logon)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat","title":"0 (Heartbeat)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request","title":"1 (Test request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request","title":"2 (Resend request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject","title":"3 (Session level reject)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence","title":"4 (Sequence reset)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout","title":"5 (Logout)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout","use":"$2"}]},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages","title":"Application level messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-header","title":"Standard message header","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-header","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-trailer","title":"Standard message trailer","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-trailer","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/order-state-transitions","title":"Order state transitions","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/order-state-transitions","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/currency-pairs","title":"Currency pairs","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/currency-pairs","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/order-rejection-codes","title":"Order rejection codes","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/order-rejection-codes","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-D-new-order-single","title":"D (New order - single)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-D-new-order-single","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-F-order-cancel-request","title":"F (Order cancel request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-F-order-cancel-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-G-order-cancel-replace-request","title":"G (Order cancel/replace request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-G-order-cancel-replace-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-H-order-status-request","title":"H (Order status request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-H-order-status-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-q-order-mass-cancel-request","title":"q (Order mass cancel request)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-q-order-mass-cancel-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-8-execution-report","title":"8 (Execution report)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-8-execution-report","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-9-order-cancel-reject","title":"9 (Order cancel reject)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-9-order-cancel-reject","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-j-business-message-reject","title":"j (Business message reject)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-j-business-message-reject","use":"$2"},{"id":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-r-order-mass-cancel-report","title":"r (Order mass cancel report)","to":"/docs/guides/exchange-fix-api/trading-fix-api/supported-fix-messages/fix-application-level-messages/message-r-order-mass-cancel-report","use":"$2"}]}]}]},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api","title":"Market Data FIX API","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages","title":"Supported FIX messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/supported-fix-messages-market-data-overview","title":"Overview","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/supported-fix-messages-market-data-overview","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages","title":"Session level messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon","title":"A (Logon)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-A-logon","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat","title":"0 (Heartbeat)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-0-heartbeat","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request","title":"1 (Test request)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-1-test-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request","title":"2 (Resend request)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-2-resend-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject","title":"3 (Session level reject)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-3-session-level-reject","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence","title":"4 (Sequence reset)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-4-reset-sequence","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout","title":"5 (Logout)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-session-level-messages/message-5-logout","use":"$2"}]},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages","title":"Application level messages","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-header","title":"Standard message header","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-header","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-trailer","title":"Standard message trailer","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/standard-message-trailer","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/currency-pairs","title":"Currency pairs","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/currency-pairs","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-v-market-data-request","title":"V (Market data request)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-v-market-data-request","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-w-full-refresh","title":"W (Market Data - Snapshot/Full refresh)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-w-full-refresh","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-x-incremental-refresh","title":"X (Market Data - Incremental Refresh)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-x-incremental-refresh","use":"$2"},{"id":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-y-market-data-request-reject","title":"Y (Market Data Request Reject)","to":"/docs/guides/exchange-fix-api/market-data-fix-api/supported-fix-messages/fix-application-level-messages/message-y-market-data-request-reject","use":"$2"}]}]}]},{"id":"/docs/guides/exchange-fix-api/fix-session-management","title":"FIX session management","use":"$2","items":[{"id":"/docs/guides/exchange-fix-api/fix-session-management/starting-session-and-authentication","title":"Starting session and authentication","to":"/docs/guides/exchange-fix-api/fix-session-management/starting-session-and-authentication","use":"$2"},{"id":"/docs/guides/exchange-fix-api/fix-session-management/session-termination","title":"Session termination","to":"/docs/guides/exchange-fix-api/fix-session-management/session-termination","use":"$2"},{"id":"/docs/guides/exchange-fix-api/fix-session-management/reject-handling","title":"Reject handling","to":"/docs/guides/exchange-fix-api/fix-session-management/reject-handling","use":"$2"}]}]},{"id":"/docs/guides/manage-accounts","title":"Manage Accounts","use":"$2","root":true,"items":[{"id":"/docs/guides/manage-accounts/introduction","title":"Introduction to the Business API","to":"/docs/guides/manage-accounts/introduction","use":"$2"},{"id":"/docs/guides/manage-accounts/use-cases","title":"Use cases","use":"$2","items":[{"id":"/docs/guides/manage-accounts/use-cases/accounts-and-transactions-syncing","title":"Accounts and transactions syncing","to":"/docs/guides/manage-accounts/use-cases/accounts-and-transactions-syncing","use":"$2"},{"id":"/docs/guides/manage-accounts/use-cases/expenses-and-receipts","title":"Expenses and receipts syncing","to":"/docs/guides/manage-accounts/use-cases/expenses-and-receipts","use":"$2"},{"id":"/docs/guides/manage-accounts/use-cases/payouts-automation","title":"Payouts automation","to":"/docs/guides/manage-accounts/use-cases/payouts-automation","use":"$2"}]},{"id":"/docs/guides/manage-accounts/get-started","title":"Get started","use":"$2","items":[{"id":"/docs/guides/manage-accounts/get-started/sign-up-for-revolut-business-account","title":"1. Sign up for Revolut Business account","to":"/docs/guides/manage-accounts/get-started/sign-up-for-revolut-business-account","use":"$2"},{"id":"/docs/guides/manage-accounts/get-started/prepare-sandbox-environment","title":"2. Set up a test environment with Revolut Sandbox","to":"/docs/guides/manage-accounts/get-started/prepare-sandbox-environment","use":"$2"},{"id":"/docs/guides/manage-accounts/get-started/make-your-first-api-request","title":"3. Make your first API request","to":"/docs/guides/manage-accounts/get-started/make-your-first-api-request","use":"$2"}]},{"id":"/docs/guides/manage-accounts/accounting","title":"Accounting settings","use":"$2","items":[{"id":"/docs/guides/manage-accounts/accounting/manage-accounting-settings","title":"Overview","to":"/docs/guides/manage-accounts/accounting/manage-accounting-settings","use":"$2"},{"id":"/docs/guides/manage-accounts/accounting/manage-accounting-categories","title":"Accounting categories","to":"/docs/guides/manage-accounts/accounting/manage-accounting-categories","use":"$2"},{"id":"/docs/guides/manage-accounts/accounting/manage-tax-rates","title":"Tax rates","to":"/docs/guides/manage-accounts/accounting/manage-tax-rates","use":"$2"},{"id":"/docs/guides/manage-accounts/accounting/manage-labels-and-label-groups","title":"Labels and label groups","to":"/docs/guides/manage-accounts/accounting/manage-labels-and-label-groups","use":"$2"}]},{"id":"/docs/guides/manage-accounts/accounts-and-transactions","title":"Accounts and transactions","use":"$2","items":[{"id":"/docs/guides/manage-accounts/accounts-and-transactions/manage-your-accounts","title":"Accounts","to":"/docs/guides/manage-accounts/accounts-and-transactions/manage-your-accounts","use":"$2"},{"id":"/docs/guides/manage-accounts/accounts-and-transactions/retrieve-expenses","title":"Expenses","to":"/docs/guides/manage-accounts/accounts-and-transactions/retrieve-expenses","use":"$2"},{"id":"/docs/guides/manage-accounts/accounts-and-transactions/retrieve-transactions","title":"Transactions","to":"/docs/guides/manage-accounts/accounts-and-transactions/retrieve-transactions","use":"$2"},{"id":"/docs/guides/manage-accounts/accounts-and-transactions/map-transaction-data","title":"Map transactions","to":"/docs/guides/manage-accounts/accounts-and-transactions/map-transaction-data","use":"$2"}]},{"id":"/docs/guides/manage-accounts/counterparties","title":"Counterparties","use":"$2","items":[{"id":"/docs/guides/manage-accounts/counterparties/create-a-counterparty","title":"Create a counterparty","to":"/docs/guides/manage-accounts/counterparties/create-a-counterparty","use":"$2"},{"id":"/docs/guides/manage-accounts/counterparties/retrieve-counterparties","title":"Retrieve counterparties","to":"/docs/guides/manage-accounts/counterparties/retrieve-counterparties","use":"$2"},{"id":"/docs/guides/manage-accounts/counterparties/update-counterparty-payment-method","title":"Update a counterparty's payment method","to":"/docs/guides/manage-accounts/counterparties/update-counterparty-payment-method","use":"$2"},{"id":"/docs/guides/manage-accounts/counterparties/confirmation-of-payee","title":"Confirmation of Payee (CoP)","to":"/docs/guides/manage-accounts/counterparties/confirmation-of-payee","use":"$2"}]},{"id":"/docs/guides/manage-accounts/transfers","title":"Transfers","use":"$2","items":[{"id":"/docs/guides/manage-accounts/transfers/send-money","title":"Send money","to":"/docs/guides/manage-accounts/transfers/send-money","use":"$2"},{"id":"/docs/guides/manage-accounts/transfers/bank-transfers","title":"Bank transfers","to":"/docs/guides/manage-accounts/transfers/bank-transfers","use":"$2"},{"id":"/docs/guides/manage-accounts/transfers/card-transfers","title":"Card transfers","to":"/docs/guides/manage-accounts/transfers/card-transfers","use":"$2"},{"id":"/docs/guides/manage-accounts/transfers/payout-links","title":"Payout links","to":"/docs/guides/manage-accounts/transfers/payout-links","use":"$2"},{"id":"/docs/guides/manage-accounts/transfers/payment-drafts","title":"Payment drafts","to":"/docs/guides/manage-accounts/transfers/payment-drafts","use":"$2"},{"id":"/docs/guides/manage-accounts/transfers/prepare-and-validate-transfers","title":"Prepare and validate transfers","to":"/docs/guides/manage-accounts/transfers/prepare-and-validate-transfers","use":"$2"}]},{"id":"/docs/guides/manage-accounts/exchange-money","title":"Foreign exchange","to":"/docs/guides/manage-accounts/exchange-money","use":"$2"},{"id":"/docs/guides/manage-accounts/cards","title":"Cards","use":"$2","items":[{"id":"/docs/guides/manage-accounts/cards/manage-cards","title":"Cards","to":"/docs/guides/manage-accounts/cards/manage-cards","use":"$2"},{"id":"/docs/guides/manage-accounts/cards/manage-card-invitations","title":"Card invitations","to":"/docs/guides/manage-accounts/cards/manage-card-invitations","use":"$2"}]},{"id":"/docs/guides/manage-accounts/teams","title":"Teams","use":"$2","items":[{"id":"/docs/guides/manage-accounts/teams/manage-team-members","title":"Members and roles","to":"/docs/guides/manage-accounts/teams/manage-team-members","use":"$2"},{"id":"/docs/guides/manage-accounts/teams/manage-departments","title":"Departments","to":"/docs/guides/manage-accounts/teams/manage-departments","use":"$2"}]},{"id":"/docs/guides/manage-accounts/webhooks","title":"Webhooks","use":"$2","items":[{"id":"/docs/guides/manage-accounts/webhooks/about-webhooks","title":"About webhooks","to":"/docs/guides/manage-accounts/webhooks/about-webhooks","use":"$2"},{"id":"/docs/guides/manage-accounts/webhooks/manage-webhooks","title":"Manage webhooks","to":"/docs/guides/manage-accounts/webhooks/manage-webhooks","use":"$2"},{"id":"/docs/guides/manage-accounts/webhooks/verify-the-payload-signature","title":"Verify the payload signature","to":"/docs/guides/manage-accounts/webhooks/verify-the-payload-signature","use":"$2"}]},{"id":"/docs/guides/manage-accounts/api-usage-and-testing","title":"API usage and testing","use":"$2","items":[{"id":"/docs/guides/manage-accounts/api-usage-and-testing/errors","title":"Errors","to":"/docs/guides/manage-accounts/api-usage-and-testing/errors","use":"$2"},{"id":"/docs/guides/manage-accounts/api-usage-and-testing/usage-and-limits","title":"Usage and limits","to":"/docs/guides/manage-accounts/api-usage-and-testing/usage-and-limits","use":"$2"},{"id":"/docs/guides/manage-accounts/api-usage-and-testing/test-flows-with-simulations","title":"Test your flows with simulations (Sandbox only)","to":"/docs/guides/manage-accounts/api-usage-and-testing/test-flows-with-simulations","use":"$2"}]}]},{"id":"/docs/guides/merchant","title":"Merchant","use":"$2","root":true,"items":[{"id":"/docs/guides/merchant/introduction","title":"Introduction","to":"/docs/guides/merchant/introduction","use":"$2"},{"id":"/docs/guides/merchant/get-started","title":"Get started","to":"/docs/guides/merchant/get-started","use":"$2"},{"id":"/docs/guides/merchant/test-and-go-live","title":"Test & go live","use":"$2","items":[{"id":"/docs/guides/merchant/test-and-go-live/set-up-sandbox","title":"Set up a test environment","to":"/docs/guides/merchant/test-and-go-live/set-up-sandbox","use":"$2"},{"id":"/docs/guides/merchant/test-and-go-live/testing","title":"Testing","use":"$2","items":[{"id":"/docs/guides/merchant/test-and-go-live/testing/implementation-checklists","title":"Implementation checklist","to":"/docs/guides/merchant/test-and-go-live/testing/implementation-checklists","use":"$2"},{"id":"/docs/guides/merchant/test-and-go-live/testing/test-flows","title":"Test payment flows","to":"/docs/guides/merchant/test-and-go-live/testing/test-flows","use":"$2"},{"id":"/docs/guides/merchant/test-and-go-live/testing/test-cards","title":"Test cards","to":"/docs/guides/merchant/test-and-go-live/testing/test-cards","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments","title":"Accept payments","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments","title":"Online payments","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout","title":"Revolut Checkout","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/web","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay","title":"Revolut Pay","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/web","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile","title":"Mobile","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/ios","title":"iOS","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/ios","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/android","title":"Android","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/android","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/react-native","title":"React Native","to":"/docs/guides/merchant/accept-payments/online-payments/revolut-pay/mobile/react-native","use":"$2"}]},{"id":"/docs/guides/merchant/optimise-checkout/fast-checkout","title":"Fast checkout","use":"$2","to":"/docs/guides/merchant/optimise-checkout/fast-checkout"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments","title":"Card payments","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/web","title":"Web","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/web/card-field","title":"Card field","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/web/card-field","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/web/pop-up","title":"Card pop-up","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/web/pop-up","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile","title":"Mobile","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/ios","title":"iOS","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/ios","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/android","title":"Android","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/android","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/react-native","title":"React Native","to":"/docs/guides/merchant/accept-payments/online-payments/card-payments/mobile/react-native","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay","title":"Apple Pay and Google Pay","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/web","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/mobile","title":"Mobile","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/mobile/ios","title":"iOS","to":"/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/mobile/ios","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank","title":"Pay by Bank","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/web","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit","title":"SEPA Direct Debit","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/sepa-direct-debit/web","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay","title":"Click to Pay","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/web","title":"Web","to":"/docs/guides/merchant/accept-payments/online-payments/click-to-pay/web","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page","title":"Hosted Checkout Page","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/payment-link","title":"Payment link","to":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/payment-link","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/api","title":"API","to":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/api","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments","title":"In-person payments","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/in-person-payments/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos","title":"Revolut POS","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app","title":"Web app","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/product-management","title":"Product and catalogue management","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/product-management","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/settings","title":"Settings","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/settings","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/staff-management","title":"Staff management","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/staff-management","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/analytics-orders","title":"Analytics and orders","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/web-app/analytics-orders","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app","title":"iOS app","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/order-management","title":"Order management","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/order-management","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/table-service","title":"Table service","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/table-service","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/catalogue","title":"Catalogue","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/catalogue","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/operational-settings","title":"Operational settings","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/operational-settings","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/hardware-settings","title":"Hardware settings","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/hardware-settings","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/reports","title":"Reports","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/ios-app/reports","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/order-pay","title":"Order and Pay","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/order-pay","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/support","title":"Support","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/support","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/pos/faq","title":"FAQs","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/faq","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal","title":"Revolut Terminal","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/manage-payments","title":"Manage payments","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/manage-payments","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/additional-features","title":"Additional features","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/additional-features","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments","title":"Push payments to Revolut Terminal","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/pre-authorisation","title":"Pre-authorisation","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/pre-authorisation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/support-warranty","title":"Support and warranty","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/support-warranty","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader","title":"Revolut Reader","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/manage-payments","title":"Manage payments","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/manage-payments","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/additional-features","title":"Additional features","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/additional-features","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/support-warranty","title":"Support and warranty","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/support-warranty","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/reader/faq","title":"FAQs","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/faq","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay","title":"Tap to Pay","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/get-started","title":"Get started","to":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/get-started","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/integration-guide","title":"Integration guide","to":"/docs/guides/merchant/accept-payments/in-person-payments/tap-to-pay/integration-guide","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments/no-code","title":"No-code integrations","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins","title":"E-commerce plugins","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce","title":"WooCommerce","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/woocommerce/features","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop","title":"PrestaShop","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/prestashop/features","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/magento","title":"Adobe Commerce (Magento 2)","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/magento/features","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce","title":"BigCommerce","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/bigcommerce/features","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify","title":"Shopify","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/shopify/features","use":"$2"}]},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart","title":"OpenCart","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/introduction","title":"Introduction","to":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/introduction","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/installation","title":"Installation","to":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/installation","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/features","title":"Features and operations","to":"/docs/guides/merchant/accept-payments/no-code/plugins/opencart/features","use":"$2"}]}]},{"id":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/payment-link","title":"Payment links","use":"$2","to":"/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/payment-link"},{"id":"/docs/guides/merchant/accept-payments/no-code/invoices","title":"Invoices","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/invoices/xero","title":"Xero invoices","use":"$2","items":[{"id":"/docs/guides/merchant/accept-payments/no-code/invoices/xero/configuration","title":"Configuration","to":"/docs/guides/merchant/accept-payments/no-code/invoices/xero/configuration","use":"$2"},{"id":"/docs/guides/merchant/accept-payments/no-code/invoices/xero/troubleshooting","title":"Troubleshooting","to":"/docs/guides/merchant/accept-payments/no-code/invoices/xero/troubleshooting","use":"$2"}]}]}]}]},{"id":"/docs/guides/merchant/billing-subscriptions","title":"Billing & subscriptions","use":"$2","items":[{"id":"/docs/guides/merchant/billing-subscriptions/introduction","title":"Introduction","to":"/docs/guides/merchant/billing-subscriptions/introduction","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/subscription-plans","title":"Subscription plans","to":"/docs/guides/merchant/billing-subscriptions/subscription-plans","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/subscription-lifecycle","title":"Subscription lifecycle","to":"/docs/guides/merchant/billing-subscriptions/subscription-lifecycle","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api","title":"API","use":"$2","items":[{"id":"/docs/guides/merchant/billing-subscriptions/api/introduction","title":"Introduction","to":"/docs/guides/merchant/billing-subscriptions/api/introduction","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/get-started","title":"Get started","to":"/docs/guides/merchant/billing-subscriptions/api/get-started","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/fixed","title":"Fixed-rate subscription","to":"/docs/guides/merchant/billing-subscriptions/api/fixed","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/per-seat","title":"Per-seat subscription","to":"/docs/guides/merchant/billing-subscriptions/api/per-seat","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/usage-based","title":"Usage-based subscription","to":"/docs/guides/merchant/billing-subscriptions/api/usage-based","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/trials","title":"Trials & introductory pricing","to":"/docs/guides/merchant/billing-subscriptions/api/trials","use":"$2"},{"id":"/docs/guides/merchant/billing-subscriptions/api/webhooks","title":"Webhooks","to":"/docs/guides/merchant/billing-subscriptions/api/webhooks","use":"$2"}]}]},{"id":"/docs/guides/merchant/operations","title":"Operations","use":"$2","items":[{"id":"/docs/guides/merchant/operations/capture-and-settlement","title":"Capture & settlement","use":"$2","items":[{"id":"/docs/guides/merchant/operations/capture-and-settlement/capture-later","title":"Authorise a payment to capture later","to":"/docs/guides/merchant/operations/capture-and-settlement/capture-later","use":"$2"},{"id":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation","title":"Advanced authorisation","use":"$2","items":[{"id":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/introduction","title":"Introduction","to":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/introduction","use":"$2"},{"id":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation","title":"Pre-authorisation","to":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation","use":"$2"},{"id":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation","title":"Incremental authorisation","to":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation","use":"$2"},{"id":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/clearing-windows","title":"Clearing windows","to":"/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/clearing-windows","use":"$2"}]}]},{"id":"/docs/guides/merchant/operations/refunds","title":"Refund payments","to":"/docs/guides/merchant/operations/refunds","use":"$2"},{"id":"/docs/guides/merchant/operations/payment-method-migration","title":"Payment method migration","to":"/docs/guides/merchant/operations/payment-method-migration","use":"$2"}]},{"id":"/docs/guides/merchant/optimise-checkout","title":"Optimise checkout","use":"$2","items":[{"id":"/docs/guides/merchant/optimise-checkout/save-payment-methods","title":"Save and charge payment methods","use":"$2","items":[{"id":"/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method","title":"Charge a customer's saved payment method","to":"/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method","use":"$2"},{"id":"/docs/guides/merchant/optimise-checkout/save-payment-methods/checkout-with-saved-card","title":"Save cards and speed up checkout","to":"/docs/guides/merchant/optimise-checkout/save-payment-methods/checkout-with-saved-card","use":"$2"},{"id":"/docs/guides/merchant/optimise-checkout/save-payment-methods/subscription-management","title":"Manage subscriptions","to":"/docs/guides/merchant/optimise-checkout/save-payment-methods/subscription-management","use":"$2"}]},{"id":"/docs/guides/merchant/optimise-checkout/fast-checkout","title":"Fast checkout","to":"/docs/guides/merchant/optimise-checkout/fast-checkout","use":"$2"},{"id":"/docs/guides/merchant/optimise-checkout/promo-banners","title":"Add Promotional banner to your checkout page","to":"/docs/guides/merchant/optimise-checkout/promo-banners","use":"$2"}]},{"id":"/docs/guides/merchant/monitor-and-observe","title":"Monitor & observe","use":"$2","items":[{"id":"/docs/guides/merchant/monitor-and-observe/reports-reconciliation","title":"Create CSV reports of transactions","to":"/docs/guides/merchant/monitor-and-observe/reports-reconciliation","use":"$2"},{"id":"/docs/guides/merchant/monitor-and-observe/webhooks","title":"Work with webhooks","use":"$2","items":[{"id":"/docs/guides/merchant/monitor-and-observe/webhooks/using-webhooks","title":"Use webhooks to track order and payment lifecycle","to":"/docs/guides/merchant/monitor-and-observe/webhooks/using-webhooks","use":"$2"},{"id":"/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature","title":"Verify the payload signature","to":"/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature","use":"$2"}]}]},{"id":"/docs/guides/merchant/reference","title":"Reference","use":"$2","items":[{"id":"/docs/guides/merchant/reference/versioning","title":"Versioning","use":"$2","items":[{"id":"/docs/guides/merchant/reference/versioning/api-versions","title":"API versions","to":"/docs/guides/merchant/reference/versioning/api-versions","use":"$2"},{"id":"/docs/guides/merchant/reference/versioning/deprecation-policy","title":"Deprecation policy","to":"/docs/guides/merchant/reference/versioning/deprecation-policy","use":"$2"},{"id":"/docs/guides/merchant/reference/versioning/changelog","title":"Changelog","to":"/docs/guides/merchant/reference/versioning/changelog","use":"$2"}]},{"id":"/docs/api/merchant","title":"API","use":"$2","to":"/docs/api/merchant"},{"id":"/docs/guides/merchant/reference/sdks","title":"SDKs","use":"$2","items":[{"id":"/docs/sdks/merchant-web-sdk/introduction","title":"Web SDK","use":"$2","to":"/docs/sdks/merchant-web-sdk/introduction"},{"id":"/docs/sdks/merchant-ios-sdk/introduction","title":"iOS SDK","use":"$2","to":"/docs/sdks/merchant-ios-sdk/introduction"},{"id":"/docs/sdks/merchant-android-sdk/introduction","title":"Android SDK","use":"$2","to":"/docs/sdks/merchant-android-sdk/introduction"}]},{"id":"/docs/guides/merchant/reference/3d-secure","title":"3D Secure","to":"/docs/guides/merchant/reference/3d-secure","use":"$2"},{"id":"/docs/guides/merchant/reference/error-codes","title":"Errors","use":"$2","items":[{"id":"/docs/guides/merchant/reference/error-codes/http-response-errors","title":"HTTP response errors","to":"/docs/guides/merchant/reference/error-codes/http-response-errors","use":"$2"},{"id":"/docs/guides/merchant/reference/error-codes/decline-reasons","title":"Decline reasons","to":"/docs/guides/merchant/reference/error-codes/decline-reasons","use":"$2"}]},{"id":"/docs/guides/merchant/reference/order-lifecycle","title":"Order and payment lifecycle","to":"/docs/guides/merchant/reference/order-lifecycle","use":"$2"}]},{"id":"/blog","title":"Updates","use":"$2","to":"/blog"}]},{"id":"/docs/guides/revolut-wallet","title":"Revolut Wallet","use":"$2","root":true,"items":[{"id":"/docs/guides/revolut-wallet/introduction","title":"Introduction","to":"/docs/guides/revolut-wallet/introduction","use":"$2"},{"id":"/docs/guides/revolut-wallet/get-started","title":"Get started","to":"/docs/guides/revolut-wallet/get-started","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations","title":"Operations","use":"$2","items":[{"id":"/docs/guides/revolut-wallet/operations/introduction","title":"Introduction","to":"/docs/guides/revolut-wallet/operations/introduction","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations/template-management","title":"Manage templates","to":"/docs/guides/revolut-wallet/operations/template-management","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations/create-pass","title":"Create a pass","to":"/docs/guides/revolut-wallet/operations/create-pass","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations/update-pass","title":"Update a pass","to":"/docs/guides/revolut-wallet/operations/update-pass","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations/transaction-outcomes","title":"Transaction outcomes","to":"/docs/guides/revolut-wallet/operations/transaction-outcomes","use":"$2"},{"id":"/docs/guides/revolut-wallet/operations/add-to-wallet-button","title":"Add passes with the Wallet button","to":"/docs/guides/revolut-wallet/operations/add-to-wallet-button","use":"$2"}]}]},{"id":"/docs/resources","title":"Resources","use":"$2","root":true,"items":[{"id":"/docs/resources/marketing-guidelines","title":"Revolut Pay marketing assets and guidelines","to":"/docs/resources/marketing-guidelines","use":"$2"},{"id":"/docs/resources/revolut-pay-button-guidelines","title":"Revolut Pay button guidelines","to":"/docs/resources/revolut-pay-button-guidelines","use":"$2"},{"id":"/docs/resources/open-banking-logo-guidelines","title":"Revolut Open Banking logo assets and guidelines","to":"/docs/resources/open-banking-logo-guidelines","use":"$2"}]},{"id":"/docs/sdks/merchant-android-sdk","title":"Merchant Android SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/merchant-android-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-android-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk","title":"Revolut Pay SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-android-sdk/revolut-pay-android-sdk/methods-parameters","use":"$2"}]},{"id":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk","title":"Revolut Card Form SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-android-sdk/revolut-card-form-android-sdk/methods-parameters","use":"$2"}]}]},{"id":"/docs/sdks/merchant-ios-sdk","title":"Merchant iOS SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/merchant-ios-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-ios-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk","title":"Revolut Pay SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-ios-sdk/revolut-pay-ios-sdk/methods-parameters","use":"$2"}]},{"id":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk","title":"Apple Pay SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-ios-sdk/apple-pay-ios-sdk/methods-parameters","use":"$2"}]},{"id":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk","title":"Tap to Pay SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-ios-sdk/tap-to-pay-sdk/methods-parameters","use":"$2"}]},{"id":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk","title":"Revolut Card Form SDK","use":"$2","items":[{"id":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/merchant-ios-sdk/revolut-card-form-ios-sdk/methods-parameters","use":"$2"}]}]},{"id":"/docs/sdks/merchant-web-sdk","title":"Merchant Web SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/merchant-web-sdk/introduction","title":"Introduction","to":"/docs/sdks/merchant-web-sdk/introduction","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/get-started","title":"Get started","to":"/docs/sdks/merchant-web-sdk/get-started","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/initialisation","title":"Initialisation","use":"$2","items":[{"id":"/docs/sdks/merchant-web-sdk/initialisation/token-based","title":"Token-based initialisation","to":"/docs/sdks/merchant-web-sdk/initialisation/token-based","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/initialisation/direct","title":"Direct initialisation","to":"/docs/sdks/merchant-web-sdk/initialisation/direct","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/initialisation/payments-module","title":"Payments module initialisation","to":"/docs/sdks/merchant-web-sdk/initialisation/payments-module","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/initialisation/upsell-module","title":"Upsell module initialisation","to":"/docs/sdks/merchant-web-sdk/initialisation/upsell-module","use":"$2"}]},{"id":"/docs/sdks/merchant-web-sdk/payment-methods","title":"Payment methods","use":"$2","items":[{"id":"/docs/sdks/merchant-web-sdk/payment-methods/introduction","title":"Introduction","to":"/docs/sdks/merchant-web-sdk/payment-methods/introduction","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/embedded-checkout","title":"Embedded checkout","to":"/docs/sdks/merchant-web-sdk/payment-methods/embedded-checkout","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/revolut-pay","title":"Revolut Pay","to":"/docs/sdks/merchant-web-sdk/payment-methods/revolut-pay","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/apple-pay-google-pay","title":"Apple Pay / Google Pay","to":"/docs/sdks/merchant-web-sdk/payment-methods/apple-pay-google-pay","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/card-field","title":"Card field","to":"/docs/sdks/merchant-web-sdk/payment-methods/card-field","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/pop-up","title":"Card pop-up","to":"/docs/sdks/merchant-web-sdk/payment-methods/pop-up","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/pay-by-bank","title":"Pay by Bank","to":"/docs/sdks/merchant-web-sdk/payment-methods/pay-by-bank","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/sepa-direct-debit","title":"SEPA Direct Debit","to":"/docs/sdks/merchant-web-sdk/payment-methods/sepa-direct-debit","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/payment-methods/click-to-pay","title":"Click to Pay","to":"/docs/sdks/merchant-web-sdk/payment-methods/click-to-pay","use":"$2"}]},{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets","title":"Promotional widgets","use":"$2","items":[{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets/introduction","title":"Introduction","to":"/docs/sdks/merchant-web-sdk/promotional-widgets/introduction","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets/card-gateway-banner","title":"Card gateway banner","to":"/docs/sdks/merchant-web-sdk/promotional-widgets/card-gateway-banner","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets/promotional-banner","title":"Promotional banner","to":"/docs/sdks/merchant-web-sdk/promotional-widgets/promotional-banner","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/promotional-widgets/enrollment-confirmation-banner","title":"Enrollment confirmation banner","to":"/docs/sdks/merchant-web-sdk/promotional-widgets/enrollment-confirmation-banner","use":"$2"}]},{"id":"/docs/sdks/merchant-web-sdk/types","title":"Types","use":"$2","items":[{"id":"/docs/sdks/merchant-web-sdk/types/introduction","title":"Introduction","to":"/docs/sdks/merchant-web-sdk/types/introduction","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/types/locale","title":"Locale","to":"/docs/sdks/merchant-web-sdk/types/locale","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/types/address","title":"Address","to":"/docs/sdks/merchant-web-sdk/types/address","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/types/customer-details","title":"CustomerDetails","to":"/docs/sdks/merchant-web-sdk/types/customer-details","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/types/revolut-checkout-error","title":"RevolutCheckoutError","to":"/docs/sdks/merchant-web-sdk/types/revolut-checkout-error","use":"$2"},{"id":"/docs/sdks/merchant-web-sdk/types/validation-error","title":"ValidationError","to":"/docs/sdks/merchant-web-sdk/types/validation-error","use":"$2"}]},{"id":"/docs/sdks/merchant-web-sdk/integration-examples","title":"Integration examples","to":"/docs/sdks/merchant-web-sdk/integration-examples","use":"$2"}]},{"id":"/docs/sdks/reverywhere-web-sdk","title":"RevEverywhere Web SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/reverywhere-web-sdk/introduction-and-setup","title":"Introduction and setup","to":"/docs/sdks/reverywhere-web-sdk/introduction-and-setup","use":"$2"}]},{"id":"/docs/sdks/revolut-id-sdk","title":"Revolut ID SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/revolut-id-sdk/introduction","title":"Introduction","to":"/docs/sdks/revolut-id-sdk/introduction","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web","title":"Web","use":"$2","items":[{"id":"/docs/sdks/revolut-id-sdk/web/introduction","title":"Introduction","to":"/docs/sdks/revolut-id-sdk/web/introduction","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/configure-client","title":"Configure client","to":"/docs/sdks/revolut-id-sdk/web/configure-client","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/integrate-sdk","title":"Integrate SDK","use":"$2","items":[{"id":"/docs/sdks/revolut-id-sdk/web/integrate-sdk/java-script","title":"JavaScript","to":"/docs/sdks/revolut-id-sdk/web/integrate-sdk/java-script","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/integrate-sdk/react","title":"React","to":"/docs/sdks/revolut-id-sdk/web/integrate-sdk/react","use":"$2"}]},{"id":"/docs/sdks/revolut-id-sdk/web/code-exchange","title":"Code exchange","to":"/docs/sdks/revolut-id-sdk/web/code-exchange","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/api-reference","title":"API reference","use":"$2","to":"/docs/sdks/revolut-id-sdk/web/api-reference","items":[{"id":"/docs/sdks/revolut-id-sdk/web/api-reference/revolut-id","title":"RevolutId","to":"/docs/sdks/revolut-id-sdk/web/api-reference/revolut-id","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/api-reference/revolutid-loader","title":"RevolutIdLoader","to":"/docs/sdks/revolut-id-sdk/web/api-reference/revolutid-loader","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/api-reference/button-client","title":"ButtonClient","to":"/docs/sdks/revolut-id-sdk/web/api-reference/button-client","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/api-reference/button-style","title":"ButtonStyle","to":"/docs/sdks/revolut-id-sdk/web/api-reference/button-style","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/web/api-reference/openid-configuration","title":"OIDC Configuration","to":"/docs/sdks/revolut-id-sdk/web/api-reference/openid-configuration","use":"$2"}]}]},{"id":"/docs/sdks/revolut-id-sdk/ios","title":"iOS","use":"$2","items":[{"id":"/docs/sdks/revolut-id-sdk/ios/introduction","title":"Introduction","to":"/docs/sdks/revolut-id-sdk/ios/introduction","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/ios/integration-guide","title":"Integration guide","to":"/docs/sdks/revolut-id-sdk/ios/integration-guide","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/ios/code-exchange","title":"Code exchange","to":"/docs/sdks/revolut-id-sdk/ios/code-exchange","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/ios/api-reference","title":"Methods and parameters","use":"$2","to":"/docs/sdks/revolut-id-sdk/ios/api-reference","items":[]}]},{"id":"/docs/sdks/revolut-id-sdk/android","title":"Android","use":"$2","items":[{"id":"/docs/sdks/revolut-id-sdk/android/introduction","title":"Introduction","to":"/docs/sdks/revolut-id-sdk/android/introduction","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/android/integration-guide","title":"Integration guide","to":"/docs/sdks/revolut-id-sdk/android/integration-guide","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/android/code-exchange","title":"Code exchange","to":"/docs/sdks/revolut-id-sdk/android/code-exchange","use":"$2"},{"id":"/docs/sdks/revolut-id-sdk/android/methods-parameters","title":"Methods and parameters","to":"/docs/sdks/revolut-id-sdk/android/methods-parameters","use":"$2"}]}]},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk","title":"UI Kit MiniApp Web SDK","use":"$2","root":true,"items":[{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/introduction","title":"Introduction","to":"/docs/sdks/ui-kit-miniapp-web-sdk/introduction","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components","title":"Components","use":"$2","items":[{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Action","title":"Action","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Action","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ActionButton","title":"ActionButton","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ActionButton","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Avatar","title":"Avatar","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Avatar","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Badge","title":"Badge","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Badge","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/BottomSheet","title":"BottomSheet","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/BottomSheet","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Button","title":"Button","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Button","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Calendar","title":"Calendar","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Calendar","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Cell","title":"Cell","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Cell","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/CellSkeleton","title":"CellSkeleton","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/CellSkeleton","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Checkbox","title":"Checkbox","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Checkbox","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/CompactInput","title":"CompactInput","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/CompactInput","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Copyable","title":"Copyable","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Copyable","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/DetailsCell","title":"DetailsCell","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/DetailsCell","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Dropdown","title":"Dropdown","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Dropdown","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/FilterButton","title":"FilterButton","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/FilterButton","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Footnote","title":"Footnote","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Footnote","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Group","title":"Group","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Group","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/HStack","title":"HStack","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/HStack","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Icon","title":"Icon","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Icon","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Image","title":"Image","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Image","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Input","title":"Input","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Input","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Link","title":"Link","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Link","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/List","title":"List","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/List","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Map","title":"Map","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Map","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/MessageBubble","title":"MessageBubble","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/MessageBubble","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Page","title":"Page","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Page","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Placeholder","title":"Placeholder","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Placeholder","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Popup","title":"Popup","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Popup","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ProgressSteps","title":"ProgressSteps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ProgressSteps","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Radio","title":"Radio","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Radio","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/RootProvider","title":"RootProvider","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/RootProvider","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Search","title":"Search","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Search","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Slider","title":"Slider","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Slider","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Spacer","title":"Spacer","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Spacer","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/StarRating","title":"StarRating","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/StarRating","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Subheader","title":"Subheader","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Subheader","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Switch","title":"Switch","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Switch","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/TabBar","title":"TabBar","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/TabBar","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Text","title":"Text","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Text","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/TextArea","title":"TextArea","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/TextArea","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ToggleButton","title":"ToggleButton","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/ToggleButton","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Toast","title":"Toast","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/Toast","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/VStack","title":"VStack","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/VStack","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/components/VisuallyHidden","title":"VisuallyHidden","to":"/docs/sdks/ui-kit-miniapp-web-sdk/components/VisuallyHidden","use":"$2"}]},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/hooks","title":"Hooks","use":"$2","items":[{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/hooks/useStatusSheet","title":"useStatusSheet","to":"/docs/sdks/ui-kit-miniapp-web-sdk/hooks/useStatusSheet","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/hooks/useToast","title":"useToast","to":"/docs/sdks/ui-kit-miniapp-web-sdk/hooks/useToast","use":"$2"}]},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/constants","title":"Constants","use":"$2","items":[{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/constants/token","title":"Token","to":"/docs/sdks/ui-kit-miniapp-web-sdk/constants/token","use":"$2"}]},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types","title":"Types","use":"$2","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types","items":[{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/HTMLTag","title":"HTMLTag","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/HTMLTag","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/IconName","title":"IconName","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/IconName","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeButtonProps","title":"NativeButtonProps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeButtonProps","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeDivProps","title":"NativeDivProps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeDivProps","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeHeadingProps","title":"NativeHeadingProps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeHeadingProps","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeMainProps","title":"NativeMainProps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeMainProps","use":"$2"},{"id":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeSpanProps","title":"NativeSpanProps","to":"/docs/sdks/ui-kit-miniapp-web-sdk/types/NativeSpanProps","use":"$2"}]}]}],"blog":[{"id":"/blog","title":"All posts","use":"$2","to":"/blog"},{"id":"separator-recent","title":"Recent","use":"$3"},{"id":"/blog/2026-09-17-billing-subscriptions-docs-space","title":"Merchant API: new Billing & subscriptions docs …","use":"$2","to":"/blog/2026-09-17-billing-subscriptions-docs-space"},{"id":"/blog/2026-07-14-tap-to-pay-sdk","title":"New: Tap to Pay SDK for iOS","use":"$2","to":"/blog/2026-07-14-tap-to-pay-sdk"},{"id":"/blog/2026-07-06-revolut-checkout-hide-customer-details","title":"Revolut Checkout: hide customer details with pr…","use":"$2","to":"/blog/2026-07-06-revolut-checkout-hide-customer-details"},{"id":"/blog/2026-06-02-react-native-merchant-sdks","title":"New: Revolut Pay and Card Form SDKs for React N…","use":"$2","to":"/blog/2026-06-02-react-native-merchant-sdks"},{"id":"/blog/2026-05-28-incremental-authorisation-sandbox","title":"Incremental Authorisation: Sandbox testing now …","use":"$2","to":"/blog/2026-05-28-incremental-authorisation-sandbox"}],"openapiByPath":{"/docs/api/business":{"items":[{"id":"/docs/api/business#tag-accounting","title":"Accounting","use":"a","href":"#tag-accounting","items":[{"id":"/docs/api/business#create-accounting-category","title":"Create an accounting category","use":"a","href":"#create-accounting-category","options":{"method":"post"}},{"id":"/docs/api/business#get-accounting-categories","title":"Retrieve a list of accounting categories","use":"a","href":"#get-accounting-categories","options":{"method":"get"}},{"id":"/docs/api/business#get-accounting-category","title":"Retrieve accounting category details","use":"a","href":"#get-accounting-category","options":{"method":"get"}},{"id":"/docs/api/business#update-accounting-category","title":"Update accounting category settings","use":"a","href":"#update-accounting-category","options":{"method":"patch"}},{"id":"/docs/api/business#delete-accounting-category","title":"Delete an accounting category","use":"a","href":"#delete-accounting-category","options":{"method":"delete"}},{"id":"/docs/api/business#create-label-group","title":"Create a new label group","use":"a","href":"#create-label-group","options":{"method":"post"}},{"id":"/docs/api/business#get-label-groups","title":"Retrieve a list of label groups","use":"a","href":"#get-label-groups","options":{"method":"get"}},{"id":"/docs/api/business#get-label-group","title":"Retrieve label group details","use":"a","href":"#get-label-group","options":{"method":"get"}},{"id":"/docs/api/business#update-label-group","title":"Update label group settings","use":"a","href":"#update-label-group","options":{"method":"patch"}},{"id":"/docs/api/business#delete-label-group","title":"Delete a label group","use":"a","href":"#delete-label-group","options":{"method":"delete"}},{"id":"/docs/api/business#create-label","title":"Create a new label","use":"a","href":"#create-label","options":{"method":"post"}},{"id":"/docs/api/business#get-labels","title":"Retrieve a list of labels from a label group","use":"a","href":"#get-labels","options":{"method":"get"}},{"id":"/docs/api/business#update-label","title":"Update a label","use":"a","href":"#update-label","options":{"method":"patch"}},{"id":"/docs/api/business#delete-label","title":"Delete a label","use":"a","href":"#delete-label","options":{"method":"delete"}},{"id":"/docs/api/business#create-tax-rate","title":"Create a new tax rate","use":"a","href":"#create-tax-rate","options":{"method":"post"}},{"id":"/docs/api/business#get-tax-rates","title":"Retrieve a list of tax rates","use":"a","href":"#get-tax-rates","options":{"method":"get"}},{"id":"/docs/api/business#get-tax-rate","title":"Retrieve tax rate details","use":"a","href":"#get-tax-rate","options":{"method":"get"}},{"id":"/docs/api/business#update-tax-rate","title":"Update tax rate settings","use":"a","href":"#update-tax-rate","options":{"method":"patch"}},{"id":"/docs/api/business#delete-tax-rate","title":"Delete a tax rate","use":"a","href":"#delete-tax-rate","options":{"method":"delete"}}]},{"id":"/docs/api/business#tag-accounts","title":"Accounts","use":"a","href":"#tag-accounts","items":[{"id":"/docs/api/business#get-accounts","title":"Retrieve all accounts","use":"a","href":"#get-accounts","options":{"method":"get"}},{"id":"/docs/api/business#get-account","title":"Retrieve an account","use":"a","href":"#get-account","options":{"method":"get"}},{"id":"/docs/api/business#get-account-details","title":"Retrieve account's full bank details","use":"a","href":"#get-account-details","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-cards","title":"Cards","use":"a","href":"#tag-cards","items":[{"id":"/docs/api/business#get-cards","title":"Retrieve a list of cards","use":"a","href":"#get-cards","options":{"method":"get"}},{"id":"/docs/api/business#create-card","title":"Create a card","use":"a","href":"#create-card","options":{"method":"post"}},{"id":"/docs/api/business#get-card","title":"Retrieve card details","use":"a","href":"#get-card","options":{"method":"get"}},{"id":"/docs/api/business#update-card","title":"Update card settings","use":"a","href":"#update-card","options":{"method":"patch"}},{"id":"/docs/api/business#delete-card","title":"Terminate a card","use":"a","href":"#delete-card","options":{"method":"delete"}},{"id":"/docs/api/business#update-card-contacts","title":"Update card contacts","use":"a","href":"#update-card-contacts","options":{"method":"put"}},{"id":"/docs/api/business#update-card-references","title":"Update card references","use":"a","href":"#update-card-references","options":{"method":"put"}},{"id":"/docs/api/business#freeze-card","title":"Freeze a card","use":"a","href":"#freeze-card","options":{"method":"post"}},{"id":"/docs/api/business#unfreeze-card","title":"Unfreeze a card","use":"a","href":"#unfreeze-card","options":{"method":"post"}},{"id":"/docs/api/business#lock-card","title":"Lock a card","use":"a","href":"#lock-card","options":{"method":"post"}},{"id":"/docs/api/business#unlock-card","title":"Unlock a card","use":"a","href":"#unlock-card","options":{"method":"post"}},{"id":"/docs/api/business#get-sensitive-card-details","title":"Retrieve sensitive card details","use":"a","href":"#get-sensitive-card-details","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-card-invitations","title":"Card invitations","use":"a","href":"#tag-card-invitations","items":[{"id":"/docs/api/business#create-card-invitation","title":"Create a card invitation","use":"a","href":"#create-card-invitation","options":{"method":"post"}},{"id":"/docs/api/business#get-card-invitations","title":"Retrieve a list of card invitations","use":"a","href":"#get-card-invitations","options":{"method":"get"}},{"id":"/docs/api/business#get-card-invitation","title":"Retrieve card invitation details","use":"a","href":"#get-card-invitation","options":{"method":"get"}},{"id":"/docs/api/business#update-card-invitation","title":"Update card invitation settings","use":"a","href":"#update-card-invitation","options":{"method":"patch"}},{"id":"/docs/api/business#cancel-card-invitation","title":"Cancel a card invitation","use":"a","href":"#cancel-card-invitation","options":{"method":"post"}}]},{"id":"/docs/api/business#tag-counterparties","title":"Counterparties","use":"a","href":"#tag-counterparties","items":[{"id":"/docs/api/business#validate-account-name","title":"Validate an account name (CoP/VoP)","use":"a","href":"#validate-account-name","options":{"method":"post"}},{"id":"/docs/api/business#get-counterparties","title":"Retrieve a list of counterparties","use":"a","href":"#get-counterparties","options":{"method":"get"}},{"id":"/docs/api/business#add-counterparty","title":"Create a counterparty","use":"a","href":"#add-counterparty","options":{"method":"post"}},{"id":"/docs/api/business#get-counterparty-countries","title":"Check supported countries and currencies","use":"a","href":"#get-counterparty-countries","options":{"method":"get"}},{"id":"/docs/api/business#get-counterparty-requirements","title":"Check counterparty field requirements","use":"a","href":"#get-counterparty-requirements","options":{"method":"get"}},{"id":"/docs/api/business#get-counterparty","title":"Retrieve a counterparty","use":"a","href":"#get-counterparty","options":{"method":"get"}},{"id":"/docs/api/business#delete-counterparty","title":"Delete a counterparty","use":"a","href":"#delete-counterparty","options":{"method":"delete"}},{"id":"/docs/api/business#update-counterparty-payment-method","title":"Update a counterparty's payment method","use":"a","href":"#update-counterparty-payment-method","options":{"method":"patch"}}]},{"id":"/docs/api/business#tag-expenses","title":"Expenses","use":"a","href":"#tag-expenses","items":[{"id":"/docs/api/business#get-expenses","title":"Retrieve a list of expenses","use":"a","href":"#get-expenses","options":{"method":"get"}},{"id":"/docs/api/business#get-expense","title":"Retrieve an expense","use":"a","href":"#get-expense","options":{"method":"get"}},{"id":"/docs/api/business#get-expense-receipt","title":"Retrieve a receipt related to an expense","use":"a","href":"#get-expense-receipt","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-foreign-exchange","title":"Foreign exchange","use":"a","href":"#tag-foreign-exchange","items":[{"id":"/docs/api/business#get-rate","title":"Get an exchange rate","use":"a","href":"#get-rate","options":{"method":"get"}},{"id":"/docs/api/business#exchange-money","title":"Exchange money","use":"a","href":"#exchange-money","options":{"method":"post"}},{"id":"/docs/api/business#get-exchange-reasons","title":"Get exchange reasons","use":"a","href":"#get-exchange-reasons","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-payment-drafts","title":"Payment drafts","use":"a","href":"#tag-payment-drafts","items":[{"id":"/docs/api/business#get-payment-drafts","title":"Retrieve a list of payment drafts","use":"a","href":"#get-payment-drafts","options":{"method":"get"}},{"id":"/docs/api/business#create-payment-draft","title":"Create a payment draft","use":"a","href":"#create-payment-draft","options":{"method":"post"}},{"id":"/docs/api/business#get-payment-draft","title":"Retrieve a payment draft","use":"a","href":"#get-payment-draft","options":{"method":"get"}},{"id":"/docs/api/business#delete-payment-draft","title":"Delete a payment draft","use":"a","href":"#delete-payment-draft","options":{"method":"delete"}},{"id":"/docs/api/business#update-payment-draft","title":"Update a payment draft","use":"a","href":"#update-payment-draft","options":{"method":"patch"}},{"id":"/docs/api/business#add-payment-draft-payment","title":"Add a payment to a payment draft","use":"a","href":"#add-payment-draft-payment","options":{"method":"post"}},{"id":"/docs/api/business#update-payment-draft-payment","title":"Update a payment in a payment draft","use":"a","href":"#update-payment-draft-payment","options":{"method":"patch"}},{"id":"/docs/api/business#delete-payment-draft-payment","title":"Delete a payment from a payment draft","use":"a","href":"#delete-payment-draft-payment","options":{"method":"delete"}}]},{"id":"/docs/api/business#tag-payout-links","title":"Payout links","use":"a","href":"#tag-payout-links","items":[{"id":"/docs/api/business#create-payout-link","title":"Create a payout link","use":"a","href":"#create-payout-link","options":{"method":"post"}},{"id":"/docs/api/business#get-payout-links","title":"Retrieve a list of payout links","use":"a","href":"#get-payout-links","options":{"method":"get"}},{"id":"/docs/api/business#get-payout-link","title":"Retrieve a payout link","use":"a","href":"#get-payout-link","options":{"method":"get"}},{"id":"/docs/api/business#cancel-payout-link","title":"Cancel a payout link","use":"a","href":"#cancel-payout-link","options":{"method":"post"}}]},{"id":"/docs/api/business#tag-simulations","title":"Simulations","use":"a","href":"#tag-simulations","items":[{"id":"/docs/api/business#simulate-transfer-state-update","title":"Simulate a transfer state update (Sandbox only)","use":"a","href":"#simulate-transfer-state-update","options":{"method":"post"}},{"id":"/docs/api/business#simulate-top-up","title":"Simulate an account top-up (Sandbox only)","use":"a","href":"#simulate-top-up","options":{"method":"post"}}]},{"id":"/docs/api/business#tag-teams","title":"Teams","use":"a","href":"#tag-teams","items":[{"id":"/docs/api/business#get-team-members","title":"Retrieve a list of team members","use":"a","href":"#get-team-members","options":{"method":"get"}},{"id":"/docs/api/business#invite-team-member","title":"Invite a new member to your business","use":"a","href":"#invite-team-member","options":{"method":"post"}},{"id":"/docs/api/business#get-team-member-by-id","title":"Retrieve a team member","use":"a","href":"#get-team-member-by-id","options":{"method":"get"}},{"id":"/docs/api/business#delete-team-member","title":"Delete a team member","use":"a","href":"#delete-team-member","options":{"method":"delete"}},{"id":"/docs/api/business#assign-department","title":"Assign a department to a team member","use":"a","href":"#assign-department","options":{"method":"put"}},{"id":"/docs/api/business#unassign-department","title":"Remove department from a team member","use":"a","href":"#unassign-department","options":{"method":"delete"}},{"id":"/docs/api/business#assign-manager","title":"Assign a manager to a team member","use":"a","href":"#assign-manager","options":{"method":"put"}},{"id":"/docs/api/business#unassign-manager","title":"Remove manager from a team member","use":"a","href":"#unassign-manager","options":{"method":"delete"}},{"id":"/docs/api/business#update-team-member-role","title":"Update a team member's role","use":"a","href":"#update-team-member-role","options":{"method":"put"}},{"id":"/docs/api/business#suspend-team-member","title":"Suspend a team member","use":"a","href":"#suspend-team-member","options":{"method":"post"}},{"id":"/docs/api/business#unsuspend-team-member","title":"Unsuspend a team member","use":"a","href":"#unsuspend-team-member","options":{"method":"post"}},{"id":"/docs/api/business#get-roles","title":"Retrieve team roles","use":"a","href":"#get-roles","options":{"method":"get"}},{"id":"/docs/api/business#create-department","title":"Create a department","use":"a","href":"#create-department","options":{"method":"post"}},{"id":"/docs/api/business#get-departments","title":"Retrieve a list of departments","use":"a","href":"#get-departments","options":{"method":"get"}},{"id":"/docs/api/business#get-department","title":"Retrieve a department","use":"a","href":"#get-department","options":{"method":"get"}},{"id":"/docs/api/business#update-department","title":"Update a department","use":"a","href":"#update-department","options":{"method":"patch"}},{"id":"/docs/api/business#delete-department","title":"Delete a department","use":"a","href":"#delete-department","options":{"method":"delete"}}]},{"id":"/docs/api/business#tag-transactions","title":"Transactions","use":"a","href":"#tag-transactions","items":[{"id":"/docs/api/business#get-transactions","title":"Retrieve a list of transactions","use":"a","href":"#get-transactions","options":{"method":"get"}},{"id":"/docs/api/business#get-transaction","title":"Retrieve a transaction","use":"a","href":"#get-transaction","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-transfers","title":"Transfers","use":"a","href":"#tag-transfers","items":[{"id":"/docs/api/business#create-payment","title":"Create a transfer to another account or card","use":"a","href":"#create-payment","options":{"method":"post"}},{"id":"/docs/api/business#get-indicative-quote","title":"Get an indicative quote for a transfer","use":"a","href":"#get-indicative-quote","options":{"method":"post"}},{"id":"/docs/api/business#get-payment-requirements","title":"Check transfer field requirements","use":"a","href":"#get-payment-requirements","options":{"method":"post"}},{"id":"/docs/api/business#create-transfer","title":"Move money between your accounts","use":"a","href":"#create-transfer","options":{"method":"post"}},{"id":"/docs/api/business#get-transfer-reasons","title":"Get transfer reasons","use":"a","href":"#get-transfer-reasons","options":{"method":"get"}}]},{"id":"/docs/api/business#tag-webhooks-v1-deprecated","title":"Webhooks (v1) (deprecated)","use":"a","href":"#tag-webhooks-v1-deprecated","items":[{"id":"/docs/api/business#get-webhook-v1","title":"Retrieve a webhook","use":"a","href":"#get-webhook-v1","options":{"method":"get"}},{"id":"/docs/api/business#set-up-webhook","title":"Set a webhook","use":"a","href":"#set-up-webhook","options":{"method":"post"}},{"id":"/docs/api/business#delete-webhook-v1","title":"Delete a webhook","use":"a","href":"#delete-webhook-v1","options":{"method":"delete"}}]},{"id":"/docs/api/business#tag-webhooks-v2","title":"Webhooks (v2)","use":"a","href":"#tag-webhooks-v2","items":[{"id":"/docs/api/business#create-webhook","title":"Create a new webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/business#get-webhooks","title":"Retrieve a list of webhooks","use":"a","href":"#get-webhooks","options":{"method":"get"}},{"id":"/docs/api/business#get-webhook","title":"Retrieve a webhook","use":"a","href":"#get-webhook","options":{"method":"get"}},{"id":"/docs/api/business#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/business#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/business#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/business#get-failed-webhook-events","title":"Retrieve a list of failed webhook events","use":"a","href":"#get-failed-webhook-events","options":{"method":"get"}}]}],"versions":"$undefined"},"/docs/api/crypto-ramp/2.0.0":{"items":[{"id":"/docs/api/crypto-ramp/2.0.0#tag-partners","title":"Partners","use":"a","href":"#tag-partners","items":[{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-configuration","title":"Retrieve buy configuration","use":"a","href":"#retrieve-configuration","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-an-order-quote","title":"Retrieve a buy order quote","use":"a","href":"#retrieve-an-order-quote","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-redirect-url","title":"Retrieve a buy redirect URL","use":"a","href":"#retrieve-a-redirect-url","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-an-order","title":"Retrieve a buy order","use":"a","href":"#retrieve-an-order","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-all-orders","title":"Retrieve all buy orders","use":"a","href":"#retrieve-all-orders","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-sell-configuration","title":"Retrieve sell configuration","use":"a","href":"#retrieve-sell-configuration","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-sell-order-quote","title":"Retrieve a sell order quote","use":"a","href":"#retrieve-a-sell-order-quote","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-sell-redirect-url","title":"Retrieve a sell redirect URL","use":"a","href":"#retrieve-a-sell-redirect-url","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-sell-order","title":"Retrieve a sell order","use":"a","href":"#retrieve-a-sell-order","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-all-sell-orders","title":"Retrieve all sell orders","use":"a","href":"#retrieve-all-sell-orders","options":{"method":"get"}}]},{"id":"/docs/api/crypto-ramp/2.0.0#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-a-webhook","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#update-a-webhook","title":"Update a webhook","use":"a","href":"#update-a-webhook","options":{"method":"patch"}},{"id":"/docs/api/crypto-ramp/2.0.0#delete-a-webhook","title":"Delete a webhook","use":"a","href":"#delete-a-webhook","options":{"method":"delete"}},{"id":"/docs/api/crypto-ramp/2.0.0#retrieve-a-list-of-webhooks","title":"Retrieve a list of webhooks","use":"a","href":"#retrieve-a-list-of-webhooks","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/2.0.0#create-a-webhook","title":"Create a webhook","use":"a","href":"#create-a-webhook","options":{"method":"post"}}]}],"versions":[{"label":"2.0.0","path":"/docs/api/crypto-ramp","latest":true},{"label":"1.0.0","path":"/docs/api/crypto-ramp/1.0.0","latest":false}]},"/docs/api/crypto-ramp/1.0.0":{"items":[{"id":"/docs/api/crypto-ramp/1.0.0#tag-partners","title":"Partners","use":"a","href":"#tag-partners","items":[{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-configuration","title":"Retrieve configuration","use":"a","href":"#retrieve-configuration","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-an-order-quote","title":"Retrieve an order quote","use":"a","href":"#retrieve-an-order-quote","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-a-redirect-url","title":"Retrieve a redirect URL","use":"a","href":"#retrieve-a-redirect-url","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-an-order","title":"Retrieve an order","use":"a","href":"#retrieve-an-order","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-all-orders","title":"Retrieve all orders","use":"a","href":"#retrieve-all-orders","options":{"method":"get"}}]},{"id":"/docs/api/crypto-ramp/1.0.0#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-a-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-a-webhook","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#update-a-webhook","title":"Update a webhook","use":"a","href":"#update-a-webhook","options":{"method":"patch"}},{"id":"/docs/api/crypto-ramp/1.0.0#delete-a-webhook","title":"Delete a webhook","use":"a","href":"#delete-a-webhook","options":{"method":"delete"}},{"id":"/docs/api/crypto-ramp/1.0.0#retrieve-a-list-of-webhooks","title":"Retrieve a list of webhooks","use":"a","href":"#retrieve-a-list-of-webhooks","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp/1.0.0#create-a-webhook","title":"Create a webhook","use":"a","href":"#create-a-webhook","options":{"method":"post"}}]}],"versions":[{"label":"2.0.0","path":"/docs/api/crypto-ramp","latest":true},{"label":"1.0.0","path":"/docs/api/crypto-ramp/1.0.0","latest":false}]},"/docs/api/crypto-ramp":{"items":[{"id":"/docs/api/crypto-ramp#tag-partners","title":"Partners","use":"a","href":"#tag-partners","items":[{"id":"/docs/api/crypto-ramp#retrieve-configuration","title":"Retrieve buy configuration","use":"a","href":"#retrieve-configuration","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-an-order-quote","title":"Retrieve a buy order quote","use":"a","href":"#retrieve-an-order-quote","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-a-redirect-url","title":"Retrieve a buy redirect URL","use":"a","href":"#retrieve-a-redirect-url","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-an-order","title":"Retrieve a buy order","use":"a","href":"#retrieve-an-order","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-all-orders","title":"Retrieve all buy orders","use":"a","href":"#retrieve-all-orders","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-sell-configuration","title":"Retrieve sell configuration","use":"a","href":"#retrieve-sell-configuration","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-a-sell-order-quote","title":"Retrieve a sell order quote","use":"a","href":"#retrieve-a-sell-order-quote","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-a-sell-redirect-url","title":"Retrieve a sell redirect URL","use":"a","href":"#retrieve-a-sell-redirect-url","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-a-sell-order","title":"Retrieve a sell order","use":"a","href":"#retrieve-a-sell-order","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#retrieve-all-sell-orders","title":"Retrieve all sell orders","use":"a","href":"#retrieve-all-sell-orders","options":{"method":"get"}}]},{"id":"/docs/api/crypto-ramp#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/crypto-ramp#retrieve-a-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-a-webhook","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#update-a-webhook","title":"Update a webhook","use":"a","href":"#update-a-webhook","options":{"method":"patch"}},{"id":"/docs/api/crypto-ramp#delete-a-webhook","title":"Delete a webhook","use":"a","href":"#delete-a-webhook","options":{"method":"delete"}},{"id":"/docs/api/crypto-ramp#retrieve-a-list-of-webhooks","title":"Retrieve a list of webhooks","use":"a","href":"#retrieve-a-list-of-webhooks","options":{"method":"get"}},{"id":"/docs/api/crypto-ramp#create-a-webhook","title":"Create a webhook","use":"a","href":"#create-a-webhook","options":{"method":"post"}}]}],"versions":[{"label":"2.0.0","path":"/docs/api/crypto-ramp","latest":true},{"label":"1.0.0","path":"/docs/api/crypto-ramp/1.0.0","latest":false}]},"/docs/api/merchant/2026-08-17":{"items":[{"id":"/docs/api/merchant/2026-08-17#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2026-08-17#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#increment-authorisation","title":"Increment authorisation","use":"a","href":"#increment-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2026-08-17#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2026-08-17#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2026-08-17#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2026-08-17#create-payout","title":"Create a payout","use":"a","href":"#create-payout","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2026-08-17#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2026-08-17#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2026-08-17#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-08-17#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2026-08-17#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-08-17#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2026-08-17#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2026-08-17#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2026-08-17#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-08-17#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2026-08-17#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-08-17#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-08-17#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2026-04-20":{"items":[{"id":"/docs/api/merchant/2026-04-20#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2026-04-20#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#increment-authorisation","title":"Increment authorisation","use":"a","href":"#increment-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2026-04-20#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2026-04-20#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2026-04-20#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2026-04-20#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2026-04-20#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2026-04-20#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2026-04-20#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-04-20#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2026-04-20#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-04-20#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2026-04-20#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2026-04-20#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2026-04-20#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-04-20#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2026-04-20#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-04-20#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-04-20#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2026-03-12":{"items":[{"id":"/docs/api/merchant/2026-03-12#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2026-03-12#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#increment-authorisation","title":"Increment authorisation","use":"a","href":"#increment-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2026-03-12#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2026-03-12#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2026-03-12#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2026-03-12#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2026-03-12#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2026-03-12#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2026-03-12#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2026-03-12#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2026-03-12#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2026-03-12#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2026-03-12#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2026-03-12#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2026-03-12#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2026-03-12#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2026-03-12#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2026-03-12#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2026-03-12#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2025-12-04":{"items":[{"id":"/docs/api/merchant/2025-12-04#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2025-12-04#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#increment-authorisation","title":"Increment authorisation","use":"a","href":"#increment-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2025-12-04#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2025-12-04#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2025-12-04#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2025-12-04#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2025-12-04#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2025-12-04#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2025-12-04#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2025-12-04#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2025-12-04#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-12-04#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2025-12-04#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2025-12-04#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2025-12-04#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-12-04#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2025-12-04#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-12-04#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-12-04#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2025-10-16":{"items":[{"id":"/docs/api/merchant/2025-10-16#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2025-10-16#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#increment-order-authorisation","title":"Increment authorisation","use":"a","href":"#increment-order-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2025-10-16#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2025-10-16#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2025-10-16#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2025-10-16#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2025-10-16#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2025-10-16#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2025-10-16#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2025-10-16#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2025-10-16#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2025-10-16#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2025-10-16#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2025-10-16#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2025-10-16#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2025-10-16#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2025-10-16#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2025-10-16#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2025-10-16#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2024-09-01":{"items":[{"id":"/docs/api/merchant/2024-09-01#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2024-09-01#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#increment-order-authorisation","title":"Increment authorisation","use":"a","href":"#increment-order-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2024-09-01#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2024-09-01#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant/2024-09-01#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2024-09-01#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant/2024-09-01#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2024-09-01#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2024-09-01#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant/2024-09-01#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2024-09-01#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-09-01#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2024-09-01#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2024-09-01#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2024-09-01#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2024-09-01#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2024-09-01#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-09-01#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-09-01#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2024-05-01":{"items":[{"id":"/docs/api/merchant/2024-05-01#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2024-05-01#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#increment-order-authorisation","title":"Increment authorisation","use":"a","href":"#increment-order-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#refund-order-deprecated","title":"Refund an order (Deprecated)","use":"a","href":"#refund-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2024-05-01#create-customer-deprecated","title":"Create a customer (Deprecated)","use":"a","href":"#create-customer-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-all-customers-deprecated","title":"Retrieve a customer list (Deprecated)","use":"a","href":"#retrieve-all-customers-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-customer-deprecated","title":"Retrieve a customer (Deprecated)","use":"a","href":"#retrieve-customer-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#update-customer-deprecated","title":"Update a customer (Deprecated)","use":"a","href":"#update-customer-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-05-01#delete-customer-deprecated","title":"Delete a customer (Deprecated)","use":"a","href":"#delete-customer-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-all-payment-methods-deprecated","title":"Retrieve all payment methods of a customer (Deprecated)","use":"a","href":"#retrieve-all-payment-methods-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-payment-method-deprecated","title":"Retrieve a customer's payment method (Deprecated)","use":"a","href":"#retrieve-payment-method-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#update-payment-method-deprecated","title":"Update a customer's payment method (Deprecated)","use":"a","href":"#update-payment-method-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-05-01#delete-payment-method-deprecated","title":"Delete a customer's payment method (Deprecated)","use":"a","href":"#delete-payment-method-deprecated","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2024-05-01#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2024-05-01#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2024-05-01#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2024-05-01#create-webhook-deprecated","title":"Create a webhook (Deprecated)","use":"a","href":"#create-webhook-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-all-webhooks-deprecated","title":"Retrieve a webhook list (Deprecated)","use":"a","href":"#retrieve-all-webhooks-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-webhook-deprecated","title":"Retrieve a webhook (Deprecated)","use":"a","href":"#retrieve-webhook-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#update-webhook-deprecated","title":"Update a webhook (Deprecated)","use":"a","href":"#update-webhook-deprecated","options":{"method":"put"}},{"id":"/docs/api/merchant/2024-05-01#delete-webhook-deprecated","title":"Delete a webhook (Deprecated)","use":"a","href":"#delete-webhook-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/2024-05-01#rotate-webhook-signing-secret-deprecated","title":"Rotate a webhook signing secret (Deprecated)","use":"a","href":"#rotate-webhook-signing-secret-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2024-05-01#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2024-05-01#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2024-05-01#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2024-05-01#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2024-05-01#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2024-05-01#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2024-05-01#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2024-05-01#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2024-05-01#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/2023-09-01":{"items":[{"id":"/docs/api/merchant/2023-09-01#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/2023-09-01#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#refund-order-deprecated","title":"Refund an order (Deprecated)","use":"a","href":"#refund-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/2023-09-01#create-customer-deprecated","title":"Create a customer (Deprecated)","use":"a","href":"#create-customer-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-all-customers-deprecated","title":"Retrieve a customer list (Deprecated)","use":"a","href":"#retrieve-all-customers-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-customer-deprecated","title":"Retrieve a customer (Deprecated)","use":"a","href":"#retrieve-customer-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#update-customer-deprecated","title":"Update a customer (Deprecated)","use":"a","href":"#update-customer-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/2023-09-01#delete-customer-deprecated","title":"Delete a customer (Deprecated)","use":"a","href":"#delete-customer-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-all-payment-methods-deprecated","title":"Retrieve all payment methods of a customer (Deprecated)","use":"a","href":"#retrieve-all-payment-methods-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-payment-method-deprecated","title":"Retrieve a customer's payment method (Deprecated)","use":"a","href":"#retrieve-payment-method-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#update-payment-method-deprecated","title":"Update a customer's payment method (Deprecated)","use":"a","href":"#update-payment-method-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/2023-09-01#delete-payment-method-deprecated","title":"Delete a customer's payment method (Deprecated)","use":"a","href":"#delete-payment-method-deprecated","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/2023-09-01#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant/2023-09-01#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/2023-09-01#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/2023-09-01#create-webhook-deprecated","title":"Create a webhook (Deprecated)","use":"a","href":"#create-webhook-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-all-webhooks-deprecated","title":"Retrieve a webhook list (Deprecated)","use":"a","href":"#retrieve-all-webhooks-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-webhook-deprecated","title":"Retrieve a webhook (Deprecated)","use":"a","href":"#retrieve-webhook-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#update-webhook-deprecated","title":"Update a webhook (Deprecated)","use":"a","href":"#update-webhook-deprecated","options":{"method":"put"}},{"id":"/docs/api/merchant/2023-09-01#delete-webhook-deprecated","title":"Delete a webhook (Deprecated)","use":"a","href":"#delete-webhook-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/2023-09-01#rotate-webhook-signing-secret-deprecated","title":"Rotate a webhook signing secret (Deprecated)","use":"a","href":"#rotate-webhook-signing-secret-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/2023-09-01#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/2023-09-01#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant/2023-09-01#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant/2023-09-01#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/2023-09-01#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/2023-09-01#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/2023-09-01#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/2023-09-01#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/2023-09-01#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant/Legacy":{"items":[{"id":"/docs/api/merchant/Legacy#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant/Legacy#create-order-deprecated","title":"Create an order (Deprecated)","use":"a","href":"#create-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-order-list-deprecated","title":"Retrieve an order list (Deprecated)","use":"a","href":"#retrieve-order-list-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#retrieve-order-deprecated","title":"Retrieve an order (Deprecated)","use":"a","href":"#retrieve-order-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#update-order-deprecated","title":"Update an order (Deprecated)","use":"a","href":"#update-order-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/Legacy#capture-order-deprecated","title":"Capture an order (Deprecated)","use":"a","href":"#capture-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#cancel-order-deprecated","title":"Cancel an order (Deprecated)","use":"a","href":"#cancel-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#refund-order-deprecated","title":"Refund an order (Deprecated)","use":"a","href":"#refund-order-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant/Legacy#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant/Legacy#create-customer-deprecated","title":"Create a customer (Deprecated)","use":"a","href":"#create-customer-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-all-customers-deprecated","title":"Retrieve a customer list (Deprecated)","use":"a","href":"#retrieve-all-customers-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#retrieve-customer-deprecated","title":"Retrieve a customer (Deprecated)","use":"a","href":"#retrieve-customer-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#update-customer-deprecated","title":"Update a customer (Deprecated)","use":"a","href":"#update-customer-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/Legacy#delete-customer-deprecated","title":"Delete a customer (Deprecated)","use":"a","href":"#delete-customer-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/Legacy#retrieve-all-payment-methods-deprecated","title":"Retrieve all payment methods of a customer (Deprecated)","use":"a","href":"#retrieve-all-payment-methods-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#retrieve-payment-method-deprecated","title":"Retrieve a customer's payment method (Deprecated)","use":"a","href":"#retrieve-payment-method-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#update-payment-method-deprecated","title":"Update a customer's payment method (Deprecated)","use":"a","href":"#update-payment-method-deprecated","options":{"method":"patch"}},{"id":"/docs/api/merchant/Legacy#delete-payment-method-deprecated","title":"Delete a customer's payment method (Deprecated)","use":"a","href":"#delete-payment-method-deprecated","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/Legacy#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant/Legacy#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant/Legacy#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant/Legacy#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant/Legacy#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant/Legacy#create-webhook-deprecated","title":"Create a webhook (Deprecated)","use":"a","href":"#create-webhook-deprecated","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-all-webhooks-deprecated","title":"Retrieve a webhook list (Deprecated)","use":"a","href":"#retrieve-all-webhooks-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#retrieve-webhook-deprecated","title":"Retrieve a webhook (Deprecated)","use":"a","href":"#retrieve-webhook-deprecated","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#update-webhook-deprecated","title":"Update a webhook (Deprecated)","use":"a","href":"#update-webhook-deprecated","options":{"method":"put"}},{"id":"/docs/api/merchant/Legacy#delete-webhook-deprecated","title":"Delete a webhook (Deprecated)","use":"a","href":"#delete-webhook-deprecated","options":{"method":"delete"}},{"id":"/docs/api/merchant/Legacy#rotate-webhook-signing-secret-deprecated","title":"Rotate a webhook signing secret (Deprecated)","use":"a","href":"#rotate-webhook-signing-secret-deprecated","options":{"method":"post"}}]},{"id":"/docs/api/merchant/Legacy#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant/Legacy#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant/Legacy#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant/Legacy#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant/Legacy#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant/Legacy#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant/Legacy#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant/Legacy#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant/Legacy#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/merchant":{"items":[{"id":"/docs/api/merchant#tag-orders","title":"Orders","use":"a","href":"#tag-orders","items":[{"id":"/docs/api/merchant#create-order","title":"Create an order","use":"a","href":"#create-order","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-order-list","title":"Retrieve an order list","use":"a","href":"#retrieve-order-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-order","title":"Retrieve an order","use":"a","href":"#retrieve-order","options":{"method":"get"}},{"id":"/docs/api/merchant#update-order","title":"Update an order","use":"a","href":"#update-order","options":{"method":"patch"}},{"id":"/docs/api/merchant#increment-authorisation","title":"Increment authorisation","use":"a","href":"#increment-authorisation","options":{"method":"post"}},{"id":"/docs/api/merchant#capture-order","title":"Capture an order","use":"a","href":"#capture-order","options":{"method":"post"}},{"id":"/docs/api/merchant#cancel-order","title":"Cancel an order","use":"a","href":"#cancel-order","options":{"method":"post"}},{"id":"/docs/api/merchant#refund-order","title":"Refund an order","use":"a","href":"#refund-order","options":{"method":"post"}},{"id":"/docs/api/merchant#pay-order","title":"Pay for an order","use":"a","href":"#pay-order","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-payment-list","title":"Retrieve payment list of an order","use":"a","href":"#retrieve-payment-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant#tag-customers","title":"Customers","use":"a","href":"#tag-customers","items":[{"id":"/docs/api/merchant#create-customer","title":"Create a customer","use":"a","href":"#create-customer","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-customer-list","title":"Retrieve a customer list","use":"a","href":"#retrieve-customer-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-customer","title":"Retrieve a customer","use":"a","href":"#retrieve-customer","options":{"method":"get"}},{"id":"/docs/api/merchant#update-customer","title":"Update a customer","use":"a","href":"#update-customer","options":{"method":"patch"}},{"id":"/docs/api/merchant#delete-customer","title":"Delete a customer","use":"a","href":"#delete-customer","options":{"method":"delete"}},{"id":"/docs/api/merchant#retrieve-payment-method-list","title":"Retrieve payment method list of a customer","use":"a","href":"#retrieve-payment-method-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-payment-method","title":"Retrieve a customer's payment method","use":"a","href":"#retrieve-payment-method","options":{"method":"get"}},{"id":"/docs/api/merchant#update-payment-method","title":"Update a customer's payment method","use":"a","href":"#update-payment-method","options":{"method":"patch"}},{"id":"/docs/api/merchant#delete-payment-method","title":"Delete a customer's payment method","use":"a","href":"#delete-payment-method","options":{"method":"delete"}}]},{"id":"/docs/api/merchant#tag-payments","title":"Payments","use":"a","href":"#tag-payments","items":[{"id":"/docs/api/merchant#retrieve-payment-details","title":"Retrieve payment details","use":"a","href":"#retrieve-payment-details","options":{"method":"get"}}]},{"id":"/docs/api/merchant#tag-subscriptions","title":"Subscriptions","use":"a","href":"#tag-subscriptions","items":[{"id":"/docs/api/merchant#create-subscription-plan","title":"Create a subscription plan","use":"a","href":"#create-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-subscription-plan-list","title":"Retrieve a subscription plan list","use":"a","href":"#retrieve-subscription-plan-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-subscription-plan","title":"Retrieve a subscription plan","use":"a","href":"#retrieve-subscription-plan","options":{"method":"get"}},{"id":"/docs/api/merchant#create-subscription","title":"Create a subscription","use":"a","href":"#create-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-subscription-list","title":"Retrieve a subscription list","use":"a","href":"#retrieve-subscription-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-subscription","title":"Retrieve a subscription","use":"a","href":"#retrieve-subscription","options":{"method":"get"}},{"id":"/docs/api/merchant#update-subscription","title":"Update a subscription","use":"a","href":"#update-subscription","options":{"method":"patch"}},{"id":"/docs/api/merchant#change-subscription-plan","title":"Change a subscription plan","use":"a","href":"#change-subscription-plan","options":{"method":"post"}},{"id":"/docs/api/merchant#update-subscription-renewal-date","title":"Update a subscription renewal date","use":"a","href":"#update-subscription-renewal-date","options":{"method":"post"}},{"id":"/docs/api/merchant#cancel-subscription","title":"Cancel a subscription","use":"a","href":"#cancel-subscription","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-subscription-cycle-list","title":"Retrieve a subscription cycle list","use":"a","href":"#retrieve-subscription-cycle-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-subscription-cycle","title":"Retrieve a subscription cycle","use":"a","href":"#retrieve-subscription-cycle","options":{"method":"get"}},{"id":"/docs/api/merchant#create-subscription-usage","title":"Create a subscription usage","use":"a","href":"#create-subscription-usage","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-subscription-usage-list","title":"Retrieve a subscription usage list","use":"a","href":"#retrieve-subscription-usage-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-subscription-usage","title":"Retrieve a subscription usage","use":"a","href":"#retrieve-subscription-usage","options":{"method":"get"}},{"id":"/docs/api/merchant#update-subscription-usage","title":"Update a subscription usage","use":"a","href":"#update-subscription-usage","options":{"method":"patch"}},{"id":"/docs/api/merchant#delete-subscription-usage","title":"Delete a subscription usage","use":"a","href":"#delete-subscription-usage","options":{"method":"delete"}}]},{"id":"/docs/api/merchant#tag-payouts","title":"Payouts","use":"a","href":"#tag-payouts","items":[{"id":"/docs/api/merchant#create-payout","title":"Create a payout","use":"a","href":"#create-payout","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-payout-list","title":"Retrieve a payout list","use":"a","href":"#retrieve-payout-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-payout","title":"Retrieve a payout","use":"a","href":"#retrieve-payout","options":{"method":"get"}}]},{"id":"/docs/api/merchant#tag-disputes","title":"Disputes","use":"a","href":"#tag-disputes","items":[{"id":"/docs/api/merchant#retrieve-dispute-list","title":"Retrieve a dispute list","use":"a","href":"#retrieve-dispute-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-dispute","title":"Retrieve a dispute","use":"a","href":"#retrieve-dispute","options":{"method":"get"}},{"id":"/docs/api/merchant#accept-dispute","title":"Accept a dispute","use":"a","href":"#accept-dispute","options":{"method":"post"}},{"id":"/docs/api/merchant#upload-dispute-evidence","title":"Upload evidence for a dispute","use":"a","href":"#upload-dispute-evidence","options":{"method":"post"}},{"id":"/docs/api/merchant#challenge-dispute","title":"Challenge a dispute","use":"a","href":"#challenge-dispute","options":{"method":"post"}}]},{"id":"/docs/api/merchant#tag-report-runs","title":"Report runs","use":"a","href":"#tag-report-runs","items":[{"id":"/docs/api/merchant#create-report-run","title":"Create a report run","use":"a","href":"#create-report-run","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-report-run","title":"Retrieve a report run","use":"a","href":"#retrieve-report-run","options":{"method":"get"}},{"id":"/docs/api/merchant#download-report-file","title":"Download report file","use":"a","href":"#download-report-file","options":{"method":"get"}}]},{"id":"/docs/api/merchant#tag-webhooks","title":"Webhooks","use":"a","href":"#tag-webhooks","items":[{"id":"/docs/api/merchant#create-webhook","title":"Create a webhook","use":"a","href":"#create-webhook","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-webhook-list","title":"Retrieve a webhook list","use":"a","href":"#retrieve-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-webhook","title":"Retrieve a webhook","use":"a","href":"#retrieve-webhook","options":{"method":"get"}},{"id":"/docs/api/merchant#update-webhook","title":"Update a webhook","use":"a","href":"#update-webhook","options":{"method":"patch"}},{"id":"/docs/api/merchant#delete-webhook","title":"Delete a webhook","use":"a","href":"#delete-webhook","options":{"method":"delete"}},{"id":"/docs/api/merchant#rotate-webhook-signing-secret","title":"Rotate a webhook signing secret","use":"a","href":"#rotate-webhook-signing-secret","options":{"method":"post"}},{"id":"/docs/api/merchant#webhook-webhook-event","title":"Webhook event","use":"a","href":"#webhook-webhook-event","options":{"method":"webhook"}}]},{"id":"/docs/api/merchant#tag-locations","title":"Locations","use":"a","href":"#tag-locations","items":[{"id":"/docs/api/merchant#create-location","title":"Create a location","use":"a","href":"#create-location","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-location-list","title":"Retrieve location list","use":"a","href":"#retrieve-location-list","options":{"method":"get"}},{"id":"/docs/api/merchant#retrieve-location","title":"Retrieve a location","use":"a","href":"#retrieve-location","options":{"method":"get"}},{"id":"/docs/api/merchant#update-location","title":"Update a location","use":"a","href":"#update-location","options":{"method":"patch"}},{"id":"/docs/api/merchant#delete-location","title":"Delete a location","use":"a","href":"#delete-location","options":{"method":"delete"}}]},{"id":"/docs/api/merchant#tag-terminals","title":"Terminals","use":"a","href":"#tag-terminals","items":[{"id":"/docs/api/merchant#retrieve-terminal-list","title":"Retrieve terminal list","use":"a","href":"#retrieve-terminal-list","options":{"method":"get"}}]},{"id":"/docs/api/merchant#tag-payment-intents","title":"Payment intents","use":"a","href":"#tag-payment-intents","items":[{"id":"/docs/api/merchant#create-payment-intent","title":"Create a payment intent","use":"a","href":"#create-payment-intent","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-payment-intent","title":"Retrieve a payment intent","use":"a","href":"#retrieve-payment-intent","options":{"method":"get"}},{"id":"/docs/api/merchant#cancel-payment-intent","title":"Cancel a payment intent","use":"a","href":"#cancel-payment-intent","options":{"method":"post"}}]},{"id":"/docs/api/merchant#tag-apple-pay-merchant-registration","title":"Apple Pay merchant registration","use":"a","href":"#tag-apple-pay-merchant-registration","items":[{"id":"/docs/api/merchant#register-domain-apple-pay","title":"Register domain for Apple Pay","use":"a","href":"#register-domain-apple-pay","options":{"method":"post"}},{"id":"/docs/api/merchant#unregister-domain-apple-pay","title":"Unregister domain for Apple Pay","use":"a","href":"#unregister-domain-apple-pay","options":{"method":"post"}}]},{"id":"/docs/api/merchant#tag-other","title":"Other","use":"a","href":"#tag-other","items":[{"id":"/docs/api/merchant#register-address-validation-endpoint","title":"Register address validation endpoint for Fast checkout","use":"a","href":"#register-address-validation-endpoint","options":{"method":"post"}},{"id":"/docs/api/merchant#retrieve-synchronous-webhook-list","title":"Retrieve a synchronous webhook list","use":"a","href":"#retrieve-synchronous-webhook-list","options":{"method":"get"}},{"id":"/docs/api/merchant#delete-synchronous-webhook","title":"Delete a synchronous webhook","use":"a","href":"#delete-synchronous-webhook","options":{"method":"delete"}}]}],"versions":[{"label":"2026-08-17","path":"/docs/api/merchant","latest":true},{"label":"2026-04-20","path":"/docs/api/merchant/2026-04-20","latest":false},{"label":"2026-03-12","path":"/docs/api/merchant/2026-03-12","latest":false},{"label":"2025-12-04","path":"/docs/api/merchant/2025-12-04","latest":false},{"label":"2025-10-16","path":"/docs/api/merchant/2025-10-16","latest":false},{"label":"2024-09-01","path":"/docs/api/merchant/2024-09-01","latest":false},{"label":"2024-05-01","path":"/docs/api/merchant/2024-05-01","latest":false},{"label":"2023-09-01","path":"/docs/api/merchant/2023-09-01","latest":false},{"label":"Legacy","path":"/docs/api/merchant/Legacy","latest":false}]},"/docs/api/open-banking":{"items":[{"id":"/docs/api/open-banking#tag-applications","title":"Applications","use":"a","href":"#tag-applications","items":[{"id":"/docs/api/open-banking#get-distinguished-name","title":"Get a distinguished name (DN)","use":"a","href":"#get-distinguished-name","options":{"method":"get"}},{"id":"/docs/api/open-banking#register-application","title":"Register an application","use":"a","href":"#register-application","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-application","title":"Get an application","use":"a","href":"#get-application","options":{"method":"get"}},{"id":"/docs/api/open-banking#update-application","title":"Update an application","use":"a","href":"#update-application","options":{"method":"put"}},{"id":"/docs/api/open-banking#delete-application","title":"Delete an application","use":"a","href":"#delete-application","options":{"method":"delete"}}]},{"id":"/docs/api/open-banking#tag-accounts","title":"Accounts","use":"a","href":"#tag-accounts","items":[{"id":"/docs/api/open-banking#create-account-access-consents","title":"Create an account access consent","use":"a","href":"#create-account-access-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-account-access-consents-consent-id","title":"Retrieve an account access consent","use":"a","href":"#get-account-access-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#delete-account-access-consents-consent-id","title":"Delete an account access consent","use":"a","href":"#delete-account-access-consents-consent-id","options":{"method":"delete"}},{"id":"/docs/api/open-banking#get-accounts","title":"Retrieve all accounts","use":"a","href":"#get-accounts","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-accounts-account-id","title":"Retrieve an account","use":"a","href":"#get-accounts-account-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-accounts-account-id-balances","title":"Retrieve an account balance","use":"a","href":"#get-accounts-account-id-balances","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-accounts-account-id-beneficiaries","title":"Retrieve all account's beneficiaries","use":"a","href":"#get-accounts-account-id-beneficiaries","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-transactions","title":"Transactions","use":"a","href":"#tag-transactions","items":[{"id":"/docs/api/open-banking#get-accounts-account-id-direct-debits","title":"Retrieve all account's direct debits","use":"a","href":"#get-accounts-account-id-direct-debits","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-accounts-account-id-standing-orders","title":"Retrieve all account's standing orders","use":"a","href":"#get-accounts-account-id-standing-orders","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-accounts-account-id-transactions","title":"Retrieve all transactions","use":"a","href":"#get-accounts-account-id-transactions","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-domestic-payment","title":"Domestic payment","use":"a","href":"#tag-domestic-payment","items":[{"id":"/docs/api/open-banking#create-domestic-payment-consents","title":"Create a domestic payment consent","use":"a","href":"#create-domestic-payment-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-payment-consents-consent-id","title":"Retrieve a domestic payment consent","use":"a","href":"#get-domestic-payment-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-domestic-payment-consents-consent-id-funds-confirmation","title":"Get funds confirmation for a domestic payment consent","use":"a","href":"#get-domestic-payment-consents-consent-id-funds-confirmation","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-domestic-payments","title":"Create a domestic payment","use":"a","href":"#create-domestic-payments","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-payments-domestic-payment-id","title":"Retrieve a domestic payment","use":"a","href":"#get-domestic-payments-domestic-payment-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-domestic-scheduled-payment","title":"Domestic scheduled payment","use":"a","href":"#tag-domestic-scheduled-payment","items":[{"id":"/docs/api/open-banking#create-domestic-scheduled-payment-consents","title":"Create a domestic scheduled payment consent","use":"a","href":"#create-domestic-scheduled-payment-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-scheduled-payment-consents-consent-id","title":"Retrieve a domestic scheduled payment consent","use":"a","href":"#get-domestic-scheduled-payment-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-domestic-scheduled-payments","title":"Create a domestic scheduled payment","use":"a","href":"#create-domestic-scheduled-payments","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-scheduled-payments-domestic-scheduled-payment-id","title":"Retrieve a domestic scheduled payment","use":"a","href":"#get-domestic-scheduled-payments-domestic-scheduled-payment-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-domestic-standing-order","title":"Domestic standing order","use":"a","href":"#tag-domestic-standing-order","items":[{"id":"/docs/api/open-banking#create-domestic-standing-order-consents","title":"Create a domestic standing order consent","use":"a","href":"#create-domestic-standing-order-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-standing-order-consents-consent-id","title":"Retrieve a domestic standing order consent","use":"a","href":"#get-domestic-standing-order-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-domestic-standing-orders","title":"Create a domestic standing order","use":"a","href":"#create-domestic-standing-orders","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-domestic-standing-orders-domestic-standing-order-id","title":"Retrieve a domestic standing order","use":"a","href":"#get-domestic-standing-orders-domestic-standing-order-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-file-payment","title":"File payment","use":"a","href":"#tag-file-payment","items":[{"id":"/docs/api/open-banking#create-file-payment-consents","title":"Create a file payment consent","use":"a","href":"#create-file-payment-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-file-payment-consents-consent-id","title":"Retrieve a file payment consent","use":"a","href":"#get-file-payment-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-file-payment-consents-consent-id-file","title":"Retrieve an uploaded payment file","use":"a","href":"#get-file-payment-consents-consent-id-file","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-file-payment-consents-consent-id-file","title":"Upload a payment file","use":"a","href":"#create-file-payment-consents-consent-id-file","options":{"method":"post"}},{"id":"/docs/api/open-banking#create-file-payments","title":"Create a file payment","use":"a","href":"#create-file-payments","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-file-payments-file-payment-id","title":"Retrieve a file payment","use":"a","href":"#get-file-payments-file-payment-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-file-payments-file-payment-id-report-file","title":"Retrieve all payments of a file payment","use":"a","href":"#get-file-payments-file-payment-id-report-file","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-international-payment","title":"International payment","use":"a","href":"#tag-international-payment","items":[{"id":"/docs/api/open-banking#create-international-payment-consents","title":"Create an international payment consent","use":"a","href":"#create-international-payment-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-payment-consents-consent-id","title":"Retrieve an international payment consent","use":"a","href":"#get-international-payment-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-international-payment-consents-consent-id-funds-confirmation","title":"Get funds confirmation for an international payment consent","use":"a","href":"#get-international-payment-consents-consent-id-funds-confirmation","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-international-payments","title":"Create an international payment","use":"a","href":"#create-international-payments","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-payments-international-payment-id","title":"Retrieve an international payment","use":"a","href":"#get-international-payments-international-payment-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-international-scheduled-payment","title":"International scheduled payment","use":"a","href":"#tag-international-scheduled-payment","items":[{"id":"/docs/api/open-banking#create-international-scheduled-payment-consents","title":"Create an international scheduled payment consent","use":"a","href":"#create-international-scheduled-payment-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-scheduled-payment-consents-consent-id","title":"Retrieve an international scheduled payment consent","use":"a","href":"#get-international-scheduled-payment-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#get-international-scheduled-payment-consents-consent-id-funds-confirmation","title":"Get funds confirmation for an international scheduled payment","use":"a","href":"#get-international-scheduled-payment-consents-consent-id-funds-confirmation","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-international-scheduled-payments","title":"Create an international scheduled payment","use":"a","href":"#create-international-scheduled-payments","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-scheduled-payments-international-scheduled-payment-id","title":"Retrieve an international scheduled payment","use":"a","href":"#get-international-scheduled-payments-international-scheduled-payment-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-international-standing-order","title":"International standing order","use":"a","href":"#tag-international-standing-order","items":[{"id":"/docs/api/open-banking#create-international-standing-order-consents","title":"Create an international standing order consent","use":"a","href":"#create-international-standing-order-consents","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-standing-order-consents-consent-id","title":"Retrieve an international standing order consent","use":"a","href":"#get-international-standing-order-consents-consent-id","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-international-standing-orders","title":"Create an international standing order","use":"a","href":"#create-international-standing-orders","options":{"method":"post"}},{"id":"/docs/api/open-banking#get-international-standing-orders-international-standing-order-id","title":"Retrieve an international standing order","use":"a","href":"#get-international-standing-orders-international-standing-order-id","options":{"method":"get"}}]},{"id":"/docs/api/open-banking#tag-draft-payment","title":"Draft payment","use":"a","href":"#tag-draft-payment","items":[{"id":"/docs/api/open-banking#list-draft-payment","title":"List draft payments","use":"a","href":"#list-draft-payment","options":{"method":"get"}},{"id":"/docs/api/open-banking#create-draft-payment","title":"Create a draft payment","use":"a","href":"#create-draft-payment","options":{"method":"post"}},{"id":"/docs/api/open-banking#delete-draft-payment-transfer","title":"Delete a draft payment transfer","use":"a","href":"#delete-draft-payment-transfer","options":{"method":"delete"}},{"id":"/docs/api/open-banking#find-draft-payment","title":"Retrieve a draft payment","use":"a","href":"#find-draft-payment","options":{"method":"get"}},{"id":"/docs/api/open-banking#delete-draft-payment","title":"Delete a draft payment","use":"a","href":"#delete-draft-payment","options":{"method":"delete"}}]}],"versions":"$undefined"},"/docs/api/revolut-wallet-callbacks":{"items":[{"id":"/docs/api/revolut-wallet-callbacks#tag-preview-transaction-outcomes","title":"[PREVIEW] Transaction outcomes","use":"a","href":"#tag-preview-transaction-outcomes","items":[{"id":"/docs/api/revolut-wallet-callbacks#search-transaction-outcomes","title":"[PREVIEW] Fetch transaction outcomes for a transaction","use":"a","href":"#search-transaction-outcomes","options":{"method":"post"}}]},{"id":"/docs/api/revolut-wallet-callbacks#tag-preview-passes","title":"[PREVIEW] Passes","use":"a","href":"#tag-preview-passes","items":[{"id":"/docs/api/revolut-wallet-callbacks#fetch-pass","title":"[PREVIEW] Retrieve a pass","use":"a","href":"#fetch-pass","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-callbacks#fetch-pass-for-import","title":"[PREVIEW] Retrieve a pass for import","use":"a","href":"#fetch-pass-for-import","options":{"method":"get"}}]}],"versions":"$undefined"},"/docs/api/revolut-wallet-loyalty-callbacks":{"items":[{"id":"/docs/api/revolut-wallet-loyalty-callbacks#tag-loyalty-enrolment","title":"Loyalty enrolment","use":"a","href":"#tag-loyalty-enrolment","items":[{"id":"/docs/api/revolut-wallet-loyalty-callbacks#auto-enrol-customer","title":"Enrol a customer automatically","use":"a","href":"#auto-enrol-customer","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#retrieve-auth-server-metadata","title":"Retrieve authorisation server metadata","use":"a","href":"#retrieve-auth-server-metadata","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#create-par-request","title":"Push an authorisation request","use":"a","href":"#create-par-request","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#authorize-enrolment","title":"Authorise the customer in the browser","use":"a","href":"#authorize-enrolment","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#exchange-enrolment-token","title":"Issue tokens","use":"a","href":"#exchange-enrolment-token","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#retrieve-loyalty-profile","title":"Retrieve a loyalty profile","use":"a","href":"#retrieve-loyalty-profile","options":{"method":"get"}}]},{"id":"/docs/api/revolut-wallet-loyalty-callbacks#tag-loyalty-auto-apply","title":"Loyalty auto-apply","use":"a","href":"#tag-loyalty-auto-apply","items":[{"id":"/docs/api/revolut-wallet-loyalty-callbacks#apply-loyalty-card","title":"Apply a loyalty card to a transaction","use":"a","href":"#apply-loyalty-card","options":{"method":"post"}}]}],"versions":"$undefined"},"/docs/api/revolut-wallet-partner":{"items":[{"id":"/docs/api/revolut-wallet-partner#tag-preview-passes","title":"[PREVIEW] Passes","use":"a","href":"#tag-preview-passes","items":[{"id":"/docs/api/revolut-wallet-partner#create-pass","title":"[PREVIEW] Create a pass","use":"a","href":"#create-pass","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#push-pass-update","title":"[PREVIEW] Update a pass","use":"a","href":"#push-pass-update","options":{"method":"put"}},{"id":"/docs/api/revolut-wallet-partner#terminate-pass","title":"[PREVIEW] Terminate a pass","use":"a","href":"#terminate-pass","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#create-pass-termination","title":"[PREVIEW] Terminate passes in bulk","use":"a","href":"#create-pass-termination","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#get-pass-termination","title":"[PREVIEW] Get a termination operation","use":"a","href":"#get-pass-termination","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-partner#cancel-pass-termination","title":"[PREVIEW] Cancel a termination operation","use":"a","href":"#cancel-pass-termination","options":{"method":"delete"}}]},{"id":"/docs/api/revolut-wallet-partner#tag-preview-templates","title":"[PREVIEW] Templates","use":"a","href":"#tag-preview-templates","items":[{"id":"/docs/api/revolut-wallet-partner#create-template","title":"Create a template","use":"a","href":"#create-template","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#list-templates","title":"List templates","use":"a","href":"#list-templates","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-partner#update-template","title":"Update a template","use":"a","href":"#update-template","options":{"method":"put"}},{"id":"/docs/api/revolut-wallet-partner#get-template","title":"Retrieve a template","use":"a","href":"#get-template","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-partner#activate-template","title":"Activate a template","use":"a","href":"#activate-template","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#terminate-template","title":"Terminate a template","use":"a","href":"#terminate-template","options":{"method":"post"}},{"id":"/docs/api/revolut-wallet-partner#get-template-termination","title":"Get a template termination operation","use":"a","href":"#get-template-termination","options":{"method":"get"}},{"id":"/docs/api/revolut-wallet-partner#cancel-template-termination","title":"Cancel a template termination operation","use":"a","href":"#cancel-template-termination","options":{"method":"delete"}}]}],"versions":"$undefined"},"/docs/api/revolut-x-crypto-exchange":{"items":[{"id":"/docs/api/revolut-x-crypto-exchange#tag-public-market-data","title":"Public market data","use":"a","href":"#tag-public-market-data","items":[{"id":"/docs/api/revolut-x-crypto-exchange#get-order-book-public","title":"Get order book","use":"a","href":"#get-order-book-public","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-tickers-public","title":"Get tickers","use":"a","href":"#get-tickers-public","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-candles-public","title":"Get OHLCV candles","use":"a","href":"#get-candles-public","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-trade-history-public","title":"Get trade history","use":"a","href":"#get-trade-history-public","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-currencies-public","title":"Get currencies","use":"a","href":"#get-currencies-public","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-currency-pairs-public","title":"Get currency pairs","use":"a","href":"#get-currency-pairs-public","options":{"method":"get"}}]},{"id":"/docs/api/revolut-x-crypto-exchange#tag-market-data","title":"Market data","use":"a","href":"#tag-market-data","items":[{"id":"/docs/api/revolut-x-crypto-exchange#get-order-book","title":"Get order book","use":"a","href":"#get-order-book","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-tickers","title":"Get tickers","use":"a","href":"#get-tickers","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-candles","title":"Get OHLCV candles","use":"a","href":"#get-candles","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-trade-history","title":"Get trade history","use":"a","href":"#get-trade-history","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-currencies","title":"Get currencies","use":"a","href":"#get-currencies","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-currency-pairs","title":"Get currency pairs","use":"a","href":"#get-currency-pairs","options":{"method":"get"}}]},{"id":"/docs/api/revolut-x-crypto-exchange#tag-account-data","title":"Account data","use":"a","href":"#tag-account-data","items":[{"id":"/docs/api/revolut-x-crypto-exchange#get-all-balances","title":"Get balances","use":"a","href":"#get-all-balances","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-active-orders","title":"Get active orders","use":"a","href":"#get-active-orders","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-historical-orders","title":"Get historical orders","use":"a","href":"#get-historical-orders","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-order","title":"Get order details by ID","use":"a","href":"#get-order","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-order-fills","title":"Get fills of order by ID","use":"a","href":"#get-order-fills","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-private-trades","title":"Get account trades","use":"a","href":"#get-private-trades","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-transactions","title":"Get transactions","use":"a","href":"#get-transactions","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-transaction-details","title":"Get transaction details by ID","use":"a","href":"#get-transaction-details","options":{"method":"get"}}]},{"id":"/docs/api/revolut-x-crypto-exchange#tag-trading","title":"Trading","use":"a","href":"#tag-trading","items":[{"id":"/docs/api/revolut-x-crypto-exchange#place-order","title":"Place order","use":"a","href":"#place-order","options":{"method":"post"}},{"id":"/docs/api/revolut-x-crypto-exchange#cancel-all-orders","title":"Cancel all active orders","use":"a","href":"#cancel-all-orders","options":{"method":"delete"}},{"id":"/docs/api/revolut-x-crypto-exchange#cancel-order","title":"Cancel order by ID","use":"a","href":"#cancel-order","options":{"method":"delete"}},{"id":"/docs/api/revolut-x-crypto-exchange#replace-order","title":"Replace order","use":"a","href":"#replace-order","options":{"method":"put"}}]},{"id":"/docs/api/revolut-x-crypto-exchange#tag-deprecated","title":"Deprecated","use":"a","href":"#tag-deprecated","items":[{"id":"/docs/api/revolut-x-crypto-exchange#get-last-trades-deprecated","title":"Get last trades (deprecated)","use":"a","href":"#get-last-trades-deprecated","options":{"method":"get"}},{"id":"/docs/api/revolut-x-crypto-exchange#get-public-order-book-deprecated","title":"Get order book (deprecated)","use":"a","href":"#get-public-order-book-deprecated","options":{"method":"get"}}]}],"versions":"$undefined"}},"alphaByPath":{}},"children":["$undefined","$L4","$L5"]}]}]]}]} 5:["$","footer",null,{"className":"_19k157u0","children":["$","div",null,{"className":"_19k157u1","children":[["$","div",null,{"className":"_19k157u2","children":[["$","img",null,{"data-revpress-display":"light","className":"_19k157u8","src":"https://assets.revolut.com/Brand/Retail/Logos/Wordmark/Revolut_Black.svg","alt":"Revolut"}],["$","img",null,{"data-revpress-display":"dark","className":"_19k157u8","src":"https://assets.revolut.com/Brand/Retail/Logos/Wordmark/Revolut_White.svg","alt":"Revolut"}],[["$","div","0",{"className":"_19k157u4","children":[["$","span",null,{"className":"_19k157u3","children":"Company and products"}],[["$","$L2","0",{"className":"_19k157u5","to":"https://revolut.com/","children":"Discover Revolut"}],["$","$L2","1",{"className":"_19k157u5","to":"https://www.revolut.com/careers/","children":"Join the team!"}],["$","$L2","2",{"className":"_19k157u5","to":"mailto:api-requests@revolut.com","children":"Email us for API support"}]]]}],["$","div","1",{"className":"_19k157u4","children":[["$","span",null,{"className":"_19k157u3","children":"Build Banking Apps"}],[["$","$L2","0",{"className":"_19k157u5","to":"/docs/guides/build-banking-apps/introduction-to-the-open-banking-api/introduction","children":"Documentation"}],["$","$L2","1",{"className":"_19k157u5","to":"/docs/api/open-banking","children":"Open Banking API"}],["$","$L2","2",{"className":"_19k157u5","to":"/docs/guides/build-banking-apps/api-metrics","children":"API Status"}],["$","$L2","3",{"className":"_19k157u5","to":"https://developer.revolut.com/portal/signup","children":"Developer Portal"}],["$","$L2","4",{"className":"_19k157u5","to":"mailto:api-requests@revolut.com","children":"Request Sandbox access"}]]]}],["$","div","2",{"className":"_19k157u4","children":[["$","span",null,{"className":"_19k157u3","children":"Manage Accounts"}],[["$","$L2","0",{"className":"_19k157u5","to":"/docs/guides/manage-accounts/introduction","children":"Documentation"}],["$","$L2","1",{"className":"_19k157u5","to":"/docs/api/business","children":"Business API"}]]]}],["$","div","3",{"className":"_19k157u4","children":[["$","span",null,{"className":"_19k157u3","children":"Accept Payments"}],[["$","$L2","0",{"className":"_19k157u5","to":"/docs/guides/merchant/introduction","children":"Documentation"}],["$","$L2","1",{"className":"_19k157u5","to":"/docs/api/merchant","children":"Merchant API"}],["$","$L2","2",{"className":"_19k157u5","to":"/docs/sdks/merchant-web-sdk/introduction","children":"Merchant Web SDKs"}],["$","$L2","3",{"className":"_19k157u5","to":"/docs/sdks/merchant-ios-sdk/introduction","children":"Merchant iOS SDKs"}],["$","$L2","4",{"className":"_19k157u5","to":"/docs/sdks/merchant-android-sdk/introduction","children":"Merchant Android SDKs"}]]]}],["$","div","4",{"className":"_19k157u4","children":[["$","span",null,{"className":"_19k157u3","children":"In-person Payments"}],[["$","$L2","0",{"className":"_19k157u5","to":"/docs/guides/merchant/accept-payments/in-person-payments/introduction","children":"Documentation"}],["$","$L2","1",{"className":"_19k157u5","to":"/docs/guides/merchant/accept-payments/in-person-payments/pos/introduction","children":"Revolut POS"}],["$","$L2","2",{"className":"_19k157u5","to":"https://apps.apple.com/gb/app/revolut-pos/id1604861598","children":"Download the Revolut POS app"}],["$","$L2","3",{"className":"_19k157u5","to":"/docs/guides/merchant/accept-payments/in-person-payments/reader/introduction","children":"Revolut Reader"}],["$","$L2","4",{"className":"_19k157u5","to":"/docs/guides/merchant/accept-payments/in-person-payments/terminal/introduction","children":"Revolut Terminal"}]]]}]]]}],["$","div",null,{"data-has-links":true,"className":"_19k157u6","children":[["$","p",null,{"className":"_19k157u7","children":["© Revolut Ltd ",2026]}],[["$","p","0",{"className":"_19k157u7","children":"If you would like to find out more about which Revolut entity you receive services from, or if you have any other questions, please reach out to us via the in-app chat in the Revolut app. Revolut Ltd (No. 08804411) is authorised by the Financial Conduct Authority under the Electronic Money Regulations 2011 (Firm Reference 900562). Registered address: 30 South Colonnade, Canary Wharf, London, England, E14 5HX. Insurance related-products are arranged by Revolut Travel Ltd which is authorised by the Financial Conduct Authority to undertake insurance distribution activities (FCA No: 780586) and by Revolut Ltd, an Appointed Representative of Revolut Travel Ltd in relation to insurance distribution activities. Trading and investment products are provided by Revolut Trading Ltd (No. 832790) is wholly owned subsidiary of Revolut Ltd and is an appointed representative of Resolution Compliance Ltd which is authorised and regulated by the Financial Conduct Authority."}],"$L6","$L7"]]}]]}]}] 6:["$","p","1",{"className":"_19k157u7","children":"We are also registered with the Financial Conduct Authority to offer cryptocurrency services under the Money Laundering, Terrorist Financing and Transfer of Funds (Information on the Payer) Regulations 2017."}] 7:["$","p","2",{"className":"_19k157u7","children":"Revolut's commodities service is not regulated by the FCA."}] 10:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 4:[["$","title",null,{"children":"[PREVIEW] Revolut Wallet Loyalty Callbacks | Developer"}],["$","meta",null,{"property":"og:title","content":"[PREVIEW] Revolut Wallet Loyalty Callbacks | Developer"}],[["$","meta",null,{"name":"description","content":"Loyalty endpoints you host and Revolut calls. Implement them to this contract so customers can enrol in your loyalty program from Revolut Wallet, and so their loyalty cards are applied automatically when they pay with a Revolut card."}],["$","meta",null,{"property":"og:description","content":"Loyalty endpoints you host and Revolut calls. Implement them to this contract so customers can enrol in your loyalty program from Revolut Wallet, and so their loyalty cards are applied automatically when they pay with a Revolut card."}]],"$undefined",["$","meta",null,{"property":"og:url","content":"https://developer.revolut.com/docs/api/revolut-wallet-loyalty-callbacks"}],[["$","meta",null,{"property":"og:image","content":"https://developer.revolut.com/_assets/og/docs/api/revolut-wallet-loyalty-callbacks.png"}],["$","meta",null,{"property":"og:image:width","content":"1200"}],["$","meta",null,{"property":"og:image:height","content":"630"}],["$","meta",null,{"property":"og:image:type","content":"image/png"}],["$","meta",null,{"name":"twitter:card","content":"summary_large_image"}]],["$","$L8",null,{"children":["$","div",null,{"data-variant":"menu-wide","data-has-feed":false,"data-revpress":"layout","className":"wp3eky1","children":[["$","$L9",null,{"actions":"$undefined"}],["$","$La",null,{}],["$","main",null,{"data-variant":"$undefined","className":"_12jbm4g0","children":[["$","nav",null,{"className":"e43y4a0","data-event-key":"breadcrumbs","children":["$","ol",null,{"className":"e43y4a1","children":[["$","li","/-0",{"className":"e43y4a2","children":["$","$L2",null,{"className":"e43y4a3","to":"/","children":"Home"}]}],["$","li","/docs/api/revolut-wallet-loyalty-callbacks-1",{"className":"e43y4a2","children":null}]]}]}],["$","div",null,{"className":"nizrjz0","children":[["$","h1",null,{"className":"nizrjz2","children":["[PREVIEW] Revolut Wallet Loyalty Callbacks",["$","span",null,{"className":"ubxf1y0","children":["$","$Lb",null,{"variant":"faded","color":"accent","children":"2026-09-17"}]}]]}],["$","div",null,{"className":"nizrjz1","children":["$","$Lc",null,{"color":"var(--rui-color-grey-tone-50)","className":"_107lvaj3","useIcon":"16/Code","use":"a","href":"/docs/api/revolut-wallet-loyalty-callbacks.yaml","target":"_blank","rel":"noreferrer noopener","children":"View schema"}]}]]}],["$","article",null,{"className":"_8qmzte0 ubxf1y1","children":[["$","div",null,{"className":"_107lvaj0","children":["$undefined","$Ld",["$","$Le",null,{"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$Lf"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$10","descriptionNode":"$L11"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.partner.example/oauth2/token","scopes":{"loyalty.apply":"Apply loyalty cards to transactions.","loyalty.enrol":"Enrol customers into your loyalty program server-to-server."}}},"descriptionNode":"$L12"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$L13"}}}]]}],["$L14","$L15"],"$L16"]}]]}],"$L17"]}]}]] 18:I["9083c63ad443",[],"CopyAnchor",1] 19:I["741b00e3790d",[],"AIToolbar",1] 23:I["d4c6751a9c52",[],"HashObserver",1] 24:I["98d563c3c055",[],"ToastContainer",1] 14:["$","div","tag-loyalty-enrolment",{"children":[["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"_107lvaj1","children":[["$","div",null,{"className":"_107lvaj2","children":[["$","h2",null,{"id":"tag-loyalty-enrolment","children":["Loyalty enrolment",["$","$L18",null,{"id":"tag-loyalty-enrolment"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/tags/tag-loyalty-enrolment.md"}]]}],"$L1a"]}]}],"$undefined"]}],["$L1b","$L1c","$L1d","$L1e","$L1f","$L20"]]}] 15:["$","div","tag-loyalty-auto-apply",{"children":[["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"_107lvaj1","children":[["$","div",null,{"className":"_107lvaj2","children":[["$","h2",null,{"id":"tag-loyalty-auto-apply","children":["Loyalty auto-apply",["$","$L18",null,{"id":"tag-loyalty-auto-apply"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/tags/tag-loyalty-auto-apply.md"}]]}],"$L21"]}]}],"$undefined"]}],["$L22"]]}] 16:["$","$L23",null,{"sectionIds":["tag-loyalty-enrolment","auto-enrol-customer","retrieve-auth-server-metadata","create-par-request","authorize-enrolment","exchange-enrolment-token","retrieve-loyalty-profile","tag-loyalty-auto-apply","apply-loyalty-card"]}] 17:["$","div",null,{"className":"wp3eky0","children":["$","$L24",null,{}]}] 25:I["29504dfc1207",[],"ErrorBoundary",1] 27:I["98d563c3c055",[],"Box",1] 28:I["98d563c3c055",[],"StatusWidget",1] 29:I["52683481a7bd",[],"StatusWidgetImage",1] 2a:I["52683481a7bd",[],"StatusWidgetTitle",1] 2b:I["52683481a7bd",[],"StatusWidgetDescription",1] 26:Tb8f,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Loyalty endpoints you host and Revolut calls. Implement them to this contract so customers can enrol in your loyalty program from Revolut Wallet, and so their loyalty cards are applied automatically when they pay with a Revolut card. Revolut is always the client; you are the server. - **Enrol a customer automatically (optional)**: `POST /loyalty/auto-enrol` registers the customer without any customer interaction, using the details they agreed to share: their name, email, and phone number, verified by Revolut's know your customer (KYC) checks, plus any partner-configured fields they enter. If the customer must act in a browser (accept your terms, provide missing details), return a `403` UI-required code and Revolut falls back to the browser flow. If you don't implement auto-enrol, Revolut starts every new enrolment with the browser flow. - **Enrol through the browser flow on your authorisation server**: Revolut reads your OpenID Connect discovery document, pushes the authorisation request (`POST /oauth2/par`) with `prompt=create`, sends the customer's browser to `GET /oauth2/authorize`, exchanges the code at `POST /oauth2/token`, and fetches the membership from `GET /loyalty/profile`. - **Link a customer's existing account**: when the customer starts "Link existing account" in Revolut Wallet, or auto-enrol returns `account_exists`, Revolut runs the same browser flow with `prompt=login` and shares no personal data: the customer signs in to you and consents to link their membership. - **Apply a loyalty card to a transaction**: `POST /loyalty/apply`. After a customer enrolled in your loyalty program pays with a Revolut card at your business, Revolut asks you to apply their loyalty card and report the points earned. Passes themselves are managed through the companion APIs: the Revolut-hosted [Wallet Partner API](https://developer.revolut.com/docs/api/revolut-wallet-partner) and the pass endpoints you host in the [Wallet Partner Callbacks API](https://developer.revolut.com/docs/api/revolut-wallet-callbacks). **Where the endpoints live.** `POST /loyalty/apply`, `POST /loyalty/auto-enrol`, and `GET /loyalty/profile` live under the callback base URL you register during onboarding. The authorisation-server endpoints live under the issuer URL you register, which may include a path: Revolut reads `{issuer}/.well-known/openid-configuration` and calls the endpoint URLs it lists, so the `/oauth2/*` paths in this reference are illustrative. All `servers` URLs are examples. :::info Start with the [Revolut Wallet guide](https://developer.revolut.com/docs/guides/revolut-wallet/introduction) and [Get started](https://developer.revolut.com/docs/guides/revolut-wallet/get-started) to onboard your business. ::: d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$26",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":"$L2c"}]}] f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] 2d:I["98d563c3c055",[],"Icon",1] 2c:[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":"Loyalty endpoints you host and Revolut calls. Implement them to this contract so customers can\nenrol in your loyalty program from Revolut Wallet, and so their loyalty cards are applied\nautomatically when they pay with a Revolut card. Revolut is always the client; you are the\nserver."}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Enrol a customer automatically (optional)"}],": ",["$","code","code-0",{"children":"POST /loyalty/auto-enrol"}]," registers the\ncustomer without any customer interaction, using the details they agreed to share: their\nname, email, and phone number, verified by Revolut's know your customer (KYC) checks, plus\nany partner-configured fields they enter. If the customer must act in a browser (accept\nyour terms, provide missing details), return a ",["$","code","code-1",{"children":"403"}]," UI-required code and Revolut falls\nback to the browser flow. If you don't implement auto-enrol, Revolut starts every new\nenrolment with the browser flow."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Enrol through the browser flow on your authorisation server"}],": Revolut reads your\nOpenID Connect discovery document, pushes the authorisation request (",["$","code","code-0",{"children":"POST /oauth2/par"}],")\nwith ",["$","code","code-1",{"children":"prompt=create"}],", sends the customer's browser to ",["$","code","code-2",{"children":"GET /oauth2/authorize"}],", exchanges the\ncode at ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and fetches the membership from ",["$","code","code-4",{"children":"GET /loyalty/profile"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Link a customer's existing account"}],": when the customer starts \"Link existing account\" in\nRevolut Wallet, or auto-enrol returns ",["$","code","code-0",{"children":"account_exists"}],", Revolut runs the same browser flow\nwith ",["$","code","code-1",{"children":"prompt=login"}]," and shares no personal data: the customer signs in to you and consents\nto link their membership."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Apply a loyalty card to a transaction"}],": ",["$","code","code-0",{"children":"POST /loyalty/apply"}],". After a customer enrolled\nin your loyalty program pays with a Revolut card at your business, Revolut asks you to apply\ntheir loyalty card and report the points earned."]}],"\n"]}],"\n",["$","p","p-1",{"children":["Passes themselves are managed through the companion APIs: the Revolut-hosted\n",["$","a","a-0",{"href":"https://developer.revolut.com/docs/api/revolut-wallet-partner","target":"_blank","rel":"noreferrer","children":"Wallet Partner API"}]," and the pass endpoints you host in the\n",["$","a","a-1",{"href":"https://developer.revolut.com/docs/api/revolut-wallet-callbacks","target":"_blank","rel":"noreferrer","children":"Wallet Partner Callbacks API"}],"."]}],"\n",["$","p","p-2",{"children":[["$","strong","strong-0",{"children":"Where the endpoints live."}]," ",["$","code","code-0",{"children":"POST /loyalty/apply"}],", ",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and\n",["$","code","code-2",{"children":"GET /loyalty/profile"}]," live under the callback base URL you register during onboarding. The\nauthorisation-server endpoints live under the issuer URL you register, which may include a\npath: Revolut reads ","$L2e"," and calls the endpoint URLs it\nlists, so the ","$L2f"," paths in this reference are illustrative. All ","$L30"," URLs are\nexamples."]}],"\n","$L31"] 32:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 11:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$32",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$L33",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$L34","."]}],"\n","$L35","\n"]}],"\n","$L36"]}]}] 12:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] 13:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 1a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Enrol customers in your loyalty program from Revolut Wallet, or link a membership they\nalready have with you: automatic enrolment, the OAuth 2.0 browser flow on your\nauthorisation server, and the loyalty profile Revolut reads when the flow completes. Both\nenrolment and linking record the partner-issued `member_id` and `program_id`, which Revolut\nlater sends on `POST /loyalty/apply`.\n\n:::warning [Pre-release preview]\nThis is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Enrol customers in your loyalty program from Revolut Wallet, or link a membership they\nalready have with you: automatic enrolment, the OAuth 2.0 browser flow on your\nauthorisation server, and the loyalty profile Revolut reads when the flow completes. Both\nenrolment and linking record the partner-issued ",["$","code","code-0",{"children":"member_id"}]," and ",["$","code","code-1",{"children":"program_id"}],", which Revolut\nlater sends on ",["$","code","code-2",{"children":"POST /loyalty/apply"}],"."]}],"\n",["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}]]}]}] 21:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Auto-apply loyalty cards to Revolut-card transactions. Revolut sends the partner-issued\nmembership and program identifiers recorded during enrolment or linking, together with the\ntransaction context you use to match the purchase. Revolut uses the merchant ID and\nacquiring institution ID you provide during onboarding to route eligible transactions. The\nacquiring institution ID is routing data and is not included in the callback request.\n\n:::warning [Pre-release preview]\nThis is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Auto-apply loyalty cards to Revolut-card transactions. Revolut sends the partner-issued\nmembership and program identifiers recorded during enrolment or linking, together with the\ntransaction context you use to match the purchase. Revolut uses the merchant ID and\nacquiring institution ID you provide during onboarding to route eligible transactions. The\nacquiring institution ID is routing data and is not included in the callback request."}],"\n",["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}]]}]}] 2e:["$","code","code-3",{"children":"{issuer}/.well-known/openid-configuration"}] 2f:["$","code","code-4",{"children":"/oauth2/*"}] 30:["$","code","code-5",{"children":"servers"}] 31:["$","div","inlinealert-1",{"data-type":"info","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMarkOutline","color":"var(--rui-color-accent)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["Start with the ",["$","a","a-0",{"href":"https://developer.revolut.com/docs/guides/revolut-wallet/introduction","target":"_blank","rel":"noreferrer","children":"Revolut Wallet guide"}]," and ",["$","a","a-1",{"href":"https://developer.revolut.com/docs/guides/revolut-wallet/get-started","target":"_blank","rel":"noreferrer","children":"Get started"}]," to onboard your business."]}]}]]}] 33:["$","code","code-1",{"children":"kid"}] 34:["$","code","code-2",{"children":"kid"}] 35:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] 36:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] 37:"$Sreact.fragment" 38:I["18c949fc15ff",[],"ApiEndpointProvider",1] 3e:I["fb6f11acc98a",[],"Request",1] 41:I["1ec75fa958bc",[],"Response",1] 42:I["f366e5914c23",[],"CodeSnippets",1] 43:T716,
fetch("https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__", {
  method: "GET"
})
  .then(response => response.json())
  .then(data => console.log(data));
44:Tbfe,
package main

import (
  "fmt"
  "net/http"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__"
  req, _ := http.NewRequest("GET", url, nil)

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
45:T43f,
import requests

url = "https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__"

response = requests.get(url)
print(response.json())
46:T13a5,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__"))
      .GET(HttpRequest.BodyPublishers.noBody())
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
47:T11f8,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Get,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__")
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
1e:["$","$37","authorize-enrolment",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"302":{"description":"Redirect back to Revolut, with `iss` percent-encoded in the query string. Success:\n`Location: {redirect_uri}?code={authorization_code}&state={state}&iss={issuer}`.\nFailure: `Location: {redirect_uri}?error={error}&state={state}&iss={issuer}` with one\nof the following errors:\n\n| Error | Description |\n| ----- | ----------- |\n| `access_denied` | The customer refused to continue or, in the link flow, has no account with you. Revolut ends the flow. |\n| `invalid_request_uri` | Unknown, expired, or already-used `request_uri`. Sent without `state`. Revolut shows an error and the customer can start again from Revolut Wallet. |\n| `temporarily_unavailable` | Temporary error; the customer can retry. |\n\nThis response has no body.\n","headers":{"Location":{"description":"The redirect target, the `redirect_uri` from the stored PAR with the result appended.","examples":{"success":{"summary":"The customer enrolled or linked their membership","value":"https://wallet.revolut.com/loyalty/oauth2/callback?code=SplxlOBeZQQYbYSaW6S5bA&state=KhB6vF3nY2zQ9wX1&iss=https%3A%2F%2Fauth.partner.example"},"access_denied":{"summary":"The customer refused to continue","value":"https://wallet.revolut.com/loyalty/oauth2/callback?error=access_denied&state=KhB6vF3nY2zQ9wX1&iss=https%3A%2F%2Fauth.partner.example"}},"descriptionNode":"$L39","schema":{"type":"string","format":"uri"}}},"descriptionNode":"$L3a"},"400":{"description":"The request bypassed `request_uri` or is otherwise invalid, and no redirect back to\nRevolut is possible. Render an error page for the customer.\n","descriptionNode":"$L3b"}},"requestBody":"$undefined","variantLabels":[],"children":[["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"authorize-enrolment","children":[["$L3c","$undefined"],["$","$L18",null,{"id":"authorize-enrolment"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/authorize-enrolment.md"}]]}]}],"$undefined"]}],["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L3d",["$","$L3e",null,{"parameters":[{"name":"client_id","in":"query","required":true,"description":"Revolut's OAuth 2.0 client ID, as registered during onboarding.","schema":{"type":"string"},"example":"revolut-wallet","descriptionNode":"$L3f"},{"name":"request_uri","in":"query","required":true,"description":"The single-use `request_uri` returned by `POST /oauth2/par`.","schema":{"type":"string"},"example":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c","descriptionNode":"$L40"}],"requestBody":"$undefined","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$1e:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X GET \"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\"","templateHtml":"
curl -X GET \"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\"
","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","shell-double-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}},{"id":"javascript","label":"JavaScript","templateCode":"fetch(\"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\", {\n method: \"GET\"\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$43","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","json-string-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\"\n req, _ := http.NewRequest(\"GET\", url, nil)\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$44","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","json-string-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\"\n\nresponse = requests.get(url)\nprint(response.json())","templateHtml":"$45","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","json-string-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}},{"id":"java","label":"Java","templateCode":"import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\npublic class Main {\n public static void main(String[] args) {\n HttpClient client = HttpClient.newHttpClient();\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\"))\n .GET(HttpRequest.BodyPublishers.noBody())\n .build();\n\n client.sendAsync(request, HttpResponse.BodyHandlers.ofString())\n .thenApply(HttpResponse::body)\n .thenAccept(System.out::println)\n .join();\n }\n}","templateHtml":"$46","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","json-string-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}},{"id":"csharp","label":"C#","templateCode":"using System.Net.Http;\nusing System.Net.Http.Headers;\n\nvar client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Get,\n RequestUri = new Uri(\"https://passes.partner.example/revolut-wallet/oauth2/authorize?client_id=__RP_TOK_0__&request_uri=__RP_TOK_1__\")\n};\n\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}","templateHtml":"$47","tokens":[{"marker":"__RP_TOK_0__","paramName":"client_id","paramIn":"query","pipeline":["url-component","json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"request_uri","paramIn":"query","pipeline":["url-component","json-string-inner"]}],"defaults":{"query:client_id":"revolut-wallet","query:request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"}}]},"method":"get","servers":["https://passes.partner.example/revolut-wallet"],"path":"/oauth2/authorize","parameters":["$1e:props:children:0:props:children:props:children:1:props:children:0:props:children:1:props:parameters:0","$1e:props:children:0:props:children:props:children:1:props:children:0:props:children:1:props:parameters:1"]}],false],"$L48","$L49"]}]]}]]}]}],false]}] 4a:I["48c2ae8093a4",[],"RequestSample",1] 4b:I["b2446624eec0",[],"ResponseSample",1] 48:["$","$L4a",null,{"exampleBlocks":{},"title":"Request body samples","headingAs":"h4"}] 49:["$","$L4b",null,{"exampleBlocks":{"302":{},"400":{}},"headingAs":"h4"}] 3c:"Authorise the customer in the browser" 39:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The redirect target, the `redirect_uri` from the stored PAR with the result appended.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The redirect target, the ",["$","code","code-0",{"children":"redirect_uri"}]," from the stored PAR with the result appended."]}]]}]}] 3a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Redirect back to Revolut, with `iss` percent-encoded in the query string. Success:\n`Location: {redirect_uri}?code={authorization_code}&state={state}&iss={issuer}`.\nFailure: `Location: {redirect_uri}?error={error}&state={state}&iss={issuer}` with one\nof the following errors:\n\n| Error | Description |\n| ----- | ----------- |\n| `access_denied` | The customer refused to continue or, in the link flow, has no account with you. Revolut ends the flow. |\n| `invalid_request_uri` | Unknown, expired, or already-used `request_uri`. Sent without `state`. Revolut shows an error and the customer can start again from Revolut Wallet. |\n| `temporarily_unavailable` | Temporary error; the customer can retry. |\n\nThis response has no body.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Redirect back to Revolut, with ",["$","code","code-0",{"children":"iss"}]," percent-encoded in the query string. Success:\n",["$","code","code-1",{"children":"Location: {redirect_uri}?code={authorization_code}&state={state}&iss={issuer}"}],".\nFailure: ",["$","code","code-2",{"children":"Location: {redirect_uri}?error={error}&state={state}&iss={issuer}"}]," with one\nof the following errors:"]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Error","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"access_denied"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The customer refused to continue or, in the link flow, has no account with you. Revolut ends the flow.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request_uri"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Unknown, expired, or already-used ",["$","code","code-0",{"children":"request_uri"}],". Sent without ",["$","code","code-1",{"children":"state"}],". Revolut shows an error and the customer can start again from Revolut Wallet."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"temporarily_unavailable"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Temporary error; the customer can retry.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}],"\n",["$","p","p-1",{"children":"This response has no body."}]]}]}] 3b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The request bypassed `request_uri` or is otherwise invalid, and no redirect back to\nRevolut is possible. Render an error page for the customer.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The request bypassed ",["$","code","code-0",{"children":"request_uri"}]," or is otherwise invalid, and no redirect back to\nRevolut is possible. Render an error page for the customer."]}]]}]}] 4c:T910,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Your authorisation endpoint: the `authorization_endpoint` in your discovery document. The customer's browser (a secure system browser, never an embedded web view) opens it with the `request_uri` Revolut pushed at `POST /oauth2/par`. Look up the stored request, check that `client_id` matches the client the `request_uri` was issued to (RFC 9126), and route the customer by the stored `prompt` value. Route only on `prompt`, never on whether `enrolment_claims` is empty: - `prompt=login` (link an existing account): route the customer straight to your sign-in screen and force re-authentication, ignoring any existing session. After the customer signs in, ask for consent to link their loyalty membership. If the customer has no account with you, redirect back with `error=access_denied`. - `prompt=create` (enrol a new member): pre-fill your registration form with the pushed enrolment claims and let the customer register. If the pushed data matches an existing membership, offer sign-in and link the account; never create a duplicate. Show your Terms and Conditions and privacy policy and collect any consent you require. On completion, redirect back (HTTP 302) to the `redirect_uri` from the stored PAR, appending `code`, `state`, and `iss` on success, or `error`, `state`, and `iss` on failure. `iss` is your issuer URL (RFC 9207): Revolut rejects a response whose `iss` doesn't match the issuer it started the flow with. Bind the membership server-side to the authorisation code; never put personal data or `member_id` in the redirect URL. If the `request_uri` is unknown, expired, or already used, there is no stored request and no `state` to return: redirect to the redirect URI registered for `client_id` with `error=invalid_request_uri` and `iss`. If no valid redirect URI is known for the `client_id`, render an error page instead of redirecting. Reject authorisation requests that bypass `request_uri` (raw OAuth parameters) with `400`, and render an error page for the customer. As a browser-facing endpoint, this operation carries no credentials, correlation ID (`Request-Id`), or API-version header. 3d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$4c",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["Your authorisation endpoint: the ",["$","code","code-0",{"children":"authorization_endpoint"}]," in your discovery document. The\ncustomer's browser (a secure system browser, never an embedded web view) opens it with\nthe ",["$","code","code-1",{"children":"request_uri"}]," Revolut pushed at ","$L4d",". Look up the stored request, check\nthat ","$L4e"," matches the client the ","$L4f"," was issued to (RFC 9126), and route\nthe customer by the stored ","$L50"," value. Route only on ","$L51",", never on whether\n","$L52"," is empty:"]}],"\n","$L53","\n","$L54","\n","$L55","\n","$L56","\n","$L57","\n","$L58"]}]}] 3f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's OAuth 2.0 client ID, as registered during onboarding.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's OAuth 2.0 client ID, as registered during onboarding."}]]}]}] 40:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The single-use `request_uri` returned by `POST /oauth2/par`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The single-use ",["$","code","code-0",{"children":"request_uri"}]," returned by ",["$","code","code-1",{"children":"POST /oauth2/par"}],"."]}]]}]}] 4d:["$","code","code-2",{"children":"POST /oauth2/par"}] 4e:["$","code","code-3",{"children":"client_id"}] 4f:["$","code","code-4",{"children":"request_uri"}] 50:["$","code","code-5",{"children":"prompt"}] 51:["$","code","code-6",{"children":"prompt"}] 52:["$","code","code-7",{"children":"enrolment_claims"}] 53:["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","code","code-0",{"children":"prompt=login"}]," (link an existing account): route the customer straight to your sign-in\nscreen and force re-authentication, ignoring any existing session. After the customer\nsigns in, ask for consent to link their loyalty membership. If the customer has no\naccount with you, redirect back with ",["$","code","code-1",{"children":"error=access_denied"}],"."]}],"\n",["$","li","li-1",{"children":[["$","code","code-0",{"children":"prompt=create"}]," (enrol a new member): pre-fill your registration form with the pushed\nenrolment claims and let the customer register. If the pushed data matches an existing\nmembership, offer sign-in and link the account; never create a duplicate."]}],"\n"]}] 54:["$","p","p-1",{"children":"Show your Terms and Conditions and privacy policy and collect any consent you require."}] 55:["$","p","p-2",{"children":["On completion, redirect back (HTTP 302) to the ",["$","code","code-0",{"children":"redirect_uri"}]," from the stored PAR,\nappending ",["$","code","code-1",{"children":"code"}],", ",["$","code","code-2",{"children":"state"}],", and ",["$","code","code-3",{"children":"iss"}]," on success, or ",["$","code","code-4",{"children":"error"}],", ",["$","code","code-5",{"children":"state"}],", and ",["$","code","code-6",{"children":"iss"}]," on\nfailure. ",["$","code","code-7",{"children":"iss"}]," is your issuer URL (RFC 9207): Revolut rejects a response whose ",["$","code","code-8",{"children":"iss"}],"\ndoesn't match the issuer it started the flow with. Bind the membership server-side to\nthe authorisation code; never put personal data or ",["$","code","code-9",{"children":"member_id"}]," in the redirect URL."]}] 56:["$","p","p-3",{"children":["If the ",["$","code","code-0",{"children":"request_uri"}]," is unknown, expired, or already used, there is no stored request and\nno ",["$","code","code-1",{"children":"state"}]," to return: redirect to the redirect URI registered for ",["$","code","code-2",{"children":"client_id"}]," with\n",["$","code","code-3",{"children":"error=invalid_request_uri"}]," and ",["$","code","code-4",{"children":"iss"}],". If no valid redirect URI is known for the\n",["$","code","code-5",{"children":"client_id"}],", render an error page instead of redirecting."]}] 57:["$","p","p-4",{"children":["Reject authorisation requests that bypass ",["$","code","code-0",{"children":"request_uri"}]," (raw OAuth parameters) with ",["$","code","code-1",{"children":"400"}],",\nand render an error page for the customer."]}] 58:["$","p","p-5",{"children":["As a browser-facing endpoint, this operation carries no credentials, correlation ID\n(",["$","code","code-0",{"children":"Request-Id"}],"), or API-version header."]}] 61:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 67:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 1f:["$","$37","exchange-enrolment-token",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"200":{"description":"Tokens issued. Which fields appear depends on the grant.","headers":{"Cache-Control":{"description":"Always `no-store`, so no cache keeps the tokens (RFC 6749, section 5.1).","descriptionNode":"$L59","schema":{"type":"string","enum":["no-store"]}}},"content":{"application/json":{"schema":{"type":"object","description":"Response body for `POST /oauth2/token` (RFC 6749). `id_token` appears only with the\n`authorization_code` grant.\n","required":["access_token","token_type","expires_in"],"properties":{"access_token":{"type":"string","description":"The access token Revolut presents to your loyalty API.","examples":["2YotnFZFEjr1zCsicMWpAA"],"descriptionNode":"$L5a"},"token_type":{"type":"string","enum":["Bearer"],"description":"Token type. Always `Bearer`.","examples":["Bearer"],"descriptionNode":"$L5b"},"expires_in":{"type":"integer","minimum":1,"description":"Seconds before the access token expires. Keep tokens from the `authorization_code`\ngrant short-lived: Revolut uses them only once, for `GET /loyalty/profile`.\n","examples":[300],"descriptionNode":"$L5c"},"id_token":{"type":"string","description":"OpenID Connect ID token (JWT compact serialisation), issued with the\n`authorization_code` grant. Sign it with a key published at your `jwks_uri` and\ninclude the `iss`, `sub`, `aud`, `exp`, `iat`, `nonce`, and `member_id` claims (see\n`POST /oauth2/token`).\n","descriptionNode":"$L5d"},"scope":{"type":"string","description":"The scopes the access token carries.","examples":["openid loyalty.profile"],"descriptionNode":"$L5e"}},"descriptionNode":"$L5f"},"examples":{"authorization_code":{"summary":"Tokens for the authorisation-code grant","value":{"access_token":"2YotnFZFEjr1zCsicMWpAA","token_type":"Bearer","expires_in":300,"id_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6InBhcnRuZXItc2lnbmluZy0yMDI2LTA5IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgucGFydG5lci5leGFtcGxlIiwic3ViIjoiY3VzdF80ZjJhOWMxZSIsImF1ZCI6InJldm9sdXQtd2FsbGV0IiwiZXhwIjoxNzg5NjQ3MzAwLCJpYXQiOjE3ODk2NDY3MDAsIm5vbmNlIjoiYTdiOGM5ZDBlMWYyIiwibWVtYmVyX2lkIjoiOTk4ODc3NjY1NSJ9.lQp5M4HH0GLF09AYM3sPOgw9OFk7XzWGaDjrPXoVi1ZSPGPkjU_Xnag-82kvnyGhGOLKRRROZ1Dk1FJ3LxUi-XkFXOXfibT-xhOoiPICHH4aufCLZVVLcjZ3NB30eztY5VNvoAsz1qW7ec2gSkQDV76GKASxs3RggSNW4PHxl7Cqv4vJhUfyOkFo64HaXvWCQ5fTpuYTym8p9IXMEFTLmf8GH4zZ7xSnNLDIepZjJejS1JXa9M1ufC2Ld_WnDw2-Pq6T3su5iKPnsNlxXtwEjBJn_M2BMF0H-noK4b48Zv39cQd-BXhrc_crbkwFgzY0ekkJmUMvMTS2oOWDZB0_cA","scope":"openid loyalty.profile"}},"client_credentials":{"summary":"Token for the client-credentials grant","value":{"access_token":"8xLOxBtZp8dQ3vT6wR1yUe","token_type":"Bearer","expires_in":3600,"scope":"loyalty.enrol"}}}}},"descriptionNode":"$L60"},"400":{"description":"Malformed or invalid token request (RFC 6749, section 5.2). Authorisation codes are\nsingle-use: a used, expired, mismatched, or replayed code, or a `code_verifier` that\ndoesn't match the stored `code_challenge`, returns `invalid_grant`.\n","content":{"application/json":{"schema":{"type":"object","description":"$61","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":["invalid_grant"],"descriptionNode":"$L62"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$L63"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$L64"}},"descriptionNode":"$L65"},"examples":{"invalid_request":{"value":{"error":"invalid_request","error_description":"The request is missing a required parameter or is otherwise malformed."}},"invalid_grant":{"value":{"error":"invalid_grant","error_description":"The authorisation code is invalid, expired, or already used, or the code verifier doesn't match."}},"unsupported_grant_type":{"value":{"error":"unsupported_grant_type","error_description":"The grant type is not supported by this authorisation server."}}}}},"descriptionNode":"$L66"},"401":{"description":"Client authentication failed (`invalid_client`): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method.\n","content":{"application/json":{"schema":{"type":"object","description":"$67","required":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:properties:error:examples","descriptionNode":"$L68"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$L69"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$L6a"}},"descriptionNode":"$L6b"},"examples":{"invalid_client":{"value":{"error":"invalid_client","error_description":"Client authentication failed."}}}}},"descriptionNode":"$L6c"},"429":{"description":"Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n","headers":{"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L6d","schema":{"type":"integer","minimum":0}}},"descriptionNode":"$L6e"},"503":{"description":"Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n","headers":{"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L6f","schema":{"type":"integer","minimum":0}}},"descriptionNode":"$L70"}},"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Form body for `POST /oauth2/token` (`application/x-www-form-urlencoded`), per the\nOAuth 2.0 token endpoint (RFC 6749). Which fields apply depends on the grant and on the\nclient-authentication method registered during onboarding.\n","required":["grant_type","client_id"],"properties":{"grant_type":{"type":"string","enum":["authorization_code","client_credentials"],"description":"The OAuth 2.0 grant being exercised:\n\n| Value | Description |\n| ----- | ----------- |\n| `authorization_code` | Exchange the single-use code from the browser redirect, with the PKCE `code_verifier`. |\n| `client_credentials` | Obtain a server-to-server token for `POST /loyalty/auto-enrol` (scope `loyalty.enrol`) or `POST /loyalty/apply` (scope `loyalty.apply`). |\n","examples":["authorization_code"],"descriptionNode":"$L71"},"code":{"type":"string","description":"The authorisation code from the browser redirect. Single-use and valid for 5 minutes;\nrequired with the `authorization_code` grant.\n","examples":["SplxlOBeZQQYbYSaW6S5bA"],"descriptionNode":"$L72"},"redirect_uri":{"type":"string","format":"uri","description":"Must match the `redirect_uri` from the PAR. Required with the `authorization_code` grant.","examples":["https://wallet.revolut.com/loyalty/oauth2/callback"],"descriptionNode":"$L73"},"code_verifier":{"type":"string","pattern":"^[A-Za-z0-9._~-]{43,128}$","description":"PKCE code verifier (RFC 7636): the secret whose SHA-256 hash Revolut sent as\n`code_challenge` on the PAR. Required with the `authorization_code` grant; reject a\nmismatch with `invalid_grant`.\n","examples":["s6GMlOmVYBylONZVcuAyzNpBjdDeZEYanMCV9NVy4wM-kQ9"],"descriptionNode":"$L74"},"scope":{"type":"string","description":"The scopes Revolut requests with the `client_credentials` grant: `loyalty.enrol`,\n`loyalty.apply`, or both. Not sent with the `authorization_code` grant.\n","examples":["loyalty.enrol"],"descriptionNode":"$L75"},"client_id":{"type":"string","description":"Revolut's OAuth 2.0 client ID, as registered during onboarding. Revolut always\nsends `client_id` in the request body, including when the registered\nclient-authentication method is mTLS.\n","examples":["revolut-wallet"],"descriptionNode":"$L76"},"client_secret":{"type":"string","description":"Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS.\n","descriptionNode":"$L77"},"client_assertion_type":{"type":"string","description":"Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521).\n","examples":["urn:ietf:params:oauth:client-assertion-type:jwt-bearer"],"descriptionNode":"$L78"},"client_assertion":{"type":"string","description":"The signed JWT assertion authenticating Revolut's client, used with\n`client_assertion_type` for private key JWT authentication.\n","descriptionNode":"$L79"}},"descriptionNode":"$L7a"},"examples":{"authorization_code_grant":{"summary":"Exchange the code from the browser redirect","value":{"grant_type":"authorization_code","code":"SplxlOBeZQQYbYSaW6S5bA","redirect_uri":"https://wallet.revolut.com/loyalty/oauth2/callback","code_verifier":"s6GMlOmVYBylONZVcuAyzNpBjdDeZEYanMCV9NVy4wM-kQ9","client_id":"revolut-wallet","client_secret":"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c"}},"client_credentials_grant":{"summary":"Get a server-to-server token for automatic enrolment","value":{"grant_type":"client_credentials","scope":"loyalty.enrol","client_id":"revolut-wallet","client_secret":"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c"}}}}}},"variantLabels":["Tokens for the authorisation-code grant","Token for the client-credentials grant"],"children":["$L7b","$L7c"]}]}],false]}] 7b:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"exchange-enrolment-token","children":[["$L7d","$undefined"],["$","$L18",null,{"id":"exchange-enrolment-token"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/exchange-enrolment-token.md"}]]}]}],"$undefined"]}] 81:T9d4,
fetch("https://passes.partner.example/revolut-wallet/oauth2/token", {
  method: "POST",
  headers: {
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Request-Id": "__RP_TOK_1__"
  }
})
  .then(response => response.json())
  .then(data => console.log(data));
82:Tf71,
package main

import (
  "fmt"
  "net/http"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/oauth2/token"
  req, _ := http.NewRequest("POST", url, nil)
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Request-Id", "__RP_TOK_1__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
83:T7e6,
import requests

url = "https://passes.partner.example/revolut-wallet/oauth2/token"
headers = {
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Request-Id": "__RP_TOK_1__"
}

response = requests.post(url, headers=headers)
print(response.json())
84:T1712,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/oauth2/token"))
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Request-Id", "__RP_TOK_1__")
      .POST(HttpRequest.BodyPublishers.noBody())
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
85:T15bc,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Post,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/oauth2/token"),
  Headers =
  {
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Request-Id", "__RP_TOK_1__" },
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
7c:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L7e",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":false,"description":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n","schema":{"type":"string"},"example":"2026-09-17","descriptionNode":"$L7f"},{"description":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.","name":"Request-Id","in":"header","required":false,"schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$L80"}],"requestBody":"$1f:props:children:0:props:children:props:requestBody","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$1f:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X POST \"https://passes.partner.example/revolut-wallet/oauth2/token\" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Request-Id: __RP_TOK_1__\"","templateHtml":"
curl -X POST \"https://passes.partner.example/revolut-wallet/oauth2/token\" \\\n  -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n  -H \"Request-Id: __RP_TOK_1__\"
","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"fetch(\"https://passes.partner.example/revolut-wallet/oauth2/token\", {\n method: \"POST\",\n headers: {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n }\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$81","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/oauth2/token\"\n req, _ := http.NewRequest(\"POST\", url, nil)\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_1__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$82","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/oauth2/token\"\nheaders = {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n}\n\nresponse = requests.post(url, headers=headers)\nprint(response.json())","templateHtml":"$83","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\npublic class Main {\n public static void main(String[] args) {\n HttpClient client = HttpClient.newHttpClient();\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://passes.partner.example/revolut-wallet/oauth2/token\"))\n .header(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n .header(\"Request-Id\", \"__RP_TOK_1__\")\n .POST(HttpRequest.BodyPublishers.noBody())\n .build();\n\n client.sendAsync(request, HttpResponse.BodyHandlers.ofString())\n .thenApply(HttpResponse::body)\n .thenAccept(System.out::println)\n .join();\n }\n}","templateHtml":"$84","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"using System.Net.Http;\nusing System.Net.Http.Headers;\n\nvar client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Post,\n RequestUri = new Uri(\"https://passes.partner.example/revolut-wallet/oauth2/token\"),\n Headers =\n {\n { \"Revolut-Api-Version\", \"__RP_TOK_0__\" },\n { \"Request-Id\", \"__RP_TOK_1__\" },\n }\n};\n\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}","templateHtml":"$85","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"post","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/oauth2/token","parameters":["$7c:props:children:0:props:children:1:props:parameters:0","$7c:props:children:0:props:children:1:props:parameters:1"]}],"$L86"],"$L87","$L88"]}]]}] 89:I["9e60c70d72c7",[],"Authorization",1] 8b:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 86:["$","$L89",null,{"security":[{},{"mtls":[]}],"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$L8a"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$8b","descriptionNode":"$L8c"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":"$4:6:props:children:props:children:2:props:children:2:props:children:0:props:children:2:props:authorization:oauth2:flows","descriptionNode":"$L8d"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$L8e"}}}] 87:["$","$L4a",null,{"exampleBlocks":{"application/x-www-form-urlencoded":{"variants":[{"key":"authorization_code_grant","label":"Exchange the code from the browser redirect","rawValue":"$1f:props:children:0:props:children:props:requestBody:content:application/x-www-form-urlencoded:examples:authorization_code_grant:value","block":"$L8f"},{"key":"client_credentials_grant","label":"Get a server-to-server token for automatic enrolment","rawValue":"$1f:props:children:0:props:children:props:requestBody:content:application/x-www-form-urlencoded:examples:client_credentials_grant:value","block":"$L90"}],"syncedPropertyName":"$undefined"}},"title":"Request body samples","headingAs":"h4"}] 88:["$","$L4b",null,{"exampleBlocks":{"200":{"application/json":{"variants":[{"key":"authorization_code","label":"Tokens for the authorisation-code grant","rawValue":"$1f:props:children:0:props:children:props:responses:200:content:application/json:examples:authorization_code:value","block":"$L91"},{"key":"client_credentials","label":"Token for the client-credentials grant","rawValue":"$1f:props:children:0:props:children:props:responses:200:content:application/json:examples:client_credentials:value","block":"$L92"}],"syncedPropertyName":"$undefined"}},"400":{"application/json":{"variants":[{"key":"invalid_request","label":"invalid_request","rawValue":"$1f:props:children:0:props:children:props:responses:400:content:application/json:examples:invalid_request:value","block":"$L93"},{"key":"invalid_grant","label":"invalid_grant","rawValue":"$1f:props:children:0:props:children:props:responses:400:content:application/json:examples:invalid_grant:value","block":"$L94"},{"key":"unsupported_grant_type","label":"unsupported_grant_type","rawValue":"$1f:props:children:0:props:children:props:responses:400:content:application/json:examples:unsupported_grant_type:value","block":"$L95"}],"syncedPropertyName":"$undefined"}},"401":{"application/json":{"variants":[{"key":"invalid_client","label":"invalid_client","rawValue":"$1f:props:children:0:props:children:props:responses:401:content:application/json:examples:invalid_client:value","block":"$L96"}],"syncedPropertyName":"$undefined"}},"429":{},"503":{}},"headingAs":"h4"}] 9b:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | a1:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 1d:["$","$37","create-par-request",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"201":{"description":"Authorisation request stored. Return the single-use `request_uri` and how long it\nstays valid.\n","content":{"application/json":{"schema":{"type":"object","description":"Response body for `POST /oauth2/par`: the single-use `request_uri` and how long it\nstays valid.\n","required":["request_uri","expires_in"],"properties":{"request_uri":{"type":"string","description":"Single-use reference to the stored authorisation request. Consumable exactly once\nat your authorisation endpoint.\n","examples":["urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c"],"descriptionNode":"$L97"},"expires_in":{"type":"integer","minimum":60,"maximum":90,"description":"Seconds before the `request_uri` expires.","examples":[90],"descriptionNode":"$L98"}},"descriptionNode":"$L99"},"examples":{"created":{"value":{"request_uri":"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c","expires_in":90}}}}},"descriptionNode":"$L9a"},"400":{"description":"Malformed or invalid pushed request, for example a missing `code_challenge`. The\nbody uses the standard OAuth 2.0 error format (RFC 6749, section 5.2, as applied by\nRFC 9126).\n","content":{"application/json":{"schema":{"type":"object","description":"$9b","required":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:properties:error:examples","descriptionNode":"$L9c"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$L9d"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$L9e"}},"descriptionNode":"$L9f"},"examples":{"invalid_request":{"value":{"error":"invalid_request","error_description":"The request is missing a required parameter or is otherwise malformed."}}}}},"descriptionNode":"$La0"},"401":{"description":"Client authentication failed (`invalid_client`): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method.\n","content":{"application/json":{"schema":{"type":"object","description":"$a1","required":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:properties:error:examples","descriptionNode":"$La2"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$La3"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$La4"}},"descriptionNode":"$La5"},"examples":{"invalid_client":{"value":{"error":"invalid_client","error_description":"Client authentication failed."}}}}},"descriptionNode":"$La6"},"429":{"description":"Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n","headers":{"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$La7","schema":{"type":"integer","minimum":0}}},"descriptionNode":"$La8"},"503":{"description":"Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n","headers":{"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$La9","schema":{"type":"integer","minimum":0}}},"descriptionNode":"$Laa"}},"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Form body for `POST /oauth2/par` (`application/x-www-form-urlencoded`), per the Pushed\nAuthorization Request (PAR) flow (RFC 9126). Carries the OAuth 2.0 authorisation request\nparameters, Proof Key for Code Exchange (PKCE, RFC 7636), and the enrolment claims:\nenrolment requests carry the customer's claims, and link requests carry none (see\n`enrolment_claims`).\n","required":["client_id","redirect_uri","response_type","scope","state","nonce","prompt","code_challenge","code_challenge_method","enrolment_claims"],"properties":{"client_id":{"type":"string","description":"Revolut's OAuth 2.0 client ID, as registered during onboarding.","examples":["revolut-wallet"],"descriptionNode":"$Lab"},"client_secret":{"type":"string","description":"Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS.\n","examples":["9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c"],"descriptionNode":"$Lac"},"client_assertion_type":{"type":"string","description":"Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521).\n","examples":["urn:ietf:params:oauth:client-assertion-type:jwt-bearer"],"descriptionNode":"$Lad"},"client_assertion":{"type":"string","description":"The signed JWT assertion authenticating Revolut's client, used with\n`client_assertion_type` for private key JWT authentication.\n","descriptionNode":"$Lae"},"redirect_uri":{"type":"string","format":"uri","description":"The registered Revolut redirect URI the customer's browser returns to.","examples":["https://wallet.revolut.com/loyalty/oauth2/callback"],"descriptionNode":"$Laf"},"response_type":{"type":"string","enum":["code"],"description":"OAuth 2.0 response type. This flow always uses the authorisation-code grant.","examples":["code"],"descriptionNode":"$Lb0"},"scope":{"type":"string","description":"The scopes Revolut requests: always `openid loyalty.profile`. `openid` makes your\ntoken endpoint issue an ID token (OpenID Connect).\n","examples":["openid loyalty.profile"],"descriptionNode":"$Lb1"},"state":{"type":"string","description":"Opaque value Revolut sends and expects back, unchanged, on the redirect. Single-use\nand short-lived.\n","examples":["KhB6vF3nY2zQ9wX1"],"descriptionNode":"$Lb2"},"nonce":{"type":"string","description":"OpenID Connect nonce. Echo it in the `nonce` claim of the ID token issued at\nyour token endpoint.\n","examples":["a7b8c9d0e1f2"],"descriptionNode":"$Lb3"},"prompt":{"type":"string","enum":["login","create"],"description":"How to route the customer at your authorisation endpoint:\n\n| Value | Description |\n| ----- | ----------- |\n| `login` | Forced re-authentication: route the customer straight to your sign-in screen, ignoring any existing session. Revolut sends it when the customer links an existing account, and after `POST /loyalty/auto-enrol` returns `account_exists`. |\n| `create` | Route the customer straight to your registration screen. Revolut sends it after `POST /loyalty/auto-enrol` returns a `403` UI-required code other than `account_exists`, or directly when you don't implement auto-enrol. |\n","examples":["create"],"descriptionNode":"$Lb4"},"code_challenge":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","description":"PKCE code challenge: the base64url-encoded SHA-256 hash of the `code_verifier` Revolut\nlater sends to your token endpoint (RFC 7636). Store it with the request.\n","examples":["6jX6L4rvyuv0fbu5qAL_4fN1-0t9-YwmTvYH0fjX-w4"],"descriptionNode":"$Lb5"},"code_challenge_method":{"type":"string","enum":["S256"],"description":"PKCE challenge method. Always `S256`.","examples":["S256"],"descriptionNode":"$Lb6"},"program_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet: the program to enrol them in, or the program whose membership they want to\nlink. Revolut sends it only if you operate several loyalty programs; the valid values\nare agreed during onboarding.\n","examples":["program_gb_rewards"],"descriptionNode":"$Lb7"},"enrolment_claims":{"type":"string","contentMediaType":"application/json","contentSchema":{"type":"object","description":"The details the customer agreed to share for enrolment. `given_name`, `family_name`,\n`email`, and `phone_number` come from the customer's Revolut profile and are verified by\nRevolut's know your customer (KYC) checks. `custom_fields` are entered by the customer\nand are not verified. Which claims are required and which are optional is defined per\npartner during onboarding; Revolut sends only the claims agreed in your configuration.\nIgnore any claim keys you do not recognise. On `POST /loyalty/auto-enrol`, at least one\nclaim is always sent.\n","properties":{"given_name":{"type":"string","description":"The customer's given name, verified by Revolut.","examples":["Alan"]},"family_name":{"type":"string","description":"The customer's family name, verified by Revolut.","examples":["Maxwell"]},"email":{"type":"string","format":"email","description":"The customer's email address, verified by Revolut.","examples":["alan.maxwell@example.com"]},"phone_number":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The customer's phone number in E.164 format, verified by Revolut.","examples":["+447700900123"]},"custom_fields":{"type":"object","minProperties":1,"additionalProperties":{"type":"string"},"description":"Partner-configured enrolment fields the customer entered, keyed by the field\nidentifier agreed during onboarding (for example, vehicle type or licence plate).\nRevolut does not verify them.\n"}},"examples":[{"given_name":"Alan","family_name":"Maxwell","email":"alan.maxwell@example.com","phone_number":"+447700900123","custom_fields":{"vehicle_type":"car","licence_plate":"BX21 ABC"}}]},"description":"JSON-serialised enrolment claims: a flat `EnrolmentClaims` object with the details\nthe customer agreed to share. An empty JSON object (`{}`) means no personal data is\nshared: Revolut sends it in the link flow (`prompt=login`), where the customer\nidentifies themselves by signing in to you.\n","descriptionNode":"$Lb8"}},"descriptionNode":"$Lb9"},"examples":{"pushed_request":{"summary":"Enrol a new member: registration screen, enrolment claims shared","value":{"client_id":"revolut-wallet","client_secret":"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c","redirect_uri":"https://wallet.revolut.com/loyalty/oauth2/callback","response_type":"code","scope":"openid loyalty.profile","state":"KhB6vF3nY2zQ9wX1","nonce":"a7b8c9d0e1f2","prompt":"create","code_challenge":"6jX6L4rvyuv0fbu5qAL_4fN1-0t9-YwmTvYH0fjX-w4","code_challenge_method":"S256","program_id":"program_gb_rewards","enrolment_claims":"{\"given_name\":\"Alan\",\"family_name\":\"Maxwell\",\"email\":\"alan.maxwell@example.com\",\"phone_number\":\"+447700900123\",\"custom_fields\":{\"vehicle_type\":\"car\",\"licence_plate\":\"BX21 ABC\"}}"}},"pushed_link_request":{"summary":"Link an existing account: forced sign-in, no personal data shared","value":{"client_id":"revolut-wallet","client_secret":"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c","redirect_uri":"https://wallet.revolut.com/loyalty/oauth2/callback","response_type":"code","scope":"openid loyalty.profile","state":"m9N8b7V6c5X4z3A2","nonce":"f1e2d3c4b5a6","prompt":"login","code_challenge":"j6satHH_I3aunLko5TQonFZHTzFIcUEhBJ6LhoVG-Ns","code_challenge_method":"S256","program_id":"program_gb_rewards","enrolment_claims":"{}"}}}}}},"variantLabels":["Enrol a new member: registration screen, enrolment claims shared","Link an existing account: forced sign-in, no personal data shared"],"children":["$Lba","$Lbb"]}]}],false]}] ba:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"create-par-request","children":[["$Lbc","$undefined"],["$","$L18",null,{"id":"create-par-request"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/create-par-request.md"}]]}]}],"$undefined"]}] c0:T9d2,
fetch("https://passes.partner.example/revolut-wallet/oauth2/par", {
  method: "POST",
  headers: {
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Request-Id": "__RP_TOK_1__"
  }
})
  .then(response => response.json())
  .then(data => console.log(data));
c1:Tf6f,
package main

import (
  "fmt"
  "net/http"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/oauth2/par"
  req, _ := http.NewRequest("POST", url, nil)
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Request-Id", "__RP_TOK_1__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
c2:T7e4,
import requests

url = "https://passes.partner.example/revolut-wallet/oauth2/par"
headers = {
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Request-Id": "__RP_TOK_1__"
}

response = requests.post(url, headers=headers)
print(response.json())
c3:T1710,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/oauth2/par"))
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Request-Id", "__RP_TOK_1__")
      .POST(HttpRequest.BodyPublishers.noBody())
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
c4:T15ba,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Post,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/oauth2/par"),
  Headers =
  {
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Request-Id", "__RP_TOK_1__" },
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
bb:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$Lbd",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":false,"description":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n","schema":{"type":"string"},"example":"2026-09-17","descriptionNode":"$Lbe"},{"description":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.","name":"Request-Id","in":"header","required":false,"schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$Lbf"}],"requestBody":"$1d:props:children:0:props:children:props:requestBody","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$1d:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X POST \"https://passes.partner.example/revolut-wallet/oauth2/par\" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Request-Id: __RP_TOK_1__\"","templateHtml":"
curl -X POST \"https://passes.partner.example/revolut-wallet/oauth2/par\" \\\n  -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n  -H \"Request-Id: __RP_TOK_1__\"
","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"fetch(\"https://passes.partner.example/revolut-wallet/oauth2/par\", {\n method: \"POST\",\n headers: {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n }\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$c0","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/oauth2/par\"\n req, _ := http.NewRequest(\"POST\", url, nil)\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_1__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$c1","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/oauth2/par\"\nheaders = {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n}\n\nresponse = requests.post(url, headers=headers)\nprint(response.json())","templateHtml":"$c2","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\npublic class Main {\n public static void main(String[] args) {\n HttpClient client = HttpClient.newHttpClient();\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://passes.partner.example/revolut-wallet/oauth2/par\"))\n .header(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n .header(\"Request-Id\", \"__RP_TOK_1__\")\n .POST(HttpRequest.BodyPublishers.noBody())\n .build();\n\n client.sendAsync(request, HttpResponse.BodyHandlers.ofString())\n .thenApply(HttpResponse::body)\n .thenAccept(System.out::println)\n .join();\n }\n}","templateHtml":"$c3","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"using System.Net.Http;\nusing System.Net.Http.Headers;\n\nvar client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Post,\n RequestUri = new Uri(\"https://passes.partner.example/revolut-wallet/oauth2/par\"),\n Headers =\n {\n { \"Revolut-Api-Version\", \"__RP_TOK_0__\" },\n { \"Request-Id\", \"__RP_TOK_1__\" },\n }\n};\n\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}","templateHtml":"$c4","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"post","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/oauth2/par","parameters":["$bb:props:children:0:props:children:1:props:parameters:0","$bb:props:children:0:props:children:1:props:parameters:1"]}],"$Lc5"],"$Lc6","$Lc7"]}]]}] 7d:"Issue tokens" c9:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. c5:["$","$L89",null,{"security":[{},{"mtls":[]}],"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$Lc8"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$c9","descriptionNode":"$Lca"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":"$4:6:props:children:props:children:2:props:children:2:props:children:0:props:children:2:props:authorization:oauth2:flows","descriptionNode":"$Lcb"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$Lcc"}}}] c6:["$","$L4a",null,{"exampleBlocks":{"application/x-www-form-urlencoded":{"variants":[{"key":"pushed_request","label":"Enrol a new member: registration screen, enrolment claims shared","rawValue":"$1d:props:children:0:props:children:props:requestBody:content:application/x-www-form-urlencoded:examples:pushed_request:value","block":"$Lcd"},{"key":"pushed_link_request","label":"Link an existing account: forced sign-in, no personal data shared","rawValue":"$1d:props:children:0:props:children:props:requestBody:content:application/x-www-form-urlencoded:examples:pushed_link_request:value","block":"$Lce"}],"syncedPropertyName":"$undefined"}},"title":"Request body samples","headingAs":"h4"}] c7:["$","$L4b",null,{"exampleBlocks":{"201":{"application/json":{"variants":[{"key":"created","label":"created","rawValue":"$1d:props:children:0:props:children:props:responses:201:content:application/json:examples:created:value","block":"$Lcf"}],"syncedPropertyName":"$undefined"}},"400":{"application/json":{"variants":[{"key":"invalid_request","label":"invalid_request","rawValue":"$1d:props:children:0:props:children:props:responses:400:content:application/json:examples:invalid_request:value","block":"$Ld0"}],"syncedPropertyName":"$undefined"}},"401":{"application/json":{"variants":[{"key":"invalid_client","label":"invalid_client","rawValue":"$1d:props:children:0:props:children:props:responses:401:content:application/json:examples:invalid_client:value","block":"$Ld1"}],"syncedPropertyName":"$undefined"}},"429":{},"503":{}},"headingAs":"h4"}] 59:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Always `no-store`, so no cache keeps the tokens (RFC 6749, section 5.1).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Always ",["$","code","code-0",{"children":"no-store"}],", so no cache keeps the tokens (RFC 6749, section 5.1)."]}]]}]}] 5a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The access token Revolut presents to your loyalty API.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The access token Revolut presents to your loyalty API."}]]}]}] 5b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Token type. Always `Bearer`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Token type. Always ",["$","code","code-0",{"children":"Bearer"}],"."]}]]}]}] 5c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seconds before the access token expires. Keep tokens from the `authorization_code`\ngrant short-lived: Revolut uses them only once, for `GET /loyalty/profile`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Seconds before the access token expires. Keep tokens from the ",["$","code","code-0",{"children":"authorization_code"}],"\ngrant short-lived: Revolut uses them only once, for ",["$","code","code-1",{"children":"GET /loyalty/profile"}],"."]}]]}]}] 5d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OpenID Connect ID token (JWT compact serialisation), issued with the\n`authorization_code` grant. Sign it with a key published at your `jwks_uri` and\ninclude the `iss`, `sub`, `aud`, `exp`, `iat`, `nonce`, and `member_id` claims (see\n`POST /oauth2/token`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OpenID Connect ID token (JWT compact serialisation), issued with the\n",["$","code","code-0",{"children":"authorization_code"}]," grant. Sign it with a key published at your ",["$","code","code-1",{"children":"jwks_uri"}]," and\ninclude the ",["$","code","code-2",{"children":"iss"}],", ",["$","code","code-3",{"children":"sub"}],", ",["$","code","code-4",{"children":"aud"}],", ",["$","code","code-5",{"children":"exp"}],", ",["$","code","code-6",{"children":"iat"}],", ",["$","code","code-7",{"children":"nonce"}],", and ",["$","code","code-8",{"children":"member_id"}]," claims (see\n",["$","code","code-9",{"children":"POST /oauth2/token"}],")."]}]]}]}] 5e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The scopes the access token carries.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The scopes the access token carries."}]]}]}] 5f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Response body for `POST /oauth2/token` (RFC 6749). `id_token` appears only with the\n`authorization_code` grant.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Response body for ",["$","code","code-0",{"children":"POST /oauth2/token"}]," (RFC 6749). ",["$","code","code-1",{"children":"id_token"}]," appears only with the\n",["$","code","code-2",{"children":"authorization_code"}]," grant."]}]]}]}] 60:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Tokens issued. Which fields appear depends on the grant.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Tokens issued. Which fields appear depends on the grant."}]]}]}] 62:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] 63:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] 64:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] d2:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 65:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$d2",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$Ld3"," does not match the ","$Ld4","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$Ld5","$Ld6","$Ld7","$Ld8","$Ld9"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 66:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Malformed or invalid token request (RFC 6749, section 5.2). Authorisation codes are\nsingle-use: a used, expired, mismatched, or replayed code, or a `code_verifier` that\ndoesn't match the stored `code_challenge`, returns `invalid_grant`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Malformed or invalid token request (RFC 6749, section 5.2). Authorisation codes are\nsingle-use: a used, expired, mismatched, or replayed code, or a ",["$","code","code-0",{"children":"code_verifier"}]," that\ndoesn't match the stored ",["$","code","code-1",{"children":"code_challenge"}],", returns ",["$","code","code-2",{"children":"invalid_grant"}],"."]}]]}]}] 68:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] 69:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] 6a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] da:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 6b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$da",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$Ldb"," does not match the ","$Ldc","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$Ldd","$Lde","$Ldf","$Le0","$Le1"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 6c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Client authentication failed (`invalid_client`): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Client authentication failed (",["$","code","code-0",{"children":"invalid_client"}],"): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method."]}]]}]}] 6d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 6e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded (",["$","code","code-0",{"children":"429"}],") or temporary capacity issue (",["$","code","code-1",{"children":"503"}],") on your authorisation\nserver. Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],". The body format is not specified."]}]]}]}] 6f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 70:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded (",["$","code","code-0",{"children":"429"}],") or temporary capacity issue (",["$","code","code-1",{"children":"503"}],") on your authorisation\nserver. Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],". The body format is not specified."]}]]}]}] 71:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The OAuth 2.0 grant being exercised:\n\n| Value | Description |\n| ----- | ----------- |\n| `authorization_code` | Exchange the single-use code from the browser redirect, with the PKCE `code_verifier`. |\n| `client_credentials` | Obtain a server-to-server token for `POST /loyalty/auto-enrol` (scope `loyalty.enrol`) or `POST /loyalty/apply` (scope `loyalty.apply`). |\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The OAuth 2.0 grant being exercised:"}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"authorization_code"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Exchange the single-use code from the browser redirect, with the PKCE ",["$","code","code-0",{"children":"code_verifier"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"client_credentials"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Obtain a server-to-server token for ",["$","code","code-0",{"children":"POST /loyalty/auto-enrol"}]," (scope ",["$","code","code-1",{"children":"loyalty.enrol"}],") or ",["$","code","code-2",{"children":"POST /loyalty/apply"}]," (scope ",["$","code","code-3",{"children":"loyalty.apply"}],")."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 72:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The authorisation code from the browser redirect. Single-use and valid for 5 minutes;\nrequired with the `authorization_code` grant.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The authorisation code from the browser redirect. Single-use and valid for 5 minutes;\nrequired with the ",["$","code","code-0",{"children":"authorization_code"}]," grant."]}]]}]}] 73:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must match the `redirect_uri` from the PAR. Required with the `authorization_code` grant.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must match the ",["$","code","code-0",{"children":"redirect_uri"}]," from the PAR. Required with the ",["$","code","code-1",{"children":"authorization_code"}]," grant."]}]]}]}] 74:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","PKCE code verifier (RFC 7636): the secret whose SHA-256 hash Revolut sent as\n`code_challenge` on the PAR. Required with the `authorization_code` grant; reject a\nmismatch with `invalid_grant`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["PKCE code verifier (RFC 7636): the secret whose SHA-256 hash Revolut sent as\n",["$","code","code-0",{"children":"code_challenge"}]," on the PAR. Required with the ",["$","code","code-1",{"children":"authorization_code"}]," grant; reject a\nmismatch with ",["$","code","code-2",{"children":"invalid_grant"}],"."]}]]}]}] 75:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The scopes Revolut requests with the `client_credentials` grant: `loyalty.enrol`,\n`loyalty.apply`, or both. Not sent with the `authorization_code` grant.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The scopes Revolut requests with the ",["$","code","code-0",{"children":"client_credentials"}]," grant: ",["$","code","code-1",{"children":"loyalty.enrol"}],",\n",["$","code","code-2",{"children":"loyalty.apply"}],", or both. Not sent with the ",["$","code","code-3",{"children":"authorization_code"}]," grant."]}]]}]}] 76:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's OAuth 2.0 client ID, as registered during onboarding. Revolut always\nsends `client_id` in the request body, including when the registered\nclient-authentication method is mTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Revolut's OAuth 2.0 client ID, as registered during onboarding. Revolut always\nsends ",["$","code","code-0",{"children":"client_id"}]," in the request body, including when the registered\nclient-authentication method is mTLS."]}]]}]}] 77:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS."}]]}]}] 78:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521)."}]]}]}] 79:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The signed JWT assertion authenticating Revolut's client, used with\n`client_assertion_type` for private key JWT authentication.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The signed JWT assertion authenticating Revolut's client, used with\n",["$","code","code-0",{"children":"client_assertion_type"}]," for private key JWT authentication."]}]]}]}] 7a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Form body for `POST /oauth2/token` (`application/x-www-form-urlencoded`), per the\nOAuth 2.0 token endpoint (RFC 6749). Which fields apply depends on the grant and on the\nclient-authentication method registered during onboarding.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Form body for ",["$","code","code-0",{"children":"POST /oauth2/token"}]," (",["$","code","code-1",{"children":"application/x-www-form-urlencoded"}],"), per the\nOAuth 2.0 token endpoint (RFC 6749). Which fields apply depends on the grant and on the\nclient-authentication method registered during onboarding."]}]]}]}] e2:T809,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: OAuth 2.0 token endpoint (RFC 6749): the `token_endpoint` in your discovery document. Revolut's backend calls it server-to-server for the following grants: - `authorization_code`: exchange the code from the browser redirect, together with the Proof Key for Code Exchange (PKCE) `code_verifier` (RFC 7636). Check that the verifier matches the `code_challenge` stored with the Pushed Authorization Request (PAR), and include an `id_token` (OpenID Connect). - `client_credentials`: server-to-server access tokens Revolut uses for `POST /loyalty/auto-enrol` (scope `loyalty.enrol`) and, if you accept OAuth 2.0 there, `POST /loyalty/apply` (scope `loyalty.apply`). **ID token.** A JSON Web Token (JWT) signed with a key published at your `jwks_uri`, using the algorithm agreed during onboarding (`RS256` or `ES256`). Include the following claims: `iss` (your issuer URL), `sub` (your stable identifier for the customer), `aud` (Revolut's `client_id`), `exp`, `iat`, `nonce` (matching the PAR), and `member_id` (the membership the customer enrolled in or linked). Revolut validates the signature, `iss`, `aud`, `exp`, and `nonce`, and ends the flow if any check fails. Authenticate Revolut on every grant (client secret, private key JWT, or mutual TLS (mTLS), as registered during onboarding) and reject any unauthenticated request with `401` (`invalid_client`). Unless mTLS is the registered method, Revolut sends a client secret or JWT assertion in the request body; that's why `security` lists mTLS as optional. Authorisation codes are single-use and valid for 5 minutes. Reject a replayed code, or a `code_verifier` that doesn't match, with `400` (`invalid_grant`). Don't consume the code when you return `429` or `503`: Revolut retries the exchange with the same code. Return every token response with `Cache-Control: no-store` (RFC 6749, section 5.1). 7e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$e2",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["OAuth 2.0 token endpoint (RFC 6749): the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document.\nRevolut's backend calls it server-to-server for the following grants:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","code","code-0",{"children":"authorization_code"}],": exchange the code from the browser redirect, together with the\nProof Key for Code Exchange (PKCE) ",["$","code","code-1",{"children":"code_verifier"}]," (RFC 7636). Check that the verifier\nmatches the ",["$","code","code-2",{"children":"code_challenge"}]," stored with the Pushed Authorization Request (PAR), and\ninclude an ","$Le3"," (OpenID Connect)."]}],"\n","$Le4","\n"]}],"\n","$Le5","\n","$Le6","\n","$Le7"]}]}] 7f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header."}]]}]}] 80:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints."}]]}]}] bc:"Push an authorisation request" d3:["$","code","code-0",{"children":"code_verifier"}] d4:["$","code","code-1",{"children":"code_challenge"}] d5:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] d6:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] d7:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] d8:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] d9:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] db:["$","code","code-0",{"children":"code_verifier"}] dc:["$","code","code-1",{"children":"code_challenge"}] dd:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] de:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] df:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] e0:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] e1:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] e3:["$","code","code-3",{"children":"id_token"}] e4:["$","li","li-1",{"children":[["$","code","code-0",{"children":"client_credentials"}],": server-to-server access tokens Revolut uses for\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}]," (scope ",["$","code","code-2",{"children":"loyalty.enrol"}],") and, if you accept OAuth 2.0 there,\n",["$","code","code-3",{"children":"POST /loyalty/apply"}]," (scope ",["$","code","code-4",{"children":"loyalty.apply"}],")."]}] e5:["$","p","p-1",{"children":[["$","strong","strong-0",{"children":"ID token."}]," A JSON Web Token (JWT) signed with a key published at your ",["$","code","code-0",{"children":"jwks_uri"}],", using\nthe algorithm agreed during onboarding (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"). Include the following\nclaims: ",["$","code","code-3",{"children":"iss"}]," (your issuer URL), ",["$","code","code-4",{"children":"sub"}]," (your stable identifier for the customer), ",["$","code","code-5",{"children":"aud"}],"\n(Revolut's ",["$","code","code-6",{"children":"client_id"}],"), ",["$","code","code-7",{"children":"exp"}],", ",["$","code","code-8",{"children":"iat"}],", ",["$","code","code-9",{"children":"nonce"}]," (matching the PAR), and ",["$","code","code-10",{"children":"member_id"}]," (the\nmembership the customer enrolled in or linked). Revolut validates the signature, ",["$","code","code-11",{"children":"iss"}],",\n",["$","code","code-12",{"children":"aud"}],", ",["$","code","code-13",{"children":"exp"}],", and ",["$","code","code-14",{"children":"nonce"}],", and ends the flow if any check fails."]}] e6:["$","p","p-2",{"children":["Authenticate Revolut on every grant (client secret, private key JWT, or mutual TLS\n(mTLS), as registered during onboarding) and reject any unauthenticated request with\n",["$","code","code-0",{"children":"401"}]," (",["$","code","code-1",{"children":"invalid_client"}],"). Unless mTLS is the registered method, Revolut sends a client\nsecret or JWT assertion in the request body; that's why ",["$","code","code-2",{"children":"security"}]," lists mTLS as\noptional."]}] e7:["$","p","p-3",{"children":["Authorisation codes are single-use and valid for 5 minutes. Reject a replayed code, or a\n",["$","code","code-0",{"children":"code_verifier"}]," that doesn't match, with ",["$","code","code-1",{"children":"400"}]," (",["$","code","code-2",{"children":"invalid_grant"}],"). Don't consume the code\nwhen you return ",["$","code","code-3",{"children":"429"}]," or ",["$","code","code-4",{"children":"503"}],": Revolut retries the exchange with the same code. Return\nevery token response with ",["$","code","code-5",{"children":"Cache-Control: no-store"}]," (RFC 6749, section 5.1)."]}] 8a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] e8:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 8c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$e8",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$Le9",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$Lea","."]}],"\n","$Leb","\n"]}],"\n","$Lec"]}]}] 8d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] 8e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 97:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Single-use reference to the stored authorisation request. Consumable exactly once\nat your authorisation endpoint.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Single-use reference to the stored authorisation request. Consumable exactly once\nat your authorisation endpoint."}]]}]}] 98:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seconds before the `request_uri` expires.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Seconds before the ",["$","code","code-0",{"children":"request_uri"}]," expires."]}]]}]}] 99:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Response body for `POST /oauth2/par`: the single-use `request_uri` and how long it\nstays valid.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Response body for ",["$","code","code-0",{"children":"POST /oauth2/par"}],": the single-use ",["$","code","code-1",{"children":"request_uri"}]," and how long it\nstays valid."]}]]}]}] 9a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Authorisation request stored. Return the single-use `request_uri` and how long it\nstays valid.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Authorisation request stored. Return the single-use ",["$","code","code-0",{"children":"request_uri"}]," and how long it\nstays valid."]}]]}]}] 9c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] 9d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] 9e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] ed:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 9f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$ed",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$Lee"," does not match the ","$Lef","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$Lf0","$Lf1","$Lf2","$Lf3","$Lf4"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] a0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Malformed or invalid pushed request, for example a missing `code_challenge`. The\nbody uses the standard OAuth 2.0 error format (RFC 6749, section 5.2, as applied by\nRFC 9126).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Malformed or invalid pushed request, for example a missing ",["$","code","code-0",{"children":"code_challenge"}],". The\nbody uses the standard OAuth 2.0 error format (RFC 6749, section 5.2, as applied by\nRFC 9126)."]}]]}]}] e9:["$","code","code-1",{"children":"kid"}] ea:["$","code","code-2",{"children":"kid"}] eb:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] ec:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] ee:["$","code","code-0",{"children":"code_verifier"}] ef:["$","code","code-1",{"children":"code_challenge"}] f0:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] f1:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] f2:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] f3:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] f4:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] a2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] a3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] a4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] f5:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | a5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$f5",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$Lf6"," does not match the ","$Lf7","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$Lf8","$Lf9","$Lfa","$Lfb","$Lfc"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] a6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Client authentication failed (`invalid_client`): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Client authentication failed (",["$","code","code-0",{"children":"invalid_client"}],"): Revolut's client credentials are\nmissing, unknown, or invalid for the registered client-authentication method."]}]]}]}] a7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] a8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded (",["$","code","code-0",{"children":"429"}],") or temporary capacity issue (",["$","code","code-1",{"children":"503"}],") on your authorisation\nserver. Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],". The body format is not specified."]}]]}]}] a9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] aa:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded (`429`) or temporary capacity issue (`503`) on your authorisation\nserver. Revolut retries, honouring `Retry-After`. The body format is not specified.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded (",["$","code","code-0",{"children":"429"}],") or temporary capacity issue (",["$","code","code-1",{"children":"503"}],") on your authorisation\nserver. Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],". The body format is not specified."]}]]}]}] ab:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's OAuth 2.0 client ID, as registered during onboarding.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's OAuth 2.0 client ID, as registered during onboarding."}]]}]}] ac:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's client secret. Omit it when the registered client-authentication method\nis private key JWT or mTLS."}]]}]}] ad:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Client-assertion type, used when the registered client-authentication method is\nprivate key JWT (RFC 7521)."}]]}]}] ae:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The signed JWT assertion authenticating Revolut's client, used with\n`client_assertion_type` for private key JWT authentication.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The signed JWT assertion authenticating Revolut's client, used with\n",["$","code","code-0",{"children":"client_assertion_type"}]," for private key JWT authentication."]}]]}]}] af:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The registered Revolut redirect URI the customer's browser returns to.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The registered Revolut redirect URI the customer's browser returns to."}]]}]}] b0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 response type. This flow always uses the authorisation-code grant.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"OAuth 2.0 response type. This flow always uses the authorisation-code grant."}]]}]}] b1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The scopes Revolut requests: always `openid loyalty.profile`. `openid` makes your\ntoken endpoint issue an ID token (OpenID Connect).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The scopes Revolut requests: always ",["$","code","code-0",{"children":"openid loyalty.profile"}],". ",["$","code","code-1",{"children":"openid"}]," makes your\ntoken endpoint issue an ID token (OpenID Connect)."]}]]}]}] b2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Opaque value Revolut sends and expects back, unchanged, on the redirect. Single-use\nand short-lived.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Opaque value Revolut sends and expects back, unchanged, on the redirect. Single-use\nand short-lived."}]]}]}] b3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OpenID Connect nonce. Echo it in the `nonce` claim of the ID token issued at\nyour token endpoint.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OpenID Connect nonce. Echo it in the ",["$","code","code-0",{"children":"nonce"}]," claim of the ID token issued at\nyour token endpoint."]}]]}]}] b4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","How to route the customer at your authorisation endpoint:\n\n| Value | Description |\n| ----- | ----------- |\n| `login` | Forced re-authentication: route the customer straight to your sign-in screen, ignoring any existing session. Revolut sends it when the customer links an existing account, and after `POST /loyalty/auto-enrol` returns `account_exists`. |\n| `create` | Route the customer straight to your registration screen. Revolut sends it after `POST /loyalty/auto-enrol` returns a `403` UI-required code other than `account_exists`, or directly when you don't implement auto-enrol. |\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"How to route the customer at your authorisation endpoint:"}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"login"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Forced re-authentication: route the customer straight to your sign-in screen, ignoring any existing session. Revolut sends it when the customer links an existing account, and after ",["$","code","code-0",{"children":"POST /loyalty/auto-enrol"}]," returns ",["$","code","code-1",{"children":"account_exists"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"create"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Route the customer straight to your registration screen. Revolut sends it after ",["$","code","code-0",{"children":"POST /loyalty/auto-enrol"}]," returns a ",["$","code","code-1",{"children":"403"}]," UI-required code other than ",["$","code","code-2",{"children":"account_exists"}],", or directly when you don't implement auto-enrol."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] b5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","PKCE code challenge: the base64url-encoded SHA-256 hash of the `code_verifier` Revolut\nlater sends to your token endpoint (RFC 7636). Store it with the request.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["PKCE code challenge: the base64url-encoded SHA-256 hash of the ",["$","code","code-0",{"children":"code_verifier"}]," Revolut\nlater sends to your token endpoint (RFC 7636). Store it with the request."]}]]}]}] b6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","PKCE challenge method. Always `S256`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["PKCE challenge method. Always ",["$","code","code-0",{"children":"S256"}],"."]}]]}]}] b7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet: the program to enrol them in, or the program whose membership they want to\nlink. Revolut sends it only if you operate several loyalty programs; the valid values\nare agreed during onboarding.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet: the program to enrol them in, or the program whose membership they want to\nlink. Revolut sends it only if you operate several loyalty programs; the valid values\nare agreed during onboarding."}]]}]}] b8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","JSON-serialised enrolment claims: a flat `EnrolmentClaims` object with the details\nthe customer agreed to share. An empty JSON object (`{}`) means no personal data is\nshared: Revolut sends it in the link flow (`prompt=login`), where the customer\nidentifies themselves by signing in to you.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["JSON-serialised enrolment claims: a flat ",["$","code","code-0",{"children":"EnrolmentClaims"}]," object with the details\nthe customer agreed to share. An empty JSON object (",["$","code","code-1",{"children":"{}"}],") means no personal data is\nshared: Revolut sends it in the link flow (",["$","code","code-2",{"children":"prompt=login"}],"), where the customer\nidentifies themselves by signing in to you."]}]]}]}] b9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Form body for `POST /oauth2/par` (`application/x-www-form-urlencoded`), per the Pushed\nAuthorization Request (PAR) flow (RFC 9126). Carries the OAuth 2.0 authorisation request\nparameters, Proof Key for Code Exchange (PKCE, RFC 7636), and the enrolment claims:\nenrolment requests carry the customer's claims, and link requests carry none (see\n`enrolment_claims`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Form body for ",["$","code","code-0",{"children":"POST /oauth2/par"}]," (",["$","code","code-1",{"children":"application/x-www-form-urlencoded"}],"), per the Pushed\nAuthorization Request (PAR) flow (RFC 9126). Carries the OAuth 2.0 authorisation request\nparameters, Proof Key for Code Exchange (PKCE, RFC 7636), and the enrolment claims:\nenrolment requests carry the customer's claims, and link requests carry none (see\n",["$","code","code-2",{"children":"enrolment_claims"}],")."]}]]}]}] fd:T783,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: OAuth 2.0 Pushed Authorization Request (PAR) endpoint (RFC 9126): the `pushed_authorization_request_endpoint` in your discovery document. Revolut's backend calls it before sending the customer's browser to your authorisation endpoint, so the enrolment claims travel over a server-to-server channel instead of through the browser. Store the request and return a single-use `request_uri`. Revolut pushes one of the following variants: - **Enrol a new member**: `prompt` is `create` and `enrolment_claims` carries the details the customer agreed to share. Revolut sends it after `POST /loyalty/auto-enrol` returns a UI-required `403` other than `account_exists`, or directly when you don't implement auto-enrol. - **Link an existing account**: `prompt` is `login` and `enrolment_claims` is `{}`, so no personal data is shared. Revolut sends it when the customer starts "Link existing account" in Revolut Wallet, or after `POST /loyalty/auto-enrol` returns `account_exists`. Both variants carry Proof Key for Code Exchange (PKCE, RFC 7636): store `code_challenge` with the request and verify the `code_verifier` Revolut sends to your token endpoint. Both also carry `program_id` when you operate several loyalty programs. Authenticate Revolut's client credentials (client secret, private key JSON Web Token (JWT), or mutual TLS (mTLS), as registered during onboarding) and reject any unauthenticated request with `401` (`invalid_client`). Unless mTLS is the registered method, Revolut sends a client secret or JWT assertion in the request body; that's why `security` lists mTLS as optional. The `request_uri` must expire after `expires_in` seconds (60–90) and be consumable exactly once at your authorisation endpoint. bd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$fd",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["OAuth 2.0 Pushed Authorization Request (PAR) endpoint (RFC 9126): the\n",["$","code","code-0",{"children":"pushed_authorization_request_endpoint"}]," in your discovery document. Revolut's backend calls\nit before sending the customer's browser to your authorisation endpoint, so the enrolment\nclaims travel over a server-to-server channel instead of through the browser. Store the\nrequest and return a single-use ",["$","code","code-1",{"children":"request_uri"}],"."]}],"\n",["$","p","p-1",{"children":"Revolut pushes one of the following variants:"}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Enrol a new member"}],": ",["$","code","code-0",{"children":"prompt"}]," is ","$Lfe"," and ","$Lff"," carries the details\nthe customer agreed to share. Revolut sends it after ","$L100"," returns\na UI-required ","$L101"," other than ","$L102",", or directly when you don't implement\nauto-enrol."]}],"\n","$L103","\n"]}],"\n","$L104","\n","$L105","\n","$L106"]}]}] be:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header."}]]}]}] bf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints."}]]}]}] f6:["$","code","code-0",{"children":"code_verifier"}] f7:["$","code","code-1",{"children":"code_challenge"}] f8:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] f9:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] fa:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] fb:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] fc:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] fe:["$","code","code-1",{"children":"create"}] ff:["$","code","code-2",{"children":"enrolment_claims"}] 100:["$","code","code-3",{"children":"POST /loyalty/auto-enrol"}] 101:["$","code","code-4",{"children":"403"}] 102:["$","code","code-5",{"children":"account_exists"}] 103:["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Link an existing account"}],": ",["$","code","code-0",{"children":"prompt"}]," is ",["$","code","code-1",{"children":"login"}]," and ",["$","code","code-2",{"children":"enrolment_claims"}]," is ",["$","code","code-3",{"children":"{}"}],", so no\npersonal data is shared. Revolut sends it when the customer starts \"Link existing\naccount\" in Revolut Wallet, or after ",["$","code","code-4",{"children":"POST /loyalty/auto-enrol"}]," returns\n",["$","code","code-5",{"children":"account_exists"}],"."]}] 104:["$","p","p-2",{"children":["Both variants carry Proof Key for Code Exchange (PKCE, RFC 7636): store ",["$","code","code-0",{"children":"code_challenge"}],"\nwith the request and verify the ",["$","code","code-1",{"children":"code_verifier"}]," Revolut sends to your token endpoint.\nBoth also carry ",["$","code","code-2",{"children":"program_id"}]," when you operate several loyalty programs."]}] 105:["$","p","p-3",{"children":["Authenticate Revolut's client credentials (client secret, private key JSON Web Token\n(JWT), or mutual TLS (mTLS), as registered during onboarding) and reject any\nunauthenticated request with ",["$","code","code-0",{"children":"401"}]," (",["$","code","code-1",{"children":"invalid_client"}],"). Unless mTLS is the registered\nmethod, Revolut sends a client secret or JWT assertion in the request body; that's why\n",["$","code","code-2",{"children":"security"}]," lists mTLS as optional."]}] 106:["$","p","p-4",{"children":["The ",["$","code","code-0",{"children":"request_uri"}]," must expire after ",["$","code","code-1",{"children":"expires_in"}]," seconds (60–90) and be consumable\nexactly once at your authorisation endpoint."]}] c8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] 107:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. ca:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$107",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$L108",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$L109","."]}],"\n","$L10a","\n"]}],"\n","$L10b"]}]}] cb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] cc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 108:["$","code","code-1",{"children":"kid"}] 109:["$","code","code-2",{"children":"kid"}] 10a:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] 10b:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] 15b:I["50460d952402",[],"ScrollArea",1] 15d:I["669a0b877249",[],"CopyButton",1] 22:["$","$37","apply-loyalty-card",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"200":{"description":"Loyalty card applied. Returns the `outcome`, the points the transaction earned, and,\noptionally, the customer's new balance.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L10c","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Result of applying a loyalty card to a transaction: the `outcome`, the points the\npurchase earned, and optionally the customer's new balance. Revolut ignores unknown\nfields in this response, so you may add fields without breaking compatibility.\n","required":["points_earned","outcome"],"properties":{"points_earned":{"type":"object","description":"The points earned for this transaction.","required":["value","unit"],"properties":{"value":{"type":"string","pattern":"^(0|[1-9]\\d*)(\\.\\d{1,6})?$","description":"Points earned as a non-negative decimal string with up to six fractional digits. Do\nnot use a sign, exponent notation, or redundant leading zeros. Compare values as\ndecimals, so `\"72.5\"` and `\"72.500000\"` are equivalent. When the purchase earns no\npoints, use zero: `\"0\"` or a decimal equivalent such as `\"0.000000\"`.\n","examples":["72"],"descriptionNode":"$L10d"},"unit":{"type":"string","minLength":1,"description":"Unit label for the points (e.g. points, miles).","examples":["points"],"descriptionNode":"$L10e"},"monetary_value":{"description":"Optional monetary equivalent of the earned points.","type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Non-negative decimal amount as a string (e.g. \"72.40\").","examples":["72.40"],"descriptionNode":"$L10f"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code (e.g. GBP, EUR, USD).","examples":["GBP"],"descriptionNode":"$L110"}},"descriptionNode":"$L111"}},"descriptionNode":"$L112"},"outcome":{"type":"string","enum":["applied","no_points_earned"],"description":"Why the customer earned what they did:\n\n| Value | Description |\n| ----- | ----------- |\n| `applied` | The membership matched and the loyalty card was applied. `points_earned` contains the points awarded under your program rules. |\n| `no_points_earned` | The membership matched and the loyalty card was applied, but the purchase earned no points. `points_earned.value` must be zero, written as `\"0\"` or a decimal equivalent such as `\"0.000000\"` (see `PointsAmount.value`). |\n","examples":["applied"],"descriptionNode":"$L113"},"points_balance":{"description":"The customer's new points balance after this transaction. Include it if you track\nbalances; when you do, `value` and `unit` are required, and `unit` must match\n`points_earned.unit`.\n","type":"object","required":["value","unit"],"properties":{"value":{"type":"string","pattern":"^(0|[1-9]\\d*)(\\.\\d{1,6})?$","description":"Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n","examples":["1500"],"descriptionNode":"$L114"},"unit":{"type":"string","minLength":1,"description":"Unit label for the balance (e.g. points, miles).","examples":["points"],"descriptionNode":"$L115"},"monetary_value":{"description":"Optional monetary equivalent of the points balance.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:required","properties":{"amount":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:amount","currency":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:currency"},"descriptionNode":"$L116"}},"descriptionNode":"$L117"}},"descriptionNode":"$L118"},"examples":{"points_earned":{"summary":"Points earned, with the new balance","value":{"outcome":"applied","points_earned":{"value":"72","unit":"points"},"points_balance":{"value":"4892","unit":"points"}}},"zero_points":{"summary":"Applied, but the purchase earned no points","value":{"outcome":"no_points_earned","points_earned":{"value":"0","unit":"points"}}}}}},"descriptionNode":"$L119"},"202":{"description":"Transaction accepted but not ready yet (settlement lag). Revolut retries,\nhonouring `Retry-After`.\n\n:::note\nReturn no body with `202`.\n:::\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L11a","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L11b","schema":{"type":"integer","minimum":0}}},"descriptionNode":"$L11c"},"400":{"description":"Malformed request or invalid body.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L11d","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":["code","message"],"properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L11e"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L11f"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L120"}},"descriptionNode":"$L121"},"examples":{"validation_error":{"value":{"code":"validation_error","message":"Request validation failed."}}}}},"descriptionNode":"$L122"},"401":{"description":"Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L123","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L124"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L125"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L126"}},"descriptionNode":"$L127"},"examples":{"invalid_credentials":{"value":{"code":"invalid_credentials","message":"Missing or invalid Revolut credentials."}}}}},"descriptionNode":"$L128"},"403":{"description":"Authenticated, but the credential lacks the required scope/permission (e.g. an OAuth\ntoken without the required scope).\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L129","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L12a"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L12b"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L12c"}},"descriptionNode":"$L12d"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The credential does not have the required scope."}}}}},"descriptionNode":"$L12e"},"404":{"description":"The transaction or active loyalty membership is definitively not found. Revolut stops\nretrying.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L12f","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L130"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L131"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L132"}},"descriptionNode":"$L133"},"examples":{"transaction_not_found":{"value":{"code":"transaction_not_found","message":"No transaction found for this rrn and merchant_id."}},"membership_not_found":{"value":{"code":"membership_not_found","message":"No active membership found for this member_id and program_id."}}}}},"descriptionNode":"$L134"},"409":{"description":"Unrecoverable conflict: the `Idempotency-Key` was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L135","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L136"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L137"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L138"}},"descriptionNode":"$L139"},"examples":{"idempotency_conflict":{"value":{"code":"idempotency_conflict","message":"The Idempotency-Key was already used with a different request body."}},"ambiguous_transaction":{"value":{"code":"ambiguous_transaction","message":"Multiple transactions match this rrn, merchant_id, transaction_at, and total."}}}}},"descriptionNode":"$L13a"},"410":{"description":"Transaction is void (refund/cancellation). Revolut will stop retrying.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L13b","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L13c"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L13d"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L13e"}},"descriptionNode":"$L13f"},"examples":{"transaction_void":{"value":{"code":"transaction_void","message":"The transaction is void due to a refund or cancellation."}}}}},"descriptionNode":"$L140"},"429":{"description":"Rate limit exceeded. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L141","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L142","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L143"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L144"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L145"}},"descriptionNode":"$L146"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Rate limit exceeded. Retry after the specified delay."}}}}},"descriptionNode":"$L147"},"503":{"description":"Temporary capacity issue. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L148","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L149","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L14a"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L14b"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L14c"}},"descriptionNode":"$L14d"},"examples":{"temporarily_unavailable":{"value":{"code":"temporarily_unavailable","message":"Service temporarily unavailable. Please retry."}}}}},"descriptionNode":"$L14e"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request body for `POST /loyalty/apply`. Contains the partner-issued membership and program\nidentifiers recorded during enrolment or linking, plus the transaction context to match.\n","required":["member_id","program_id","transaction_context"],"properties":{"member_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the customer's loyalty membership, recorded when the\ncustomer enrolled or linked an existing membership through Revolut Wallet.\n","examples":["member_987654"],"descriptionNode":"$L14f"},"program_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the loyalty program associated with the membership,\nrecorded during enrolment or linking.\n","examples":["program_gb_rewards"],"descriptionNode":"$L150"},"transaction_context":{"type":"object","description":"Identifiers Revolut supplies so you can match the originating transaction.\n\n**Authoritative matching algorithm.** Use `rrn` + `merchant_id` to find candidate\ntransactions. Confirm a candidate only when `transaction_at` is within ±24 hours of the\ntimestamp you hold, `total.currency` is the same, and the decimal numeric value of\n`total.amount` is exactly equal. Compare amounts as decimal numbers rather than raw strings, so\n`\"72.4\"` and `\"72.40\"` are equal. If no transaction matches, return `404` with\n`transaction_not_found`. If more than one transaction matches all fields, return `409` with\n`ambiguous_transaction`; Revolut stops retrying and flags the case for investigation.\n\nRevolut uses the acquiring institution ID collected during onboarding to route eligible\ntransactions. This routing identifier is not included in `transaction_context`.\n","required":["rrn","merchant_id","transaction_at","total"],"properties":{"rrn":{"type":"string","description":"ISO 8583 Retrieval Reference Number of the original payment.","examples":["123456789012"],"descriptionNode":"$L151"},"merchant_id":{"type":"string","description":"Card acceptor identifier (DE 42 in ISO 8583 messaging); identifies the sub-merchant for aggregators.","examples":["mer_example_01"],"descriptionNode":"$L152"},"transaction_at":{"type":"string","format":"date-time","description":"Timestamp of the purchase in UTC and ISO 8601 format. Accept it as a match only when it is\nwithin ±24 hours of the timestamp you hold for the transaction.\n","examples":["2026-09-17T12:00:00.000Z"],"descriptionNode":"$L153"},"total":{"description":"Transaction total used to confirm the match. Require the same currency and exact decimal\nnumeric amount; do not apply a tolerance for authorised-versus-settled differences.\n","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:required","properties":{"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Non-negative decimal amount as a string (e.g. \"72.40\").","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:amount:examples","descriptionNode":"$L154"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code (e.g. GBP, EUR, USD).","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:currency:examples","descriptionNode":"$L155"}},"descriptionNode":"$L156"}},"descriptionNode":"$L157"}},"descriptionNode":"$L158"},"examples":{"apply":{"value":{"member_id":"member_987654","program_id":"program_gb_rewards","transaction_context":{"rrn":"123456789012","merchant_id":"mer_example_01","transaction_at":"2026-09-17T12:00:00.000Z","total":{"amount":"72.40","currency":"GBP"}}}}}}}},"variantLabels":["Points earned, with the new balance","Applied, but the purchase earned no points"],"children":["$L159","$L15a"]}]}],false]}] 15c:T917,
{
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "token_type": "Bearer",
  "expires_in": 300,
  "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InBhcnRuZXItc2lnbmluZy0yMDI2LTA5IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgucGFydG5lci5leGFtcGxlIiwic3ViIjoiY3VzdF80ZjJhOWMxZSIsImF1ZCI6InJldm9sdXQtd2FsbGV0IiwiZXhwIjoxNzg5NjQ3MzAwLCJpYXQiOjE3ODk2NDY3MDAsIm5vbmNlIjoiYTdiOGM5ZDBlMWYyIiwibWVtYmVyX2lkIjoiOTk4ODc3NjY1NSJ9.lQp5M4HH0GLF09AYM3sPOgw9OFk7XzWGaDjrPXoVi1ZSPGPkjU_Xnag-82kvnyGhGOLKRRROZ1Dk1FJ3LxUi-XkFXOXfibT-xhOoiPICHH4aufCLZVVLcjZ3NB30eztY5VNvoAsz1qW7ec2gSkQDV76GKASxs3RggSNW4PHxl7Cqv4vJhUfyOkFo64HaXvWCQ5fTpuYTym8p9IXMEFTLmf8GH4zZ7xSnNLDIepZjJejS1JXa9M1ufC2Ld_WnDw2-Pq6T3su5iKPnsNlxXtwEjBJn_M2BMF0H-noK4b48Zv39cQd-BXhrc_crbkwFgzY0ekkJmUMvMTS2oOWDZB0_cA",
  "scope": "openid loyalty.profile"
}
91:["$","div","200-application/json-authorization_code",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$15c"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"access_token\": \"2YotnFZFEjr1zCsicMWpAA\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"id_token\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6InBhcnRuZXItc2lnbmluZy0yMDI2LTA5IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgucGFydG5lci5leGFtcGxlIiwic3ViIjoiY3VzdF80ZjJhOWMxZSIsImF1ZCI6InJldm9sdXQtd2FsbGV0IiwiZXhwIjoxNzg5NjQ3MzAwLCJpYXQiOjE3ODk2NDY3MDAsIm5vbmNlIjoiYTdiOGM5ZDBlMWYyIiwibWVtYmVyX2lkIjoiOTk4ODc3NjY1NSJ9.lQp5M4HH0GLF09AYM3sPOgw9OFk7XzWGaDjrPXoVi1ZSPGPkjU_Xnag-82kvnyGhGOLKRRROZ1Dk1FJ3LxUi-XkFXOXfibT-xhOoiPICHH4aufCLZVVLcjZ3NB30eztY5VNvoAsz1qW7ec2gSkQDV76GKASxs3RggSNW4PHxl7Cqv4vJhUfyOkFo64HaXvWCQ5fTpuYTym8p9IXMEFTLmf8GH4zZ7xSnNLDIepZjJejS1JXa9M1ufC2Ld_WnDw2-Pq6T3su5iKPnsNlxXtwEjBJn_M2BMF0H-noK4b48Zv39cQd-BXhrc_crbkwFgzY0ekkJmUMvMTS2oOWDZB0_cA\",\n \"scope\": \"openid loyalty.profile\"\n}"}]}]]}] 15e:T580,
{
  "access_token": "8xLOxBtZp8dQ3vT6wR1yUe",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "loyalty.enrol"
}
92:["$","div","200-application/json-client_credentials",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$15e"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"access_token\": \"8xLOxBtZp8dQ3vT6wR1yUe\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600,\n \"scope\": \"loyalty.enrol\"\n}"}]}]]}] 93:["$","div","400-application/json-invalid_request",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_request\",\n  \"error_description\": \"The request is missing a required parameter or is otherwise malformed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_request\",\n \"error_description\": \"The request is missing a required parameter or is otherwise malformed.\"\n}"}]}]]}] 94:["$","div","400-application/json-invalid_grant",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_grant\",\n  \"error_description\": \"The authorisation code is invalid, expired, or already used, or the code verifier doesn't match.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_grant\",\n \"error_description\": \"The authorisation code is invalid, expired, or already used, or the code verifier doesn't match.\"\n}"}]}]]}] 95:["$","div","400-application/json-unsupported_grant_type",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"unsupported_grant_type\",\n  \"error_description\": \"The grant type is not supported by this authorisation server.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"unsupported_grant_type\",\n \"error_description\": \"The grant type is not supported by this authorisation server.\"\n}"}]}]]}] 96:["$","div","401-application/json-invalid_client",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_client\",\n  \"error_description\": \"Client authentication failed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_client\",\n \"error_description\": \"Client authentication failed.\"\n}"}]}]]}] 159:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"apply-loyalty-card","children":[["$L15f","$undefined"],["$","$L18",null,{"id":"apply-loyalty-card"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/apply-loyalty-card.md"}]]}]}],"$undefined"]}] 164:Tb5e,
curl -X POST "https://passes.partner.example/revolut-wallet/loyalty/apply" \
  -H "Content-Type: application/json" \
  -H "Revolut-Api-Version: __RP_TOK_0__" \
  -H "Idempotency-Key: __RP_TOK_1__" \
  -H "Request-Id: __RP_TOK_2__" \
  -d '{
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
}'
165:T183f,
const payload = {
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
};
fetch("https://passes.partner.example/revolut-wallet/loyalty/apply", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Idempotency-Key": "__RP_TOK_1__",
    "Request-Id": "__RP_TOK_2__"
  },
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data));
166:T1c30,
package main

import (
  "fmt"
  "net/http"
  "bytes"
  "encoding/json"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/loyalty/apply"
  jsonData := []byte(`
{
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
}
  `)
  req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Idempotency-Key", "__RP_TOK_1__")
  req.Header.Add("Request-Id", "__RP_TOK_2__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
167:T1571,
import requests

url = "https://passes.partner.example/revolut-wallet/loyalty/apply"
headers = {
  "Content-Type": "application/json",
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Idempotency-Key": "__RP_TOK_1__",
  "Request-Id": "__RP_TOK_2__"
}
payload = {
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
168:T469,import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class Main { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); String body = """ { "member_id": "member_987654", "program_id": "program_gb_rewards", "transaction_context": { "rrn": "123456789012", "merchant_id": "mer_example_01", "transaction_at": "2026-09-17T12:00:00.000Z", "total": { "amount": "72.40", "currency": "GBP" } } } """; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://passes.partner.example/revolut-wallet/loyalty/apply")) .header("Content-Type", "application/json") .header("Revolut-Api-Version", "__RP_TOK_0__") .header("Idempotency-Key", "__RP_TOK_1__") .header("Request-Id", "__RP_TOK_2__") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println) .join(); } }169:T2191,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    String body = """
{
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
}
    """;

    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/loyalty/apply"))
      .header("Content-Type", "application/json")
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Idempotency-Key", "__RP_TOK_1__")
      .header("Request-Id", "__RP_TOK_2__")
      .POST(HttpRequest.BodyPublishers.ofString(body))
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
16a:T403,using System.Net.Http; using System.Net.Http.Headers; var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("https://passes.partner.example/revolut-wallet/loyalty/apply"), Headers = { { "Revolut-Api-Version", "__RP_TOK_0__" }, { "Idempotency-Key", "__RP_TOK_1__" }, { "Request-Id", "__RP_TOK_2__" }, }, Content = new StringContent(@"{ ""member_id"": ""member_987654"", ""program_id"": ""program_gb_rewards"", ""transaction_context"": { ""rrn"": ""123456789012"", ""merchant_id"": ""mer_example_01"", ""transaction_at"": ""2026-09-17T12:00:00.000Z"", ""total"": { ""amount"": ""72.40"", ""currency"": ""GBP"" } } }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } } }; using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body); }16b:T2d9f,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Post,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/loyalty/apply"),
  Headers =
  {
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Idempotency-Key", "__RP_TOK_1__" },
    { "Request-Id", "__RP_TOK_2__" },
  },
  Content = new StringContent(@"{
  ""member_id"": ""member_987654"",
  ""program_id"": ""program_gb_rewards"",
  ""transaction_context"": {
    ""rrn"": ""123456789012"",
    ""merchant_id"": ""mer_example_01"",
    ""transaction_at"": ""2026-09-17T12:00:00.000Z"",
    ""total"": {
      ""amount"": ""72.40"",
      ""currency"": ""GBP""
    }
  }
}")
  {
    Headers =
    {
      ContentType = new MediaTypeHeaderValue("application/json")
    }
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
15a:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L160",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":true,"description":"Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n","schema":{"type":"string","enum":["2026-09-17"]},"example":"2026-09-17","descriptionNode":"$L161"},{"name":"Idempotency-Key","in":"header","required":true,"description":"UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry.\n\n**Key lifecycle.** Only a `200` completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (`202` on `POST /loyalty/apply` only, `429`, and `503`)\nmust not complete or consume the key. Terminal failures (`400`, `401`, `403`, `404`,\n`409`, `410`) need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days.\n\n**Body comparison.** The same key with a different request body returns `409`.\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict.\n","schema":{"type":"string","format":"uuid"},"example":"550e8400-e29b-41d4-a716-446655440000","descriptionNode":"$L162"},{"name":"Request-Id","in":"header","required":false,"description":"Revolut's correlation ID for this request. Echo it back in your response.","schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$L163"}],"requestBody":"$22:props:children:0:props:children:props:requestBody","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$22:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X POST \"https://passes.partner.example/revolut-wallet/loyalty/apply\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Idempotency-Key: __RP_TOK_1__\" \\\n -H \"Request-Id: __RP_TOK_2__\" \\\n -d '{\n \"member_id\": \"member_987654\",\n \"program_id\": \"program_gb_rewards\",\n \"transaction_context\": {\n \"rrn\": \"123456789012\",\n \"merchant_id\": \"mer_example_01\",\n \"transaction_at\": \"2026-09-17T12:00:00.000Z\",\n \"total\": {\n \"amount\": \"72.40\",\n \"currency\": \"GBP\"\n }\n }\n}'","templateHtml":"$164","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"const payload = {\n \"member_id\": \"member_987654\",\n \"program_id\": \"program_gb_rewards\",\n \"transaction_context\": {\n \"rrn\": \"123456789012\",\n \"merchant_id\": \"mer_example_01\",\n \"transaction_at\": \"2026-09-17T12:00:00.000Z\",\n \"total\": {\n \"amount\": \"72.40\",\n \"currency\": \"GBP\"\n }\n }\n};\nfetch(\"https://passes.partner.example/revolut-wallet/loyalty/apply\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Idempotency-Key\": \"__RP_TOK_1__\",\n \"Request-Id\": \"__RP_TOK_2__\"\n },\n body: JSON.stringify(payload)\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$165","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"bytes\"\n \"encoding/json\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/loyalty/apply\"\n jsonData := []byte(`\n{\n \"member_id\": \"member_987654\",\n \"program_id\": \"program_gb_rewards\",\n \"transaction_context\": {\n \"rrn\": \"123456789012\",\n \"merchant_id\": \"mer_example_01\",\n \"transaction_at\": \"2026-09-17T12:00:00.000Z\",\n \"total\": {\n \"amount\": \"72.40\",\n \"currency\": \"GBP\"\n }\n }\n}\n `)\n req, _ := http.NewRequest(\"POST\", url, bytes.NewBuffer(jsonData))\n req.Header.Add(\"Content-Type\", \"application/json\")\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Idempotency-Key\", \"__RP_TOK_1__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_2__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$166","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/loyalty/apply\"\nheaders = {\n \"Content-Type\": \"application/json\",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Idempotency-Key\": \"__RP_TOK_1__\",\n \"Request-Id\": \"__RP_TOK_2__\"\n}\npayload = {\n \"member_id\": \"member_987654\",\n \"program_id\": \"program_gb_rewards\",\n \"transaction_context\": {\n \"rrn\": \"123456789012\",\n \"merchant_id\": \"mer_example_01\",\n \"transaction_at\": \"2026-09-17T12:00:00.000Z\",\n \"total\": {\n \"amount\": \"72.40\",\n \"currency\": \"GBP\"\n }\n }\n}\n\nresponse = requests.post(url, headers=headers, json=payload)\nprint(response.json())","templateHtml":"$167","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"$168","templateHtml":"$169","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"$16a","templateHtml":"$16b","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"post","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/loyalty/apply","parameters":["$15a:props:children:0:props:children:1:props:parameters:0","$15a:props:children:0:props:children:1:props:parameters:1","$15a:props:children:0:props:children:1:props:parameters:2"]}],"$L16c"],"$L16d","$L16e"]}]]}] 8f:["$","div","request-application/x-www-form-urlencoded-authorization_code_grant",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"grant_type\": \"authorization_code\",\n  \"code\": \"SplxlOBeZQQYbYSaW6S5bA\",\n  \"redirect_uri\": \"https://wallet.revolut.com/loyalty/oauth2/callback\",\n  \"code_verifier\": \"s6GMlOmVYBylONZVcuAyzNpBjdDeZEYanMCV9NVy4wM-kQ9\",\n  \"client_id\": \"revolut-wallet\",\n  \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"grant_type\": \"authorization_code\",\n \"code\": \"SplxlOBeZQQYbYSaW6S5bA\",\n \"redirect_uri\": \"https://wallet.revolut.com/loyalty/oauth2/callback\",\n \"code_verifier\": \"s6GMlOmVYBylONZVcuAyzNpBjdDeZEYanMCV9NVy4wM-kQ9\",\n \"client_id\": \"revolut-wallet\",\n \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\"\n}"}]}]]}] 90:["$","div","request-application/x-www-form-urlencoded-client_credentials_grant",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"grant_type\": \"client_credentials\",\n  \"scope\": \"loyalty.enrol\",\n  \"client_id\": \"revolut-wallet\",\n  \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"grant_type\": \"client_credentials\",\n \"scope\": \"loyalty.enrol\",\n \"client_id\": \"revolut-wallet\",\n \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\"\n}"}]}]]}] 170:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 16c:["$","$L89",null,{"security":[{"mtls":[]},{"mtls":[],"jws":[]},{"jws":[]},{"oauth2":["loyalty.apply"]},{"oauth2":["loyalty.apply"],"mtls":[]}],"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$L16f"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$170","descriptionNode":"$L171"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":"$4:6:props:children:props:children:2:props:children:2:props:children:0:props:children:2:props:authorization:oauth2:flows","descriptionNode":"$L172"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$L173"}}}] 16d:["$","$L4a",null,{"exampleBlocks":{"application/json":{"variants":[{"key":"apply","label":"apply","rawValue":"$22:props:children:0:props:children:props:requestBody:content:application/json:examples:apply:value","block":"$L174"}],"syncedPropertyName":"$undefined"}},"title":"Request body samples","headingAs":"h4"}] 16e:["$","$L4b",null,{"exampleBlocks":{"200":{"application/json":{"variants":[{"key":"points_earned","label":"Points earned, with the new balance","rawValue":"$22:props:children:0:props:children:props:responses:200:content:application/json:examples:points_earned:value","block":"$L175"},{"key":"zero_points","label":"Applied, but the purchase earned no points","rawValue":"$22:props:children:0:props:children:props:responses:200:content:application/json:examples:zero_points:value","block":"$L176"}],"syncedPropertyName":"$undefined"}},"202":{},"400":{"application/json":{"variants":[{"key":"validation_error","label":"validation_error","rawValue":"$22:props:children:0:props:children:props:responses:400:content:application/json:examples:validation_error:value","block":"$L177"}],"syncedPropertyName":"$undefined"}},"401":{"application/json":{"variants":[{"key":"invalid_credentials","label":"invalid_credentials","rawValue":"$22:props:children:0:props:children:props:responses:401:content:application/json:examples:invalid_credentials:value","block":"$L178"}],"syncedPropertyName":"$undefined"}},"403":{"application/json":{"variants":[{"key":"insufficient_scope","label":"insufficient_scope","rawValue":"$22:props:children:0:props:children:props:responses:403:content:application/json:examples:insufficient_scope:value","block":"$L179"}],"syncedPropertyName":"$undefined"}},"404":{"application/json":{"variants":[{"key":"transaction_not_found","label":"transaction_not_found","rawValue":"$22:props:children:0:props:children:props:responses:404:content:application/json:examples:transaction_not_found:value","block":"$L17a"},{"key":"membership_not_found","label":"membership_not_found","rawValue":"$22:props:children:0:props:children:props:responses:404:content:application/json:examples:membership_not_found:value","block":"$L17b"}],"syncedPropertyName":"$undefined"}},"409":{"application/json":{"variants":[{"key":"idempotency_conflict","label":"idempotency_conflict","rawValue":"$22:props:children:0:props:children:props:responses:409:content:application/json:examples:idempotency_conflict:value","block":"$L17c"},{"key":"ambiguous_transaction","label":"ambiguous_transaction","rawValue":"$22:props:children:0:props:children:props:responses:409:content:application/json:examples:ambiguous_transaction:value","block":"$L17d"}],"syncedPropertyName":"$undefined"}},"410":{"application/json":{"variants":[{"key":"transaction_void","label":"transaction_void","rawValue":"$22:props:children:0:props:children:props:responses:410:content:application/json:examples:transaction_void:value","block":"$L17e"}],"syncedPropertyName":"$undefined"}},"429":{"application/json":{"variants":[{"key":"rate_limited","label":"rate_limited","rawValue":"$22:props:children:0:props:children:props:responses:429:content:application/json:examples:rate_limited:value","block":"$L17f"}],"syncedPropertyName":"$undefined"}},"503":{"application/json":{"variants":[{"key":"temporarily_unavailable","label":"temporarily_unavailable","rawValue":"$22:props:children:0:props:children:props:responses:503:content:application/json:examples:temporarily_unavailable:value","block":"$L180"}],"syncedPropertyName":"$undefined"}}},"headingAs":"h4"}] cf:["$","div","201-application/json-created",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"request_uri\": \"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c\",\n  \"expires_in\": 90\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"request_uri\": \"urn:ietf:params:oauth:request_uri:8b2f9a1c-6d3e-4f7a-9c5b-1e2d3f4a5b6c\",\n \"expires_in\": 90\n}"}]}]]}] d0:["$","div","400-application/json-invalid_request",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_request\",\n  \"error_description\": \"The request is missing a required parameter or is otherwise malformed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_request\",\n \"error_description\": \"The request is missing a required parameter or is otherwise malformed.\"\n}"}]}]]}] d1:["$","div","401-application/json-invalid_client",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_client\",\n  \"error_description\": \"Client authentication failed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_client\",\n \"error_description\": \"Client authentication failed.\"\n}"}]}]]}] 181:T57b,
{
  "client_id": "revolut-wallet",
  "client_secret": "9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c",
  "redirect_uri": "https://wallet.revolut.com/loyalty/oauth2/callback",
  "response_type": "code",
  "scope": "openid loyalty.profile",
  "state": "KhB6vF3nY2zQ9wX1",
  "nonce": "a7b8c9d0e1f2",
  "prompt": "create",
  "code_challenge": "6jX6L4rvyuv0fbu5qAL_4fN1-0t9-YwmTvYH0fjX-w4",
  "code_challenge_method": "S256",
  "program_id": "program_gb_rewards",
  "enrolment_claims": "{\"given_name\":\"Alan\",\"family_name\":\"Maxwell\",\"email\":\"alan.maxwell@example.com\",\"phone_number\":\"+447700900123\",\"custom_fields\":{\"vehicle_type\":\"car\",\"licence_plate\":\"BX21 ABC\"}}"
}
cd:["$","div","request-application/x-www-form-urlencoded-pushed_request",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$181"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"client_id\": \"revolut-wallet\",\n \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\",\n \"redirect_uri\": \"https://wallet.revolut.com/loyalty/oauth2/callback\",\n \"response_type\": \"code\",\n \"scope\": \"openid loyalty.profile\",\n \"state\": \"KhB6vF3nY2zQ9wX1\",\n \"nonce\": \"a7b8c9d0e1f2\",\n \"prompt\": \"create\",\n \"code_challenge\": \"6jX6L4rvyuv0fbu5qAL_4fN1-0t9-YwmTvYH0fjX-w4\",\n \"code_challenge_method\": \"S256\",\n \"program_id\": \"program_gb_rewards\",\n \"enrolment_claims\": \"{\\\"given_name\\\":\\\"Alan\\\",\\\"family_name\\\":\\\"Maxwell\\\",\\\"email\\\":\\\"alan.maxwell@example.com\\\",\\\"phone_number\\\":\\\"+447700900123\\\",\\\"custom_fields\\\":{\\\"vehicle_type\\\":\\\"car\\\",\\\"licence_plate\\\":\\\"BX21 ABC\\\"}}\"\n}"}]}]]}] 182:T4b1,
{
  "client_id": "revolut-wallet",
  "client_secret": "9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c",
  "redirect_uri": "https://wallet.revolut.com/loyalty/oauth2/callback",
  "response_type": "code",
  "scope": "openid loyalty.profile",
  "state": "m9N8b7V6c5X4z3A2",
  "nonce": "f1e2d3c4b5a6",
  "prompt": "login",
  "code_challenge": "j6satHH_I3aunLko5TQonFZHTzFIcUEhBJ6LhoVG-Ns",
  "code_challenge_method": "S256",
  "program_id": "program_gb_rewards",
  "enrolment_claims": "{}"
}
ce:["$","div","request-application/x-www-form-urlencoded-pushed_link_request",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$182"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"client_id\": \"revolut-wallet\",\n \"client_secret\": \"9f8e7d6c-5b4a-4f3e-2d1c-0b9a8f7e6d5c\",\n \"redirect_uri\": \"https://wallet.revolut.com/loyalty/oauth2/callback\",\n \"response_type\": \"code\",\n \"scope\": \"openid loyalty.profile\",\n \"state\": \"m9N8b7V6c5X4z3A2\",\n \"nonce\": \"f1e2d3c4b5a6\",\n \"prompt\": \"login\",\n \"code_challenge\": \"j6satHH_I3aunLko5TQonFZHTzFIcUEhBJ6LhoVG-Ns\",\n \"code_challenge_method\": \"S256\",\n \"program_id\": \"program_gb_rewards\",\n \"enrolment_claims\": \"{}\"\n}"}]}]]}] 15f:"Apply a loyalty card to a transaction" 10c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 10d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Points earned as a non-negative decimal string with up to six fractional digits. Do\nnot use a sign, exponent notation, or redundant leading zeros. Compare values as\ndecimals, so `\"72.5\"` and `\"72.500000\"` are equivalent. When the purchase earns no\npoints, use zero: `\"0\"` or a decimal equivalent such as `\"0.000000\"`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Points earned as a non-negative decimal string with up to six fractional digits. Do\nnot use a sign, exponent notation, or redundant leading zeros. Compare values as\ndecimals, so ",["$","code","code-0",{"children":"\"72.5\""}]," and ",["$","code","code-1",{"children":"\"72.500000\""}]," are equivalent. When the purchase earns no\npoints, use zero: ",["$","code","code-2",{"children":"\"0\""}]," or a decimal equivalent such as ",["$","code","code-3",{"children":"\"0.000000\""}],"."]}]]}]}] 10e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit label for the points (e.g. points, miles).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit label for the points (e.g. points, miles)."}]]}]}] 10f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Non-negative decimal amount as a string (e.g. \"72.40\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Non-negative decimal amount as a string (e.g. \"72.40\")."}]]}]}] 110:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code (e.g. GBP, EUR, USD).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 4217 currency code (e.g. GBP, EUR, USD)."}]]}]}] 111:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional monetary equivalent of the earned points.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional monetary equivalent of the earned points."}]]}]}] 112:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The points earned for this transaction.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The points earned for this transaction."}]]}]}] 113:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Why the customer earned what they did:\n\n| Value | Description |\n| ----- | ----------- |\n| `applied` | The membership matched and the loyalty card was applied. `points_earned` contains the points awarded under your program rules. |\n| `no_points_earned` | The membership matched and the loyalty card was applied, but the purchase earned no points. `points_earned.value` must be zero, written as `\"0\"` or a decimal equivalent such as `\"0.000000\"` (see `PointsAmount.value`). |\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Why the customer earned what they did:"}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"applied"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The membership matched and the loyalty card was applied. ",["$","code","code-0",{"children":"points_earned"}]," contains the points awarded under your program rules."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"no_points_earned"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The membership matched and the loyalty card was applied, but the purchase earned no points. ",["$","code","code-0",{"children":"points_earned.value"}]," must be zero, written as ",["$","code","code-1",{"children":"\"0\""}]," or a decimal equivalent such as ",["$","code","code-2",{"children":"\"0.000000\""}]," (see ",["$","code","code-3",{"children":"PointsAmount.value"}],")."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 114:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso ",["$","code","code-0",{"children":"\"1500\""}]," and ",["$","code","code-1",{"children":"\"1500.00\""}]," are equivalent."]}]]}]}] 115:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit label for the balance (e.g. points, miles).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit label for the balance (e.g. points, miles)."}]]}]}] 116:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional monetary equivalent of the points balance.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional monetary equivalent of the points balance."}]]}]}] 117:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The customer's new points balance after this transaction. Include it if you track\nbalances; when you do, `value` and `unit` are required, and `unit` must match\n`points_earned.unit`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The customer's new points balance after this transaction. Include it if you track\nbalances; when you do, ",["$","code","code-0",{"children":"value"}]," and ",["$","code","code-1",{"children":"unit"}]," are required, and ",["$","code","code-2",{"children":"unit"}]," must match\n",["$","code","code-3",{"children":"points_earned.unit"}],"."]}]]}]}] 118:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Result of applying a loyalty card to a transaction: the `outcome`, the points the\npurchase earned, and optionally the customer's new balance. Revolut ignores unknown\nfields in this response, so you may add fields without breaking compatibility.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Result of applying a loyalty card to a transaction: the ",["$","code","code-0",{"children":"outcome"}],", the points the\npurchase earned, and optionally the customer's new balance. Revolut ignores unknown\nfields in this response, so you may add fields without breaking compatibility."]}]]}]}] 119:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Loyalty card applied. Returns the `outcome`, the points the transaction earned, and,\noptionally, the customer's new balance.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Loyalty card applied. Returns the ",["$","code","code-0",{"children":"outcome"}],", the points the transaction earned, and,\noptionally, the customer's new balance."]}]]}]}] 11a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 11b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 11c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Transaction accepted but not ready yet (settlement lag). Revolut retries,\nhonouring `Retry-After`.\n\n:::note\nReturn no body with `202`.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Transaction accepted but not ready yet (settlement lag). Revolut retries,\nhonouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}],"\n",["$","div","inlinealert-0",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["Return no body with ",["$","code","code-0",{"children":"202"}],"."]}]}]]}]]}]}] 11d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 11e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 11f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 120:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 121:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 122:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Malformed request or invalid body.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Malformed request or invalid body."}]]}]}] 123:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 124:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 125:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 126:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 127:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 128:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token."}]]}]}] 129:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 12a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 12b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 12c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 12d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 12e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Authenticated, but the credential lacks the required scope/permission (e.g. an OAuth\ntoken without the required scope).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Authenticated, but the credential lacks the required scope/permission (e.g. an OAuth\ntoken without the required scope)."}]]}]}] 12f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 130:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 131:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 132:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 133:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 134:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The transaction or active loyalty membership is definitively not found. Revolut stops\nretrying.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The transaction or active loyalty membership is definitively not found. Revolut stops\nretrying."}]]}]}] 135:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 136:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 137:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 138:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 139:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 13a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unrecoverable conflict: the `Idempotency-Key` was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Unrecoverable conflict: the ",["$","code","code-0",{"children":"Idempotency-Key"}]," was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying."]}]]}]}] 13b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 13c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 13d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 13e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 13f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 140:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Transaction is void (refund/cancellation). Revolut will stop retrying.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Transaction is void (refund/cancellation). Revolut will stop retrying."}]]}]}] 141:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 142:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 143:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 144:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 145:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 146:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 147:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 148:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 149:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 14a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 14b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 14c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 14d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 14e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Temporary capacity issue. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Temporary capacity issue. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 14f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the customer's loyalty membership, recorded when the\ncustomer enrolled or linked an existing membership through Revolut Wallet.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the customer's loyalty membership, recorded when the\ncustomer enrolled or linked an existing membership through Revolut Wallet."}]]}]}] 150:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the loyalty program associated with the membership,\nrecorded during enrolment or linking.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the loyalty program associated with the membership,\nrecorded during enrolment or linking."}]]}]}] 151:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 8583 Retrieval Reference Number of the original payment.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 8583 Retrieval Reference Number of the original payment."}]]}]}] 152:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Card acceptor identifier (DE 42 in ISO 8583 messaging); identifies the sub-merchant for aggregators.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Card acceptor identifier (DE 42 in ISO 8583 messaging); identifies the sub-merchant for aggregators."}]]}]}] 153:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Timestamp of the purchase in UTC and ISO 8601 format. Accept it as a match only when it is\nwithin ±24 hours of the timestamp you hold for the transaction.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Timestamp of the purchase in UTC and ISO 8601 format. Accept it as a match only when it is\nwithin ±24 hours of the timestamp you hold for the transaction."}]]}]}] 154:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Non-negative decimal amount as a string (e.g. \"72.40\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Non-negative decimal amount as a string (e.g. \"72.40\")."}]]}]}] 155:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code (e.g. GBP, EUR, USD).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 4217 currency code (e.g. GBP, EUR, USD)."}]]}]}] 156:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Transaction total used to confirm the match. Require the same currency and exact decimal\nnumeric amount; do not apply a tolerance for authorised-versus-settled differences.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Transaction total used to confirm the match. Require the same currency and exact decimal\nnumeric amount; do not apply a tolerance for authorised-versus-settled differences."}]]}]}] 157:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifiers Revolut supplies so you can match the originating transaction.\n\n**Authoritative matching algorithm.** Use `rrn` + `merchant_id` to find candidate\ntransactions. Confirm a candidate only when `transaction_at` is within ±24 hours of the\ntimestamp you hold, `total.currency` is the same, and the decimal numeric value of\n`total.amount` is exactly equal. Compare amounts as decimal numbers rather than raw strings, so\n`\"72.4\"` and `\"72.40\"` are equal. If no transaction matches, return `404` with\n`transaction_not_found`. If more than one transaction matches all fields, return `409` with\n`ambiguous_transaction`; Revolut stops retrying and flags the case for investigation.\n\nRevolut uses the acquiring institution ID collected during onboarding to route eligible\ntransactions. This routing identifier is not included in `transaction_context`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Identifiers Revolut supplies so you can match the originating transaction."}],"\n",["$","p","p-1",{"children":[["$","strong","strong-0",{"children":"Authoritative matching algorithm."}]," Use ",["$","code","code-0",{"children":"rrn"}]," + ",["$","code","code-1",{"children":"merchant_id"}]," to find candidate\ntransactions. Confirm a candidate only when ",["$","code","code-2",{"children":"transaction_at"}]," is within ±24 hours of the\ntimestamp you hold, ",["$","code","code-3",{"children":"total.currency"}]," is the same, and the decimal numeric value of\n",["$","code","code-4",{"children":"total.amount"}]," is exactly equal. Compare amounts as decimal numbers rather than raw strings, so\n",["$","code","code-5",{"children":"\"72.4\""}]," and ",["$","code","code-6",{"children":"\"72.40\""}]," are equal. If no transaction matches, return ",["$","code","code-7",{"children":"404"}]," with\n",["$","code","code-8",{"children":"transaction_not_found"}],". If more than one transaction matches all fields, return ",["$","code","code-9",{"children":"409"}]," with\n",["$","code","code-10",{"children":"ambiguous_transaction"}],"; Revolut stops retrying and flags the case for investigation."]}],"\n",["$","p","p-2",{"children":["Revolut uses the acquiring institution ID collected during onboarding to route eligible\ntransactions. This routing identifier is not included in ",["$","code","code-0",{"children":"transaction_context"}],"."]}]]}]}] 158:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Request body for `POST /loyalty/apply`. Contains the partner-issued membership and program\nidentifiers recorded during enrolment or linking, plus the transaction context to match.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Request body for ",["$","code","code-0",{"children":"POST /loyalty/apply"}],". Contains the partner-issued membership and program\nidentifiers recorded during enrolment or linking, plus the transaction context to match."]}]]}]}] 183:T97b,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Revolut calls this after detecting an eligible Revolut-card transaction by a customer enrolled in your loyalty program. Locate the active membership using `member_id` and `program_id`, match the purchase from `transaction_context`, apply the loyalty card, and award the points earned. **Transaction matching:** `rrn` + `merchant_id` is the primary key; once you have a candidate, validate `transaction_at` (±24 hours) and require `total.currency` and the decimal numeric value of `total.amount` to match exactly. The `LoyaltyTransactionContext` schema documents the authoritative algorithm and collision handling. If `member_id` and `program_id` do not identify an active membership, return `404` with `membership_not_found`. If the membership is active but the purchase earns no points under your program rules, return `200` with `outcome` set to `no_points_earned` and `0` points. **Idempotency (this operation has side effects on your side):** Revolut sends one `Idempotency-Key` for each logical apply operation and reuses it for every retry. If the operation has already completed, return the original successful result without awarding points again. Reusing the same key with a different request body returns `409`. Do not store `202`, `429`, or `503` as the final result for a key; Revolut retries them with the same key. **Status semantics (these drive Revolut's retry behaviour):** - `200`: loyalty card applied; return the `outcome`, the points earned, and optionally the new balance (`0` points with `no_points_earned` when the purchase earns no points). - `202`: transaction not ready yet (settlement lag); Revolut retries, honouring `Retry-After`. - `404`: transaction or active membership definitively not found; Revolut stops retrying. - `409`: the `Idempotency-Key` was reused with a different request body, or the transaction match is ambiguous (`ambiguous_transaction`); Revolut stops retrying. - `410`: transaction existed but is void (refund/cancellation); Revolut stops. - `429` / `503`: temporary capacity issue; Revolut retries, honouring `Retry-After`. :::note Validate Revolut's credentials (mutual TLS (mTLS), JSON Web Signature (JWS), or OAuth 2.0) and reject any unauthenticated request with `401`. ::: 160:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$183",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["Revolut calls this after detecting an eligible Revolut-card transaction by a customer enrolled\nin your loyalty program. Locate the active membership using ","$L184"," and ","$L185",", match\nthe purchase from ","$L186",", apply the loyalty card, and award the points earned."]}],"\n","$L187","\n","$L188","\n","$L189","\n","$L18a","\n","$L18b","\n","$L18c"]}]}] 161:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Contract version Revolut is calling with. Currently ",["$","code","code-0",{"children":"2026-09-17"}],"."]}],"\n",["$","div","inlinealert-0",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["If you receive a version you do not implement, respond with ",["$","code","code-0",{"children":"400"}],"."]}]}]]}]]}]}] 162:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry.\n\n**Key lifecycle.** Only a `200` completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (`202` on `POST /loyalty/apply` only, `429`, and `503`)\nmust not complete or consume the key. Terminal failures (`400`, `401`, `403`, `404`,\n`409`, `410`) need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days.\n\n**Body comparison.** The same key with a different request body returns `409`.\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry."}],"\n",["$","p","p-1",{"children":[["$","strong","strong-0",{"children":"Key lifecycle."}]," Only a ",["$","code","code-0",{"children":"200"}]," completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (",["$","code","code-1",{"children":"202"}]," on ",["$","code","code-2",{"children":"POST /loyalty/apply"}]," only, ",["$","code","code-3",{"children":"429"}],", and ",["$","code","code-4",{"children":"503"}],")\nmust not complete or consume the key. Terminal failures (",["$","code","code-5",{"children":"400"}],", ",["$","code","code-6",{"children":"401"}],", ",["$","code","code-7",{"children":"403"}],", ",["$","code","code-8",{"children":"404"}],",\n",["$","code","code-9",{"children":"409"}],", ",["$","code","code-10",{"children":"410"}],") need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days."]}],"\n",["$","p","p-2",{"children":[["$","strong","strong-0",{"children":"Body comparison."}]," The same key with a different request body returns ",["$","code","code-0",{"children":"409"}],".\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict."]}]]}]}] 163:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. Echo it back in your response.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. Echo it back in your response."}]]}]}] 1c:["$","$37","retrieve-auth-server-metadata",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"200":{"description":"Your authorisation server metadata.","content":{"application/json":{"schema":{"type":"object","description":"Your authorisation server metadata (OpenID Connect Discovery 1.0, with the fields that\nRFC 8414, RFC 9126, and RFC 9207 add). The arrays must include the values described\nbelow; extra values and extra fields are allowed.\n","required":["issuer","authorization_endpoint","token_endpoint","pushed_authorization_request_endpoint","jwks_uri","response_types_supported","subject_types_supported","id_token_signing_alg_values_supported","code_challenge_methods_supported","require_pushed_authorization_requests","authorization_response_iss_parameter_supported","prompt_values_supported","grant_types_supported","token_endpoint_auth_methods_supported"],"properties":{"issuer":{"type":"string","format":"uri","description":"Your issuer URL, as registered during onboarding. It must match the `iss` claim of\nyour ID tokens and the `iss` parameter on your authorisation responses.\n","examples":["https://auth.partner.example"],"descriptionNode":"$L18d"},"authorization_endpoint":{"type":"string","format":"uri","description":"URL of your authorisation endpoint (`GET /oauth2/authorize` in this reference).","examples":["https://auth.partner.example/oauth2/authorize"],"descriptionNode":"$L18e"},"token_endpoint":{"type":"string","format":"uri","description":"URL of your token endpoint (`POST /oauth2/token` in this reference).","examples":["https://auth.partner.example/oauth2/token"],"descriptionNode":"$L18f"},"pushed_authorization_request_endpoint":{"type":"string","format":"uri","description":"URL of your PAR endpoint (`POST /oauth2/par` in this reference, RFC 9126).","examples":["https://auth.partner.example/oauth2/par"],"descriptionNode":"$L190"},"jwks_uri":{"type":"string","format":"uri","description":"URL of your JSON Web Key Set (JWKS, RFC 7517): the public keys that sign your ID\ntokens.\n","examples":["https://auth.partner.example/.well-known/jwks.json"],"descriptionNode":"$L191"},"response_types_supported":{"type":"array","items":{"type":"string"},"contains":{"const":"code"},"description":"Must include `code`.","descriptionNode":"$L192"},"subject_types_supported":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Subject identifier types you support, for example `public`.","descriptionNode":"$L193"},"id_token_signing_alg_values_supported":{"type":"array","items":{"type":"string"},"contains":{"const":"RS256"},"description":"Must include `RS256`, as OpenID Connect Discovery requires. `ES256` is also accepted;\nthe algorithm you sign with is agreed during onboarding.\n","descriptionNode":"$L194"},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"},"contains":{"const":"S256"},"description":"Must include `S256` (RFC 7636).","descriptionNode":"$L195"},"require_pushed_authorization_requests":{"type":"boolean","const":true,"description":"Must be `true`. Your authorisation endpoint accepts only requests pushed through PAR.","descriptionNode":"$L196"},"authorization_response_iss_parameter_supported":{"type":"boolean","const":true,"description":"Must be `true`. Every authorisation response carries `iss` (RFC 9207).","descriptionNode":"$L197"},"prompt_values_supported":{"type":"array","items":{"type":"string"},"allOf":[{"contains":{"const":"login"}},{"contains":{"const":"create"}}],"description":"Must include `login` and `create` (OpenID Connect Prompt Create).","descriptionNode":"$L198"},"grant_types_supported":{"type":"array","items":{"type":"string"},"contains":{"const":"authorization_code"},"description":"Must include `authorization_code`, and `client_credentials` if you implement\n`POST /loyalty/auto-enrol` or accept OAuth 2.0 on `POST /loyalty/apply`.\n","descriptionNode":"$L199"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"contains":{"enum":["client_secret_post","private_key_jwt","tls_client_auth","self_signed_tls_client_auth"]},"description":"Must include the client-authentication method registered for Revolut:\n`client_secret_post`, `private_key_jwt`, `tls_client_auth`, or\n`self_signed_tls_client_auth`. Revolut never uses `client_secret_basic`.\n","descriptionNode":"$L19a"},"token_endpoint_auth_signing_alg_values_supported":{"type":"array","items":{"type":"string"},"description":"Algorithms you accept for private key JWT client assertions. Required when\n`token_endpoint_auth_methods_supported` includes `private_key_jwt` (RFC 8414).\n","descriptionNode":"$L19b"},"mtls_endpoint_aliases":{"type":"object","additionalProperties":{"type":"string","format":"uri"},"description":"Endpoint URLs that require mTLS (RFC 8705), when mTLS is your registered\nclient-authentication method. Revolut uses them instead of the standard endpoint\nURLs.\n","descriptionNode":"$L19c"},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Scopes you support, for example `openid`, `loyalty.profile`, `loyalty.enrol`, and\n`loyalty.apply`.\n","descriptionNode":"$L19d"}},"descriptionNode":"$L19e"},"examples":{"metadata":{"summary":"Metadata for an authorisation server that accepts client secret and private key JWT client authentication","value":{"issuer":"https://auth.partner.example","authorization_endpoint":"https://auth.partner.example/oauth2/authorize","token_endpoint":"https://auth.partner.example/oauth2/token","pushed_authorization_request_endpoint":"https://auth.partner.example/oauth2/par","jwks_uri":"https://auth.partner.example/.well-known/jwks.json","response_types_supported":["code"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","ES256"],"code_challenge_methods_supported":["S256"],"require_pushed_authorization_requests":true,"authorization_response_iss_parameter_supported":true,"prompt_values_supported":["none","login","consent","create"],"grant_types_supported":["authorization_code","client_credentials"],"token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt"],"token_endpoint_auth_signing_alg_values_supported":["RS256","ES256"],"scopes_supported":["openid","loyalty.profile","loyalty.enrol","loyalty.apply"]}}}}},"descriptionNode":"$L19f"}},"requestBody":"$undefined","variantLabels":[],"children":["$L1a0","$L1a1"]}]}],false]}] 184:["$","code","code-0",{"children":"member_id"}] 185:["$","code","code-1",{"children":"program_id"}] 186:["$","code","code-2",{"children":"transaction_context"}] 187:["$","p","p-1",{"children":[["$","strong","strong-0",{"children":"Transaction matching:"}]," ",["$","code","code-0",{"children":"rrn"}]," + ",["$","code","code-1",{"children":"merchant_id"}]," is the primary key; once you have a\ncandidate, validate ",["$","code","code-2",{"children":"transaction_at"}]," (±24 hours) and require ",["$","code","code-3",{"children":"total.currency"}]," and the decimal\nnumeric value of ",["$","code","code-4",{"children":"total.amount"}]," to match exactly. The ",["$","code","code-5",{"children":"LoyaltyTransactionContext"}]," schema\ndocuments the authoritative algorithm and collision handling."]}] 188:["$","p","p-2",{"children":["If ",["$","code","code-0",{"children":"member_id"}]," and ",["$","code","code-1",{"children":"program_id"}]," do not identify an active membership, return ",["$","code","code-2",{"children":"404"}]," with\n",["$","code","code-3",{"children":"membership_not_found"}],". If the membership is active but the purchase earns no points under\nyour program rules, return ",["$","code","code-4",{"children":"200"}]," with ",["$","code","code-5",{"children":"outcome"}]," set to ",["$","code","code-6",{"children":"no_points_earned"}]," and ",["$","code","code-7",{"children":"0"}]," points."]}] 189:["$","p","p-3",{"children":[["$","strong","strong-0",{"children":"Idempotency (this operation has side effects on your side):"}]," Revolut sends one\n",["$","code","code-0",{"children":"Idempotency-Key"}]," for each logical apply operation and reuses it for every retry. If the\noperation has already completed, return the original successful result without awarding\npoints again. Reusing the same key with a different request body returns ",["$","code","code-1",{"children":"409"}],". Do not store\n",["$","code","code-2",{"children":"202"}],", ",["$","code","code-3",{"children":"429"}],", or ",["$","code","code-4",{"children":"503"}]," as the final result for a key; Revolut retries them with the same key."]}] 18a:["$","p","p-4",{"children":["$","strong","strong-0",{"children":"Status semantics (these drive Revolut's retry behaviour):"}]}] 18b:["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","code","code-0",{"children":"200"}],": loyalty card applied; return the ",["$","code","code-1",{"children":"outcome"}],", the points earned, and optionally the new balance (",["$","code","code-2",{"children":"0"}]," points with ",["$","code","code-3",{"children":"no_points_earned"}]," when the purchase earns no points)."]}],"\n",["$","li","li-1",{"children":[["$","code","code-0",{"children":"202"}],": transaction not ready yet (settlement lag); Revolut retries, honouring ",["$","code","code-1",{"children":"Retry-After"}],"."]}],"\n",["$","li","li-2",{"children":[["$","code","code-0",{"children":"404"}],": transaction or active membership definitively not found; Revolut stops retrying."]}],"\n",["$","li","li-3",{"children":[["$","code","code-0",{"children":"409"}],": the ",["$","code","code-1",{"children":"Idempotency-Key"}]," was reused with a different request body, or the transaction match is ambiguous (",["$","code","code-2",{"children":"ambiguous_transaction"}],"); Revolut stops retrying."]}],"\n",["$","li","li-4",{"children":[["$","code","code-0",{"children":"410"}],": transaction existed but is void (refund/cancellation); Revolut stops."]}],"\n",["$","li","li-5",{"children":[["$","code","code-0",{"children":"429"}]," / ",["$","code","code-1",{"children":"503"}],": temporary capacity issue; Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],"."]}],"\n"]}] 18c:["$","div","inlinealert-1",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["Validate Revolut's credentials (mutual TLS (mTLS), JSON Web Signature (JWS), or OAuth 2.0) and reject any unauthenticated request with ",["$","code","code-0",{"children":"401"}],"."]}]}]]}] 1a0:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"retrieve-auth-server-metadata","children":[["$L1a2","$undefined"],["$","$L18",null,{"id":"retrieve-auth-server-metadata"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/retrieve-auth-server-metadata.md"}]]}]}],"$undefined"]}] 1a6:T9e7,
fetch("https://passes.partner.example/revolut-wallet/.well-known/openid-configuration", {
  method: "GET",
  headers: {
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Request-Id": "__RP_TOK_1__"
  }
})
  .then(response => response.json())
  .then(data => console.log(data));
1a7:Tf84,
package main

import (
  "fmt"
  "net/http"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/.well-known/openid-configuration"
  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Request-Id", "__RP_TOK_1__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
1a8:T7f9,
import requests

url = "https://passes.partner.example/revolut-wallet/.well-known/openid-configuration"
headers = {
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Request-Id": "__RP_TOK_1__"
}

response = requests.get(url, headers=headers)
print(response.json())
1a9:T1725,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/.well-known/openid-configuration"))
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Request-Id", "__RP_TOK_1__")
      .GET(HttpRequest.BodyPublishers.noBody())
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
1aa:T15cf,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Get,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/.well-known/openid-configuration"),
  Headers =
  {
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Request-Id", "__RP_TOK_1__" },
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
1a1:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L1a3",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":false,"description":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n","schema":{"type":"string"},"example":"2026-09-17","descriptionNode":"$L1a4"},{"description":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.","name":"Request-Id","in":"header","required":false,"schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$L1a5"}],"requestBody":"$undefined","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$1c:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X GET \"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Request-Id: __RP_TOK_1__\"","templateHtml":"
curl -X GET \"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\" \\\n  -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n  -H \"Request-Id: __RP_TOK_1__\"
","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"fetch(\"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\", {\n method: \"GET\",\n headers: {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n }\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$1a6","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\"\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_1__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$1a7","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\"\nheaders = {\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n}\n\nresponse = requests.get(url, headers=headers)\nprint(response.json())","templateHtml":"$1a8","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\npublic class Main {\n public static void main(String[] args) {\n HttpClient client = HttpClient.newHttpClient();\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\"))\n .header(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n .header(\"Request-Id\", \"__RP_TOK_1__\")\n .GET(HttpRequest.BodyPublishers.noBody())\n .build();\n\n client.sendAsync(request, HttpResponse.BodyHandlers.ofString())\n .thenApply(HttpResponse::body)\n .thenAccept(System.out::println)\n .join();\n }\n}","templateHtml":"$1a9","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"using System.Net.Http;\nusing System.Net.Http.Headers;\n\nvar client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Get,\n RequestUri = new Uri(\"https://passes.partner.example/revolut-wallet/.well-known/openid-configuration\"),\n Headers =\n {\n { \"Revolut-Api-Version\", \"__RP_TOK_0__\" },\n { \"Request-Id\", \"__RP_TOK_1__\" },\n }\n};\n\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}","templateHtml":"$1aa","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"get","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/.well-known/openid-configuration","parameters":["$1a1:props:children:0:props:children:1:props:parameters:0","$1a1:props:children:0:props:children:1:props:parameters:1"]}],false],"$L1ab","$L1ac"]}]]}] 16f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] 1ad:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 171:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$1ad",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$L1ae",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$L1af","."]}],"\n","$L1b0","\n"]}],"\n","$L1b1"]}]}] 172:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] 173:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 1ab:["$","$L4a",null,{"exampleBlocks":{},"title":"Request body samples","headingAs":"h4"}] 1ac:["$","$L4b",null,{"exampleBlocks":{"200":{"application/json":{"variants":[{"key":"metadata","label":"Metadata for an authorisation server that accepts client secret and private key JWT client authentication","rawValue":"$1c:props:children:0:props:children:props:responses:200:content:application/json:examples:metadata:value","block":"$L1b2"}],"syncedPropertyName":"$undefined"}}},"headingAs":"h4"}] 1ae:["$","code","code-1",{"children":"kid"}] 1af:["$","code","code-2",{"children":"kid"}] 1b0:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] 1b1:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] 1a2:"Retrieve authorisation server metadata" 18d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your issuer URL, as registered during onboarding. It must match the `iss` claim of\nyour ID tokens and the `iss` parameter on your authorisation responses.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Your issuer URL, as registered during onboarding. It must match the ",["$","code","code-0",{"children":"iss"}]," claim of\nyour ID tokens and the ",["$","code","code-1",{"children":"iss"}]," parameter on your authorisation responses."]}]]}]}] 18e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URL of your authorisation endpoint (`GET /oauth2/authorize` in this reference).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["URL of your authorisation endpoint (",["$","code","code-0",{"children":"GET /oauth2/authorize"}]," in this reference)."]}]]}]}] 18f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URL of your token endpoint (`POST /oauth2/token` in this reference).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["URL of your token endpoint (",["$","code","code-0",{"children":"POST /oauth2/token"}]," in this reference)."]}]]}]}] 190:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URL of your PAR endpoint (`POST /oauth2/par` in this reference, RFC 9126).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["URL of your PAR endpoint (",["$","code","code-0",{"children":"POST /oauth2/par"}]," in this reference, RFC 9126)."]}]]}]}] 191:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URL of your JSON Web Key Set (JWKS, RFC 7517): the public keys that sign your ID\ntokens.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URL of your JSON Web Key Set (JWKS, RFC 7517): the public keys that sign your ID\ntokens."}]]}]}] 192:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include `code`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include ",["$","code","code-0",{"children":"code"}],"."]}]]}]}] 193:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Subject identifier types you support, for example `public`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Subject identifier types you support, for example ",["$","code","code-0",{"children":"public"}],"."]}]]}]}] 194:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include `RS256`, as OpenID Connect Discovery requires. `ES256` is also accepted;\nthe algorithm you sign with is agreed during onboarding.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include ",["$","code","code-0",{"children":"RS256"}],", as OpenID Connect Discovery requires. ",["$","code","code-1",{"children":"ES256"}]," is also accepted;\nthe algorithm you sign with is agreed during onboarding."]}]]}]}] 195:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include `S256` (RFC 7636).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include ",["$","code","code-0",{"children":"S256"}]," (RFC 7636)."]}]]}]}] 196:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must be `true`. Your authorisation endpoint accepts only requests pushed through PAR.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must be ",["$","code","code-0",{"children":"true"}],". Your authorisation endpoint accepts only requests pushed through PAR."]}]]}]}] 197:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must be `true`. Every authorisation response carries `iss` (RFC 9207).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must be ",["$","code","code-0",{"children":"true"}],". Every authorisation response carries ",["$","code","code-1",{"children":"iss"}]," (RFC 9207)."]}]]}]}] 198:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include `login` and `create` (OpenID Connect Prompt Create).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include ",["$","code","code-0",{"children":"login"}]," and ",["$","code","code-1",{"children":"create"}]," (OpenID Connect Prompt Create)."]}]]}]}] 199:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include `authorization_code`, and `client_credentials` if you implement\n`POST /loyalty/auto-enrol` or accept OAuth 2.0 on `POST /loyalty/apply`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include ",["$","code","code-0",{"children":"authorization_code"}],", and ",["$","code","code-1",{"children":"client_credentials"}]," if you implement\n",["$","code","code-2",{"children":"POST /loyalty/auto-enrol"}]," or accept OAuth 2.0 on ",["$","code","code-3",{"children":"POST /loyalty/apply"}],"."]}]]}]}] 19a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Must include the client-authentication method registered for Revolut:\n`client_secret_post`, `private_key_jwt`, `tls_client_auth`, or\n`self_signed_tls_client_auth`. Revolut never uses `client_secret_basic`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Must include the client-authentication method registered for Revolut:\n",["$","code","code-0",{"children":"client_secret_post"}],", ",["$","code","code-1",{"children":"private_key_jwt"}],", ",["$","code","code-2",{"children":"tls_client_auth"}],", or\n",["$","code","code-3",{"children":"self_signed_tls_client_auth"}],". Revolut never uses ",["$","code","code-4",{"children":"client_secret_basic"}],"."]}]]}]}] 19b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Algorithms you accept for private key JWT client assertions. Required when\n`token_endpoint_auth_methods_supported` includes `private_key_jwt` (RFC 8414).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Algorithms you accept for private key JWT client assertions. Required when\n",["$","code","code-0",{"children":"token_endpoint_auth_methods_supported"}]," includes ",["$","code","code-1",{"children":"private_key_jwt"}]," (RFC 8414)."]}]]}]}] 19c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Endpoint URLs that require mTLS (RFC 8705), when mTLS is your registered\nclient-authentication method. Revolut uses them instead of the standard endpoint\nURLs.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Endpoint URLs that require mTLS (RFC 8705), when mTLS is your registered\nclient-authentication method. Revolut uses them instead of the standard endpoint\nURLs."}]]}]}] 19d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scopes you support, for example `openid`, `loyalty.profile`, `loyalty.enrol`, and\n`loyalty.apply`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Scopes you support, for example ",["$","code","code-0",{"children":"openid"}],", ",["$","code","code-1",{"children":"loyalty.profile"}],", ",["$","code","code-2",{"children":"loyalty.enrol"}],", and\n",["$","code","code-3",{"children":"loyalty.apply"}],"."]}]]}]}] 19e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your authorisation server metadata (OpenID Connect Discovery 1.0, with the fields that\nRFC 8414, RFC 9126, and RFC 9207 add). The arrays must include the values described\nbelow; extra values and extra fields are allowed.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your authorisation server metadata (OpenID Connect Discovery 1.0, with the fields that\nRFC 8414, RFC 9126, and RFC 9207 add). The arrays must include the values described\nbelow; extra values and extra fields are allowed."}]]}]}] 19f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your authorisation server metadata.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your authorisation server metadata."}]]}]}] 1b3:T711,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Your OpenID Connect discovery document (OpenID Connect Discovery 1.0). Revolut reads it from `{issuer}/.well-known/openid-configuration`, using the issuer URL you register during onboarding, to find your Pushed Authorization Request (PAR), authorisation, and token endpoints and the keys that sign your ID tokens. Revolut then calls the URLs the document lists. Serve it publicly over HTTPS; it carries no secrets. Your document can list more values than this reference requires, for example extra grant types or `prompt` values. Revolut relies on the following: - PAR is mandatory (`require_pushed_authorization_requests: true`) and PKCE uses `S256`. - Authorisation responses carry `iss` (RFC 9207), so Revolut can tell your authorisation server apart from other partners' servers that share its redirect URI. - `prompt_values_supported` includes `login` and `create`. - `id_token_signing_alg_values_supported` includes `RS256`, as OpenID Connect Discovery requires. `ES256` is also accepted; the algorithm you sign with is agreed when Revolut's client is registered during onboarding. - `token_endpoint_auth_methods_supported` includes the client-authentication method registered for Revolut: `client_secret_post`, `private_key_jwt`, `tls_client_auth`, or `self_signed_tls_client_auth`. Revolut never uses `client_secret_basic`. - `grant_types_supported` includes `client_credentials` if you implement `POST /loyalty/auto-enrol` or accept OAuth 2.0 on `POST /loyalty/apply`. Keep the previous signing key in your JSON Web Key Set (JWKS) while you rotate keys, so ID tokens signed with it still verify. 1a3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$1b3",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["Your OpenID Connect discovery document (OpenID Connect Discovery 1.0). Revolut reads it\nfrom ",["$","code","code-0",{"children":"{issuer}/.well-known/openid-configuration"}],", using the issuer URL you register\nduring onboarding, to find your Pushed Authorization Request (PAR), authorisation, and\ntoken endpoints and the keys that sign your ID tokens. Revolut then calls the URLs the\ndocument lists. Serve it publicly over HTTPS; it carries no secrets."]}],"\n",["$","p","p-1",{"children":["Your document can list more values than this reference requires, for example extra grant\ntypes or ",["$","code","code-0",{"children":"prompt"}]," values. Revolut relies on the following:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":["PAR is mandatory (",["$","code","code-0",{"children":"require_pushed_authorization_requests: true"}],") and PKCE uses ","$L1b4","."]}],"\n","$L1b5","\n","$L1b6","\n","$L1b7","\n","$L1b8","\n","$L1b9","\n"]}],"\n","$L1ba"]}]}] 1a4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Contract version Revolut is calling with. Revolut sends it to your authorisation server\ntoo, but you may ignore it there: never reject a request because of this header."}]]}]}] 1a5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. You may ignore it; echoing it is optional on authorisation-server endpoints."}]]}]}] 1b4:["$","code","code-1",{"children":"S256"}] 1b5:["$","li","li-1",{"children":["Authorisation responses carry ",["$","code","code-0",{"children":"iss"}]," (RFC 9207), so Revolut can tell your authorisation\nserver apart from other partners' servers that share its redirect URI."]}] 1b6:["$","li","li-2",{"children":[["$","code","code-0",{"children":"prompt_values_supported"}]," includes ",["$","code","code-1",{"children":"login"}]," and ",["$","code","code-2",{"children":"create"}],"."]}] 1b7:["$","li","li-3",{"children":[["$","code","code-0",{"children":"id_token_signing_alg_values_supported"}]," includes ",["$","code","code-1",{"children":"RS256"}],", as OpenID Connect Discovery\nrequires. ",["$","code","code-2",{"children":"ES256"}]," is also accepted; the algorithm you sign with is agreed when Revolut's\nclient is registered during onboarding."]}] 1b8:["$","li","li-4",{"children":[["$","code","code-0",{"children":"token_endpoint_auth_methods_supported"}]," includes the client-authentication method\nregistered for Revolut: ",["$","code","code-1",{"children":"client_secret_post"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", ",["$","code","code-3",{"children":"tls_client_auth"}],", or\n",["$","code","code-4",{"children":"self_signed_tls_client_auth"}],". Revolut never uses ",["$","code","code-5",{"children":"client_secret_basic"}],"."]}] 1b9:["$","li","li-5",{"children":[["$","code","code-0",{"children":"grant_types_supported"}]," includes ",["$","code","code-1",{"children":"client_credentials"}]," if you implement\n",["$","code","code-2",{"children":"POST /loyalty/auto-enrol"}]," or accept OAuth 2.0 on ",["$","code","code-3",{"children":"POST /loyalty/apply"}],"."]}] 1ba:["$","p","p-2",{"children":"Keep the previous signing key in your JSON Web Key Set (JWKS) while you rotate keys, so\nID tokens signed with it still verify."}] 1bb:Tacc,
{
  "member_id": "member_987654",
  "program_id": "program_gb_rewards",
  "transaction_context": {
    "rrn": "123456789012",
    "merchant_id": "mer_example_01",
    "transaction_at": "2026-09-17T12:00:00.000Z",
    "total": {
      "amount": "72.40",
      "currency": "GBP"
    }
  }
}
174:["$","div","request-application/json-apply",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$1bb"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"member_id\": \"member_987654\",\n \"program_id\": \"program_gb_rewards\",\n \"transaction_context\": {\n \"rrn\": \"123456789012\",\n \"merchant_id\": \"mer_example_01\",\n \"transaction_at\": \"2026-09-17T12:00:00.000Z\",\n \"total\": {\n \"amount\": \"72.40\",\n \"currency\": \"GBP\"\n }\n }\n}"}]}]]}] 1bc:T821,
{
  "outcome": "applied",
  "points_earned": {
    "value": "72",
    "unit": "points"
  },
  "points_balance": {
    "value": "4892",
    "unit": "points"
  }
}
175:["$","div","200-application/json-points_earned",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$1bc"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"outcome\": \"applied\",\n \"points_earned\": {\n \"value\": \"72\",\n \"unit\": \"points\"\n },\n \"points_balance\": {\n \"value\": \"4892\",\n \"unit\": \"points\"\n }\n}"}]}]]}] 1bd:T54c,
{
  "outcome": "no_points_earned",
  "points_earned": {
    "value": "0",
    "unit": "points"
  }
}
176:["$","div","200-application/json-zero_points",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$1bd"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"outcome\": \"no_points_earned\",\n \"points_earned\": {\n \"value\": \"0\",\n \"unit\": \"points\"\n }\n}"}]}]]}] 177:["$","div","400-application/json-validation_error",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"validation_error\",\n  \"message\": \"Request validation failed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"validation_error\",\n \"message\": \"Request validation failed.\"\n}"}]}]]}] 178:["$","div","401-application/json-invalid_credentials",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"invalid_credentials\",\n  \"message\": \"Missing or invalid Revolut credentials.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"invalid_credentials\",\n \"message\": \"Missing or invalid Revolut credentials.\"\n}"}]}]]}] 179:["$","div","403-application/json-insufficient_scope",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"insufficient_scope\",\n  \"message\": \"The credential does not have the required scope.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"insufficient_scope\",\n \"message\": \"The credential does not have the required scope.\"\n}"}]}]]}] 17a:["$","div","404-application/json-transaction_not_found",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"transaction_not_found\",\n  \"message\": \"No transaction found for this rrn and merchant_id.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"transaction_not_found\",\n \"message\": \"No transaction found for this rrn and merchant_id.\"\n}"}]}]]}] 17b:["$","div","404-application/json-membership_not_found",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"membership_not_found\",\n  \"message\": \"No active membership found for this member_id and program_id.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"membership_not_found\",\n \"message\": \"No active membership found for this member_id and program_id.\"\n}"}]}]]}] 17c:["$","div","409-application/json-idempotency_conflict",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"idempotency_conflict\",\n  \"message\": \"The Idempotency-Key was already used with a different request body.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"idempotency_conflict\",\n \"message\": \"The Idempotency-Key was already used with a different request body.\"\n}"}]}]]}] 17d:["$","div","409-application/json-ambiguous_transaction",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"ambiguous_transaction\",\n  \"message\": \"Multiple transactions match this rrn, merchant_id, transaction_at, and total.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"ambiguous_transaction\",\n \"message\": \"Multiple transactions match this rrn, merchant_id, transaction_at, and total.\"\n}"}]}]]}] 17e:["$","div","410-application/json-transaction_void",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"transaction_void\",\n  \"message\": \"The transaction is void due to a refund or cancellation.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"transaction_void\",\n \"message\": \"The transaction is void due to a refund or cancellation.\"\n}"}]}]]}] 17f:["$","div","429-application/json-rate_limited",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"rate_limited\",\n  \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"rate_limited\",\n \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}"}]}]]}] 180:["$","div","503-application/json-temporarily_unavailable",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"temporarily_unavailable\",\n  \"message\": \"Service temporarily unavailable. Please retry.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"temporarily_unavailable\",\n \"message\": \"Service temporarily unavailable. Please retry.\"\n}"}]}]]}] 1be:T1ca4,
{
  "issuer": "https://auth.partner.example",
  "authorization_endpoint": "https://auth.partner.example/oauth2/authorize",
  "token_endpoint": "https://auth.partner.example/oauth2/token",
  "pushed_authorization_request_endpoint": "https://auth.partner.example/oauth2/par",
  "jwks_uri": "https://auth.partner.example/.well-known/jwks.json",
  "response_types_supported": [
    "code"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256",
    "ES256"
  ],
  "code_challenge_methods_supported": [
    "S256"
  ],
  "require_pushed_authorization_requests": true,
  "authorization_response_iss_parameter_supported": true,
  "prompt_values_supported": [
    "none",
    "login",
    "consent",
    "create"
  ],
  "grant_types_supported": [
    "authorization_code",
    "client_credentials"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "private_key_jwt"
  ],
  "token_endpoint_auth_signing_alg_values_supported": [
    "RS256",
    "ES256"
  ],
  "scopes_supported": [
    "openid",
    "loyalty.profile",
    "loyalty.enrol",
    "loyalty.apply"
  ]
}
1b2:["$","div","200-application/json-metadata",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$1be"}}]}]],"$L1bf"]}] 1c0:T476,{ "issuer": "https://auth.partner.example", "authorization_endpoint": "https://auth.partner.example/oauth2/authorize", "token_endpoint": "https://auth.partner.example/oauth2/token", "pushed_authorization_request_endpoint": "https://auth.partner.example/oauth2/par", "jwks_uri": "https://auth.partner.example/.well-known/jwks.json", "response_types_supported": [ "code" ], "subject_types_supported": [ "public" ], "id_token_signing_alg_values_supported": [ "RS256", "ES256" ], "code_challenge_methods_supported": [ "S256" ], "require_pushed_authorization_requests": true, "authorization_response_iss_parameter_supported": true, "prompt_values_supported": [ "none", "login", "consent", "create" ], "grant_types_supported": [ "authorization_code", "client_credentials" ], "token_endpoint_auth_methods_supported": [ "client_secret_post", "private_key_jwt" ], "token_endpoint_auth_signing_alg_values_supported": [ "RS256", "ES256" ], "scopes_supported": [ "openid", "loyalty.profile", "loyalty.enrol", "loyalty.apply" ] }1bf:["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"$1c0"}]}] 2a8:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 2b0:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 20:["$","$37","retrieve-loyalty-profile",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"200":{"description":"The membership's profile: its identifiers, current loyalty state, and the complete\npass envelope.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L1c1","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Response body for `GET /loyalty/profile`: the identifiers of the membership the customer\nenrolled in or linked, its current loyalty state, and the complete pass envelope.\nRevolut ignores unknown fields in this response, so you may add fields without breaking\ncompatibility.\n","required":["member_id","program_id","pass"],"properties":{"member_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the enrolled or linked membership.","examples":["9988776655"],"descriptionNode":"$L1c2"},"program_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the loyalty program.","examples":["program_gb_rewards"],"descriptionNode":"$L1c3"},"tier":{"type":"string","description":"Membership tier label.","examples":["Gold"],"descriptionNode":"$L1c4"},"points_balance":{"description":"Current points balance. Include it if you track balances.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:required","properties":{"value":{"type":"string","pattern":"^(0|[1-9]\\d*)(\\.\\d{1,6})?$","description":"Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:value:examples","descriptionNode":"$L1c5"},"unit":{"type":"string","minLength":1,"description":"Unit label for the balance (e.g. points, miles).","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:unit:examples","descriptionNode":"$L1c6"},"monetary_value":{"description":"Optional monetary equivalent of the points balance.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:required","properties":{"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Non-negative decimal amount as a string (e.g. \"72.40\").","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:amount:examples","descriptionNode":"$L1c7"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code (e.g. GBP, EUR, USD).","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:currency:examples","descriptionNode":"$L1c8"}},"descriptionNode":"$L1c9"}},"descriptionNode":"$L1ca"},"pass":{"description":"The complete loyalty pass envelope, in any format accepted by `POST /passes` on the\n[Wallet Partner API](https://developer.revolut.com/docs/api/revolut-wallet-partner). Its `partner_reference` is\nyour stable key for the pass when you push updates later. To apply one of your\n[templates](https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management), set\n`template_id` in the envelope; without it, the pass uses only the styling it carries.\n","required":["format"],"oneOf":[{"description":"A pass using Revolut's native semantic model, at creation. The root-level `template_id` selects\nthe render template, while the `rev_pass` object carries the pass type, semantic content, and\nrelevant-at timestamp.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":["partner_reference","version"],"properties":{"partner_reference":{"type":"string","maxLength":128,"description":"Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On `PUT /passes/{id}`, it must match the pass addressed in the path; a mismatch\nis rejected with `422`.\n","examples":["skyjet-2241-R7K92M"],"descriptionNode":"$L1cb"},"version":{"type":"integer","format":"int64","minimum":1,"description":"Your pass revision. Must be `1` on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with `409` (`stale_version`).\n","examples":[1],"descriptionNode":"$L1cc"}},"descriptionNode":"$L1cd"},{"type":"object","description":"Format discriminator for a Revolut native pass.","required":["format"],"properties":{"format":{"type":"string","enum":["revpass"],"description":"Pass format discriminator.","examples":["revpass"],"descriptionNode":"$L1ce"}},"descriptionNode":"$L1cf"},{"type":"object","description":"Optional Revolut template selection for a native pass at creation.","properties":{"template_id":{"description":"UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n`template_id` that doesn't exist under your Partner ID returns `404`\n(`template_not_found`); a `draft`, `terminating`, or `terminated` template returns\n`422` (`template_not_active`).\n","type":"string","format":"uuid","examples":["3f9a1c2e-8b7d-4e6a-9f10-2c3b4d5e6f70"],"descriptionNode":"$L1d0"}},"descriptionNode":"$L1d1"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":{"description":"Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a `template_id`, Revolut uses the template's holder mode at install time,\nand when there is no template either, the default `ONE_USER_ALL_DEVICES` applies.\n","type":"object","required":["holder_mode"],"properties":{"holder_mode":{"type":"string","enum":["MULTIPLE_HOLDERS","ONE_USER_ALL_DEVICES"],"description":"Who can install and hold the pass:\n\n| Value | Description |\n| ----- | ----------- |\n| `MULTIPLE_HOLDERS` | Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner. |\n| `ONE_USER_ALL_DEVICES` | A single customer holds the pass, across all of their devices. |\n","examples":["ONE_USER_ALL_DEVICES"],"descriptionNode":"$L1d2"}},"descriptionNode":"$L1d3"}},"descriptionNode":"$L1d4"},{"type":"object","required":["rev_pass"],"properties":{"rev_pass":{"description":"The content of a Revolut native pass at creation. The root-level `type` discriminator selects\nthe content structure: `semantics` for typed passes, `fields` with an optional `presentation`\nfor generic passes. The immutable `template_id`, when used, is set on the containing pass envelope.\n","required":["type"],"oneOf":[{"description":"The native content of a boarding pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":{"type":"string","format":"date-time","description":"When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted.\n","descriptionNode":"$L1d5"},"branding":{"description":"Optional visual branding for the pass.","type":"object","required":["brand_name","logo","background_image"],"oneOf":[{"required":["predefined_style"]},{"required":["colours"]}],"properties":{"brand_name":{"type":"string","minLength":1,"maxLength":25,"description":"Brand name displayed on the pass.","examples":["Acme Events"],"descriptionNode":"$L1d6"},"logo":{"description":"Logo image used by the pass.","type":"object","oneOf":[{"required":["asset_ref"],"not":{"required":["data"]}},{"required":["data","format"],"not":{"required":["asset_ref"]}}],"properties":{"asset_ref":{"type":"string","pattern":"^revasset://(public|private)/[0-9a-fA-F-]{36}$","description":"Reference to an image asset managed by Revolut.","examples":["revasset://public/3f9a1c2e-8b7d-4e6a-9f10-2c3b4d5e6f70"],"descriptionNode":"$L1d7"},"data":{"type":"string","contentEncoding":"base64","minLength":1,"description":"Base64-encoded image bytes.","examples":["iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="],"format":"byte","descriptionNode":"$L1d8"},"format":{"type":"string","enum":["image/png","image/jpeg","image/webp"],"description":"Image MIME type.","examples":["image/png"],"descriptionNode":"$L1d9"},"description":{"type":"string","description":"Accessible description of the image.","descriptionNode":"$L1da"}},"descriptionNode":"$L1db"},"background_image":{"description":"Background or hero image used by the pass.","type":"object","oneOf":["$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:0","$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:1"],"properties":{"asset_ref":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:asset_ref","data":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:data","format":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:format","description":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:description"},"descriptionNode":"$L1dc"},"predefined_style":{"type":"string","enum":["material","flat","glass"],"description":"Predefined visual style for the pass.","examples":["material"],"descriptionNode":"$L1dd"},"colours":{"description":"Explicit colour scheme for the pass.","type":"object","required":["primary","secondary","background","text_primary","text_secondary","label_primary","label_secondary"],"properties":{"primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"background":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"text_primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"text_secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"label_primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"label_secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"descriptionNode":"$L1de"}},"descriptionNode":"$L1df"},"issuer":{"description":"Optional issuer information displayed on the pass.","type":"object","required":["issuer_id","issuer_full_name","issuer_display_name"],"properties":{"issuer_id":{"type":"string","format":"uuid","readOnly":true,"description":"Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies.\n","examples":["6cb8d90c-61d2-4e1c-a6ad-8a5f62418411"],"descriptionNode":"$L1e0"},"issuer_full_name":{"type":"string","minLength":1,"maxLength":50,"description":"Full legal name of the issuer.","examples":["Acme Events Ltd"],"descriptionNode":"$L1e1"},"issuer_display_name":{"type":"string","minLength":1,"maxLength":25,"description":"Display name of the issuer.","examples":["Acme Events"],"descriptionNode":"$L1e2"}},"descriptionNode":"$L1e3"},"barcodes":{"type":"array","description":"Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes.\n","items":{"type":"object","description":"A machine-readable barcode displayed on a Revolut native pass.","required":["format","encoding","type","static_payload"],"properties":{"format":{"type":"string","enum":["qr","pdf417","aztec","code128"],"description":"Symbology used to render the barcode.","examples":["qr"],"descriptionNode":"$L1e4"},"encoding":{"type":"string","enum":["ISO-8859-1"],"description":"Character encoding used for `static_payload`.","examples":["ISO-8859-1"],"descriptionNode":"$L1e5"},"type":{"type":"string","enum":["static"],"description":"Payload type. Only static barcode payloads are supported.","examples":["static"],"descriptionNode":"$L1e6"},"static_payload":{"type":"string","minLength":1,"description":"Static value encoded in the barcode.","examples":["ACME-FUTURE-FESTIVAL-0001"],"descriptionNode":"$L1e7"}},"descriptionNode":"$L1e8"},"descriptionNode":"$L1e9"},"actions":{"type":"array","description":"Buttons rendered on the pass.","items":{"type":"object","description":"A button rendered on the pass (e.g. \"Open website\", \"Get directions\").","required":["id","type","label","url"],"properties":{"id":{"type":"string","description":"Unique identifier for the action within this pass.","descriptionNode":"$L1ea"},"type":{"type":"string","description":"Documented values: `open_external_url`. External URL domain needs to be registered at onboarding.","descriptionNode":"$L1eb"},"label":{"description":"Display label for the button, with optional localisation.","type":"object","required":["default"],"properties":{"default":{"type":"string","description":"Fallback text when no localisation matches.","descriptionNode":"$L1ec"},"localisation_key":{"type":"string","description":"Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the `default` text.\n","descriptionNode":"$L1ed"}},"descriptionNode":"$L1ee"},"url":{"type":"string","format":"uri","description":"Target URL for `open_external_url` actions.","descriptionNode":"$L1ef"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Relative prominence of this action (5 = primary, 1 = least prominent).","descriptionNode":"$L1f0"}},"descriptionNode":"$L1f1"},"descriptionNode":"$L1f2"},"triggers":{"type":"array","description":"Context-aware notifications that nudge the customer.","items":{"type":"object","description":"A context-aware notification that nudges the customer (e.g. proximity alert, time before event).","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique identifier for the trigger within this pass.","descriptionNode":"$L1f3"},"type":{"type":"string","description":"Documented values: `proximity_time`, `proximity_geo_location`, `field_change`.","descriptionNode":"$L1f4"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Relative prominence of this trigger (5 = high, 1 = low).","descriptionNode":"$L1f5"},"time_target":{"type":"string","description":"Reference to a datetime field (e.g. `flight.scheduled_departure_at`).","descriptionNode":"$L1f6"},"time_offset":{"type":"string","description":"ISO 8601 duration before the target (e.g. `PT1H` for 1 hour before departure).","descriptionNode":"$L1f7"},"location_targets":{"type":"array","description":"Geographic coordinates for proximity-based triggers.","items":{"type":"object","description":"Geographic coordinates (WGS 84).","required":["lat","lng"],"properties":{"lat":{"type":"number","format":"double","description":"Latitude in decimal degrees.","descriptionNode":"$L1f8"},"lng":{"type":"number","format":"double","description":"Longitude in decimal degrees.","descriptionNode":"$L1f9"}},"descriptionNode":"$L1fa"},"descriptionNode":"$L1fb"},"radius_meters":{"type":"integer","minimum":0,"description":"Radius in meters around the `location_targets` coordinates for the proximity alert.","descriptionNode":"$L1fc"},"field_target":{"type":"string","description":"Name of the semantic field to watch for changes (e.g. `boarding.gate`).","descriptionNode":"$L1fd"},"presentation":{"description":"How the trigger is presented to the customer (notification, tile).","type":"object","required":["presentation_type","title","description"],"properties":{"presentation_type":{"type":"string","description":"Documented values: `notification`, `tile`.","descriptionNode":"$L1fe"},"title":{"description":"Title text for the notification or tile, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L1ff"},"description":{"description":"Body text for the notification or tile, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L200"}},"descriptionNode":"$L201"}},"descriptionNode":"$L202"},"descriptionNode":"$L203"}},"descriptionNode":"$L204"},{"type":"object","required":["type","semantics"],"properties":{"type":{"type":"string","enum":["boarding_pass"],"description":"Pass type discriminator.","examples":["boarding_pass"],"descriptionNode":"$L205"},"semantics":{"type":"object","description":"Semantic tags for a boarding pass.","required":["passenger","flight","booking"],"properties":{"passenger":{"description":"Passenger details.","type":"object","required":["full_name"],"properties":{"full_name":{"type":"string","description":"Full name of the passenger as it appears on the boarding pass.","examples":["Leonhard Nyquist"],"descriptionNode":"$L206"},"fare_class":{"type":"string","description":"Human-readable fare class (e.g. Economy, Business, First).","examples":["Economy"],"descriptionNode":"$L207"},"fare_class_code":{"type":"string","description":"IATA fare class code (single letter, e.g. Y for Economy, J for Business).","examples":["Y"],"descriptionNode":"$L208"},"frequent_flyer_program":{"type":"string","description":"Name of the frequent flyer program the passenger belongs to.","descriptionNode":"$L209"},"frequent_flyer_number":{"type":"string","description":"Membership number within the frequent flyer program.","descriptionNode":"$L20a"}},"descriptionNode":"$L20b"},"flight":{"description":"Flight details.","type":"object","required":["flight_number","carrier_code","departure_airport","arrival_airport","scheduled_departure_at","scheduled_arrival_at"],"properties":{"flight_number":{"type":"string","description":"Flight number without the carrier code (e.g. 2241, not SJ2241).","examples":["2241"],"descriptionNode":"$L20c"},"carrier_code":{"type":"string","description":"IATA (2-character) or ICAO (3-character) carrier code.","pattern":"^[A-Z0-9]{2,3}$","examples":["W6","WZZ"],"descriptionNode":"$L20d"},"carrier_name":{"type":"string","description":"Display name of the operating carrier.","examples":["SkyJet Airlines"],"descriptionNode":"$L20e"},"operating_carrier_code":{"type":"string","description":"IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from `carrier_code`).","pattern":"^[A-Z0-9]{2,3}$","descriptionNode":"$L20f"},"departure_airport":{"description":"Departure airport.","type":"object","required":["iata"],"properties":{"iata":{"type":"string","description":"IATA airport code (3 uppercase letters).","pattern":"^[A-Z]{3}$","examples":["LTN"],"descriptionNode":"$L210"},"name":{"type":"string","description":"Full name of the airport (e.g. London Luton Airport).","descriptionNode":"$L211"},"city":{"type":"string","description":"City where the airport is located.","descriptionNode":"$L212"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","descriptionNode":"$L213"},"terminal":{"type":"string","description":"Terminal identifier at the airport.","examples":["1"],"descriptionNode":"$L214"}},"descriptionNode":"$L215"},"arrival_airport":{"description":"Arrival airport.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:required","properties":{"iata":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:iata","name":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:name","city":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:city","country_code":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:country_code","terminal":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:terminal"},"descriptionNode":"$L216"},"scheduled_departure_at":{"type":"string","format":"date-time","description":"Scheduled departure time, UTC, ISO 8601.","descriptionNode":"$L217"},"scheduled_arrival_at":{"type":"string","format":"date-time","description":"Scheduled arrival time, UTC, ISO 8601.","descriptionNode":"$L218"},"aircraft_type":{"type":"string","description":"IATA aircraft type code (e.g. A320, B738).","examples":["A320"],"descriptionNode":"$L219"}},"descriptionNode":"$L21a"},"boarding":{"description":"Boarding details (gate, seat, boarding time).","type":"object","properties":{"gate":{"type":"string","description":"Boarding gate at the departure airport.","examples":["B22"],"descriptionNode":"$L21b"},"boarding_at":{"type":"string","format":"date-time","description":"Scheduled boarding time, UTC, ISO 8601.","descriptionNode":"$L21c"},"boarding_group":{"type":"string","description":"Boarding group or zone (airline-specific, e.g. A, B, 1, 2).","descriptionNode":"$L21d"},"sequence_number":{"type":"string","description":"Boarding sequence number assigned to the passenger.","descriptionNode":"$L21e"},"seat":{"type":"string","description":"Assigned seat number (e.g. 14C, 22A).","examples":["14C"],"descriptionNode":"$L21f"},"seat_class":{"type":"string","description":"Seat class label (e.g. Economy, Premium Economy, Business).","examples":["Economy"],"descriptionNode":"$L220"}},"descriptionNode":"$L221"},"booking":{"description":"Booking details (PNR, ticket number).","type":"object","required":["pnr"],"properties":{"pnr":{"type":"string","description":"Passenger Name Record, the booking reference from the airline's reservation system.","examples":["R7K92M"],"descriptionNode":"$L222"},"ticket_number":{"type":"string","description":"13-digit IATA ticket number.","pattern":"^[0-9]{13}$","descriptionNode":"$L223"},"booking_reference":{"type":"string","description":"Alternative booking reference (e.g. agency or GDS reference), if different from the PNR.","descriptionNode":"$L224"}},"descriptionNode":"$L225"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":{"type":"string","format":"date-time","description":"Start of the pass validity period, UTC, ISO 8601.","descriptionNode":"$L226"},"valid_until":{"type":"string","format":"date-time","description":"End of the pass validity period, UTC, ISO 8601.","descriptionNode":"$L227"}},"descriptionNode":"$L228"}},"descriptionNode":"$L229"}}}],"descriptionNode":"$L22a"},{"description":"The native content of an event pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L22b"},{"type":"object","required":["type","semantics"],"properties":{"type":{"type":"string","enum":["event_pass"],"description":"Pass type discriminator.","examples":["event_pass"],"descriptionNode":"$L22c"},"semantics":{"type":"object","description":"Semantic tags for an event pass.","required":["event","venue"],"properties":{"event":{"description":"Event details (name, category, dates).","type":"object","required":["name","held_on","starts_at"],"properties":{"name":{"type":"string","description":"Name of the event.","examples":["The Blue Lights: Live"],"descriptionNode":"$L22d"},"category":{"type":"string","description":"Documented values: `concert`, `sport`, `conference`, `theatre`, `festival`, `race`, `other`.","descriptionNode":"$L22e"},"edition":{"type":"string","description":"Edition or iteration of a recurring event (e.g. 2026, Season 5).","descriptionNode":"$L22f"},"held_on":{"type":"string","format":"date","description":"Calendar day of the event (use `starts_at` for the precise start time).","descriptionNode":"$L230"},"starts_at":{"type":"string","format":"date-time","description":"Start time of the event, UTC, ISO 8601.","descriptionNode":"$L231"},"ends_at":{"type":"string","format":"date-time","description":"End time of the event, UTC, ISO 8601.","descriptionNode":"$L232"},"doors_open_at":{"type":"string","format":"date-time","description":"Time the venue doors open, UTC, ISO 8601.","descriptionNode":"$L233"}},"descriptionNode":"$L234"},"venue":{"description":"Venue details (name, address, seat).","type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the venue.","examples":["Grand Arena"],"descriptionNode":"$L235"},"address":{"type":"string","description":"Street address of the venue.","descriptionNode":"$L236"},"city":{"type":"string","description":"City where the venue is located.","descriptionNode":"$L237"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","descriptionNode":"$L238"},"coordinates":{"description":"Geographic coordinates of the venue.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:required","properties":{"lat":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:properties:lat","lng":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:properties:lng"},"descriptionNode":"$L239"},"gate":{"type":"string","description":"Entrance gate at the venue.","descriptionNode":"$L23a"},"section":{"type":"string","description":"Section or block within the venue (e.g. Block 112, Section C).","descriptionNode":"$L23b"},"row":{"type":"string","description":"Row identifier within the section.","descriptionNode":"$L23c"},"seat":{"type":"string","description":"Seat number within the row.","descriptionNode":"$L23d"}},"descriptionNode":"$L23e"},"ticket":{"description":"Ticket details (number, type, booking reference).","type":"object","properties":{"number":{"type":"string","description":"Ticket number or barcode value.","descriptionNode":"$L23f"},"booking_reference":{"type":"string","description":"Booking or order reference for the ticket purchase.","descriptionNode":"$L240"},"type":{"type":"string","description":"Documented values: `general_admission`, `seated`, `vip`, `backstage`, `staff`.","descriptionNode":"$L241"}},"descriptionNode":"$L242"},"participant":{"description":"Participant details (name, company, role).","type":"object","properties":{"full_name":{"type":"string","description":"Full name of the participant.","descriptionNode":"$L243"},"company":{"type":"string","description":"Company or organisation the participant represents.","descriptionNode":"$L244"},"role":{"type":"string","description":"Role or title at the event (e.g. Speaker, Attendee, Volunteer).","descriptionNode":"$L245"}},"descriptionNode":"$L246"},"organiser":{"description":"Organiser details.","type":"object","properties":{"name":{"type":"string","description":"Name of the organising company or individual.","descriptionNode":"$L247"}},"descriptionNode":"$L248"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_from","valid_until":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_until"},"descriptionNode":"$L249"}},"descriptionNode":"$L24a"}}}],"descriptionNode":"$L24b"},{"description":"The native content of a loyalty pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L24c"},{"type":"object","required":["type","semantics"],"properties":{"type":{"type":"string","enum":["loyalty_pass"],"description":"Pass type discriminator.","examples":["loyalty_pass"],"descriptionNode":"$L24d"},"semantics":{"type":"object","description":"Semantic tags for a loyalty pass.","required":["member","loyalty"],"properties":{"member":{"description":"Member details (name, ID, join date).","type":"object","required":["full_name","member_id"],"properties":{"full_name":{"type":"string","description":"Full name of the loyalty program member.","examples":["James Hamming"],"descriptionNode":"$L24e"},"member_id":{"type":"string","description":"Membership number or ID within the loyalty program.","examples":["9988776655"],"descriptionNode":"$L24f"},"member_since_on":{"type":"string","format":"date","description":"Date the member joined the programme.","descriptionNode":"$L250"}},"descriptionNode":"$L251"},"loyalty":{"description":"Loyalty program details (tier, balance, next reward).","type":"object","required":["program_name"],"properties":{"program_name":{"type":"string","description":"Display name of the loyalty program.","examples":["BrightPoints"],"descriptionNode":"$L252"},"tier":{"type":"string","description":"Current tier level of the member (e.g. Gold, Silver, Bronze).","examples":["Gold"],"descriptionNode":"$L253"},"tier_progress":{"description":"Progress towards the next tier.","type":"object","properties":{"current":{"type":"string","description":"Current progress value as a string (e.g. points earned this period).","descriptionNode":"$L254"},"target":{"type":"string","description":"Target value required to reach the next tier, as a string.","descriptionNode":"$L255"},"unit":{"type":"string","description":"Unit of measurement for the progress values (e.g. points, stays, flights).","examples":["points"],"descriptionNode":"$L256"}},"descriptionNode":"$L257"},"points_balance":{"description":"Current points balance.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:required","properties":{"value":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:value","unit":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:unit","monetary_value":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:monetary_value"},"descriptionNode":"$L258"},"next_reward":{"description":"Next reward the member can unlock.","type":"object","properties":{"description":{"type":"string","description":"Human-readable description of the reward (e.g. \"Free coffee voucher\").","descriptionNode":"$L259"},"points_required":{"type":"string","description":"Points required to unlock the reward, as a string.","examples":["5000"],"descriptionNode":"$L25a"}},"descriptionNode":"$L25b"}},"descriptionNode":"$L25c"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_from","valid_until":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_until"},"descriptionNode":"$L25d"}},"descriptionNode":"$L25e"}}}],"descriptionNode":"$L25f"},{"description":"The native content of a generic pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L260"},{"type":"object","required":["type","fields"],"properties":{"type":{"type":"string","enum":["generic_pass"],"description":"Pass type discriminator.","examples":["generic_pass"],"descriptionNode":"$L261"},"fields":{"type":"array","minItems":1,"description":"Custom fields available to the selected presentation layout.","items":{"type":"object","description":"Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field `id` is referenced from the pass `presentation` configuration. When neither the pass\nnor its template provides a presentation, every field must provide `data_category` and\n`semantic_type`; `importance` remains optional.\n","required":["id","label","value"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"Unique identifier for a custom field within a generic pass.","examples":["departure_gate"],"descriptionNode":"$L262"},"label":{"description":"Display label for the field, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L263"},"value":{"description":"Display value for the field, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L264"},"data_type":{"type":"string","description":"Interpretation of the field value. The `value` is always carried as a string (or a\nlocalised string map); `data_type` defines how Revolut parses and renders it:\n\n| Value | Wire representation |\n|-------|---------------------|\n| `text` | Any string. |\n| `number` | Plain decimal number as a string, e.g. `1400` or `1400.50` (no thousands separators; rendered per `number_style`). |\n| `currency` | Plain decimal amount as a string, e.g. `1400.50`, with `currency_code` (ISO 4217) alongside. |\n| `date_time` | RFC 3339 UTC timestamp, e.g. `2026-09-15T19:00:00.000Z`. |\n| `uri` | Absolute HTTPS URI string, e.g. `https://example.com/offer`. |\n\nConditional rules: `currency` requires `currency_code`; `number_style` applies only to\n`number`; `date_style`, `time_style`, `is_relative`, and `ignores_time_zone` apply only\nto `date_time`.\n","enum":["text","number","currency","date_time","uri"],"default":"text","examples":["text"],"descriptionNode":"$L265"},"data_category":{"description":"Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional.\n","type":"string","enum":["identity","status","time","location","verification","attribute","governance"],"examples":["identity","status","time","location","verification","attribute","governance"],"descriptionNode":"$L266"},"semantic_type":{"description":"Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional.\n","type":"string","minLength":1,"examples":["passenger.full_name","event.name","participant.full_name","venue.coordinates.lat","loyalty.points_balance.value"],"descriptionNode":"$L267"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering.\n","examples":[5],"descriptionNode":"$L268"},"text_alignment":{"type":"string","description":"Preferred text alignment when the renderer supports it.","enum":["left","center","right","natural"],"examples":["natural"],"descriptionNode":"$L269"},"date_style":{"type":"string","description":"Preferred date display style for a `date_time` value.","enum":["none","short","medium","long","full"],"examples":["medium"],"descriptionNode":"$L26a"},"time_style":{"type":"string","description":"Preferred time display style for a `date_time` value.","enum":["none","short","medium","long","full"],"examples":["short"],"descriptionNode":"$L26b"},"is_relative":{"type":"boolean","description":"Whether a date and time value should be presented relative to the current time.","descriptionNode":"$L26c"},"ignores_time_zone":{"type":"boolean","description":"Whether a date and time value should be shown without time-zone conversion.","descriptionNode":"$L26d"},"number_style":{"type":"string","description":"Preferred display style for a numeric value.","enum":["decimal","percent","scientific","spell_out"],"examples":["decimal"],"descriptionNode":"$L26e"},"currency_code":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for a `currency` value. Required when `data_type` is `currency`.","examples":["EUR"],"descriptionNode":"$L26f"}},"descriptionNode":"$L270"},"descriptionNode":"$L271"},"presentation":{"description":"Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field.\n","type":"object","oneOf":[{"type":"object","description":"Wrapper for a positional presentation.","required":["positional"],"properties":{"positional":{"type":"object","description":"Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a `field_id` or `join_field_id` when this layout is used.\n","required":["primary"],"properties":{"header":{"description":"Optional header section row, displayed before the primary section.","type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","description":"A field placed in a positional presentation row.","required":["field_id"],"properties":{"field_id":{"description":"ID of the primary field displayed in this slot.","type":"string","pattern":"^[a-zA-Z0-9_-]+$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:id:examples","descriptionNode":"$L272"},"join_field_id":{"description":"Optional ID of a field joined to the primary field in the same slot.","type":"string","pattern":"^[a-zA-Z0-9_-]+$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:id:examples","descriptionNode":"$L273"},"alignment":{"type":"string","description":"Horizontal placement of the slot within its row.","enum":["full","start","middle","end"],"examples":["start"],"descriptionNode":"$L274"}},"descriptionNode":"$L275"}}},"descriptionNode":"$L276"},"primary":{"description":"Primary section row, displayed after the header when provided.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L277"},"secondary":{"type":"array","minItems":1,"maxItems":3,"description":"Optional secondary section rows, in display order.","items":{"type":"object","description":"A row in a positional generic-pass presentation.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L278"},"descriptionNode":"$L279"},"footer":{"description":"Footer section row, displayed last.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L27a"}},"descriptionNode":"$L27b"}},"descriptionNode":"$L27c"}],"descriptionNode":"$L27d"}}}],"descriptionNode":"$L27e"}],"discriminator":{"propertyName":"type","mapping":{"boarding_pass":"#/components/schemas/RevPassCreateBoardingContent","event_pass":"#/components/schemas/RevPassCreateEventContent","loyalty_pass":"#/components/schemas/RevPassCreateLoyaltyContent","generic_pass":"#/components/schemas/RevPassCreateGenericContent"}},"descriptionNode":"$L27f"}}}],"descriptionNode":"$L280"},{"description":"A pass created from a `.pkpass` file, provided as a base64-encoded string.\nRevolut parses the `pass.json` inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the `.pkpass` are used where possible.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L281"},{"type":"object","description":"Format-specific fields for a `.pkpass` file supplied as a base64-encoded string.","required":["format","pkpass"],"properties":{"format":{"type":"string","enum":["pkpass_base64"],"description":"Pass format discriminator.","examples":["pkpass_base64"],"descriptionNode":"$L282"},"pkpass":{"type":"string","contentEncoding":"base64","contentMediaType":"application/vnd.apple.pkpass","description":"The raw `.pkpass` file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB.\n","examples":["UEsDBAoAAAAAAGhVmVQAAAAAAAAAAAAAAAAJAAAA..."],"format":"byte","descriptionNode":"$L283"}},"descriptionNode":"$L284"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":{"description":"UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A `template_id` that\ndoesn't exist under your Partner ID returns `404` (`template_not_found`); a `draft`,\n`terminating`, or `terminated` template returns `422` (`template_not_active`).\n","type":"string","format":"uuid","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:2:properties:template_id:examples","descriptionNode":"$L285"}},"descriptionNode":"$L286"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L287"}],"descriptionNode":"$L288"},{"description":"A pass created from a `.pkpass` file, provided via a download URL. Revolut fetches\nthe `.pkpass` file from the URL, parses the `pass.json` inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid `.pkpass` file.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L289"},{"type":"object","description":"Format-specific fields for a `.pkpass` file supplied through a download URL.","required":["format","pkpass_url"],"properties":{"format":{"type":"string","enum":["pkpass_url"],"description":"Pass format discriminator.","examples":["pkpass_url"],"descriptionNode":"$L28a"},"pkpass_url":{"type":"string","format":"uri","pattern":"^https://","description":"Public HTTPS URL from which Revolut downloads the `.pkpass` file. Must return a valid\n`.pkpass` (signed ZIP archive).\n\nRevolut fetches the URL server-side under these rules:\n\n- HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\n and link-local IP ranges are not fetched).\n- At most 3 redirects, each to an HTTPS URL.\n- The response must be `200` with a valid `pkpass` body of at most 10 MB, fully received\n within 10 seconds.\n- The URL must remain valid for at least 24 hours after submission so Revolut can download\n and re-download it, including across retries.\n\nIf the download fails any of these rules, the request is rejected with `422`\n(`pkpass_url_download_failed`).\n","examples":["https://partner.example/passes/skyjet-2241.pkpass"],"descriptionNode":"$L28b"}},"descriptionNode":"$L28c"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:2:properties:template_id"},"descriptionNode":"$L28d"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L28e"}],"descriptionNode":"$L28f"},{"description":"A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n`classId` must reference the supplied class resource.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L290"},{"type":"object","description":"Format-specific fields for a Wallet Objects JSON pass.","required":["format","walletobjects"],"properties":{"format":{"type":"string","enum":["walletobjects_json"],"description":"Pass format discriminator.","examples":["walletobjects_json"],"descriptionNode":"$L291"},"walletobjects":{"type":"object","required":["type","class","object"],"properties":{"type":{"type":"string","enum":["event_ticket","flight","generic","gift_card","loyalty","offer","transit"],"description":"The Wallet Objects resource family used to validate and render both resources.\n\n| Value | Description |\n| ----- | ----------- |\n| `event_ticket` | An `EventTicketClass` and `EventTicketObject` pair. |\n| `flight` | A `FlightClass` and `FlightObject` pair. |\n| `generic` | A `GenericClass` and `GenericObject` pair. |\n| `gift_card` | A `GiftCardClass` and `GiftCardObject` pair. |\n| `loyalty` | A `LoyaltyClass` and `LoyaltyObject` pair. |\n| `offer` | An `OfferClass` and `OfferObject` pair. |\n| `transit` | A `TransitClass` and `TransitObject` pair. |","examples":["loyalty"],"descriptionNode":"$L292"},"class":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Identifier of the supplied Wallet Objects class resource.","descriptionNode":"$L293"}},"additionalProperties":true,"description":"The Wallet Objects class resource for the selected `type`. Its `id` must match the\nsupplied object's `classId`; a mismatch is rejected with `422`\n(`walletobjects_class_mismatch`).\n","descriptionNode":"$L294"},"object":{"type":"object","required":["id","classId"],"properties":{"id":{"type":"string","description":"Identifier of the supplied Wallet Objects object resource.","descriptionNode":"$L295"},"classId":{"type":"string","description":"Identifier of the supplied class resource; must match `class.id`.","descriptionNode":"$L296"}},"additionalProperties":true,"description":"The Wallet Objects object resource for the selected `type`.","descriptionNode":"$L297"}},"description":"The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against `type`,\nparses them, and renders the pass natively.\n","examples":[{"type":"loyalty","class":{"id":"1234567890123456789.brightpoints_loyalty","issuerName":"BrightPoints","programName":"BrightPoints Rewards","programLogo":{"sourceUri":{"uri":"https://example.com/brightpoints-logo.png"}},"reviewStatus":"APPROVED"},"object":{"id":"1234567890123456789.member_9988776655","classId":"1234567890123456789.brightpoints_loyalty","state":"ACTIVE","barcode":{"type":"QR_CODE","value":"9988776655"},"accountName":"Alan Maxwell","accountId":"9988776655"}}],"descriptionNode":"$L298"}},"descriptionNode":"$L299"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:2:properties:template_id"},"descriptionNode":"$L29a"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L29b"}],"descriptionNode":"$L29c"}],"discriminator":{"propertyName":"format","mapping":{"revpass":"#/components/schemas/RevPassCreateEnvelope","pkpass_base64":"#/components/schemas/PkPassBase64","pkpass_url":"#/components/schemas/PkPassUrl","walletobjects_json":"#/components/schemas/WalletObjectsPass"}},"descriptionNode":"$L29d"}},"descriptionNode":"$L29e"},"examples":{"profile":{"summary":"Enrolled membership profile, with a pass that uses your template","value":{"member_id":"9988776655","program_id":"program_gb_rewards","tier":"Gold","points_balance":{"value":"4820","unit":"points"},"pass":{"format":"revpass","partner_reference":"brightpoints-9988776655","version":1,"template_id":"3f6c2a9e-8b71-4d0c-9e52-7a1b4c8d2e60","rev_pass":{"type":"loyalty_pass","semantics":{"member":{"full_name":"Alan Maxwell","member_id":"9988776655","member_since_on":"2026-09-17"},"loyalty":{"program_name":"BrightPoints","tier":"Gold","points_balance":{"value":"4820","unit":"points"}}}}}}}}}},"descriptionNode":"$L29f"},"400":{"description":"Malformed request or invalid body.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2a0","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L2a1"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L2a2"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L2a3"}},"descriptionNode":"$L2a4"},"examples":"$22:props:children:0:props:children:props:responses:400:content:application/json:examples"}},"descriptionNode":"$L2a5"},"401":{"description":"No access token, or an expired or invalid one. For a request without a token, send a\nbare `Bearer` challenge with no error code (RFC 6750, section 3.1). For an expired or\ninvalid token (not issued for this enrolment or link, expired, or failing\nvalidation), send `invalid_token`. Signal the error in `WWW-Authenticate`; the JSON\nbody is optional.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2a6","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Bearer challenge carrying the OAuth 2.0 error code (RFC 6750).","example":"Bearer error=\"invalid_token\", error_description=\"The access token expired\"","descriptionNode":"$L2a7","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"$2a8","required":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:properties:error:examples","descriptionNode":"$L2a9"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$L2aa"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$L2ab"}},"descriptionNode":"$L2ac"},"examples":{"invalid_token":{"value":{"error":"invalid_token","error_description":"The access token expired or is invalid."}}}}},"descriptionNode":"$L2ad"},"403":{"description":"The access token lacks the `loyalty.profile` scope (`insufficient_scope`). Signal the\nerror in `WWW-Authenticate` (RFC 6750); the JSON body is optional.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2ae","schema":{"type":"string"}},"WWW-Authenticate":{"description":"Bearer challenge carrying the OAuth 2.0 error code and the required scope (RFC 6750).","example":"Bearer error=\"insufficient_scope\", scope=\"loyalty.profile\"","descriptionNode":"$L2af","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"$2b0","required":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"error":{"type":"string","description":"Machine-readable OAuth 2.0 error code; see the table above.","examples":"$1f:props:children:0:props:children:props:responses:400:content:application/json:schema:properties:error:examples","descriptionNode":"$L2b1"},"error_description":{"type":"string","description":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n","descriptionNode":"$L2b2"},"error_uri":{"type":"string","format":"uri","description":"URI of a page with more information about the error (RFC 6749, section 5.2).","descriptionNode":"$L2b3"}},"descriptionNode":"$L2b4"},"examples":{"insufficient_scope":{"value":{"error":"insufficient_scope","error_description":"The access token does not have the loyalty.profile scope."}}}}},"descriptionNode":"$L2b5"},"404":{"description":"No active membership found for this access token. Revolut stops retrying.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2b6","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L2b7"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L2b8"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L2b9"}},"descriptionNode":"$L2ba"},"examples":{"membership_not_found":{"value":{"code":"membership_not_found","message":"No active membership found for this token."}}}}},"descriptionNode":"$L2bb"},"429":{"description":"Rate limit exceeded. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2bc","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L2bd","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L2be"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L2bf"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L2c0"}},"descriptionNode":"$L2c1"},"examples":"$22:props:children:0:props:children:props:responses:429:content:application/json:examples"}},"descriptionNode":"$L2c2"},"503":{"description":"Temporary capacity issue. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L2c3","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L2c4","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L2c5"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L2c6"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L2c7"}},"descriptionNode":"$L2c8"},"examples":"$22:props:children:0:props:children:props:responses:503:content:application/json:examples"}},"descriptionNode":"$L2c9"}},"requestBody":"$undefined","variantLabels":[],"children":["$L2ca","$L2cb"]}]}],false]}] 2ca:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"retrieve-loyalty-profile","children":[["$L2cc","$undefined"],["$","$L18",null,{"id":"retrieve-loyalty-profile"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/retrieve-loyalty-profile.md"}]]}]}],"$undefined"]}] 2d0:T4c0,
curl -X GET "https://passes.partner.example/revolut-wallet/loyalty/profile" \
  -H "Authorization: Bearer <yourAccessToken>" \
  -H "Revolut-Api-Version: __RP_TOK_0__" \
  -H "Request-Id: __RP_TOK_1__"
2d1:Tb06,
fetch("https://passes.partner.example/revolut-wallet/loyalty/profile", {
  method: "GET",
  headers: {
    "Authorization": "Bearer <yourAccessToken>",
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Request-Id": "__RP_TOK_1__"
  }
})
  .then(response => response.json())
  .then(data => console.log(data));
2d2:T1158,
package main

import (
  "fmt"
  "net/http"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/loyalty/profile"
  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("Authorization", "Bearer <yourAccessToken>")
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Request-Id", "__RP_TOK_1__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
2d3:T916,
import requests

url = "https://passes.partner.example/revolut-wallet/loyalty/profile"
headers = {
  "Authorization": "Bearer <yourAccessToken>",
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Request-Id": "__RP_TOK_1__"
}

response = requests.get(url, headers=headers)
print(response.json())
2d4:T18f6,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/loyalty/profile"))
      .header("Authorization", "Bearer <yourAccessToken>")
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Request-Id", "__RP_TOK_1__")
      .GET(HttpRequest.BodyPublishers.noBody())
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
2d5:T172a,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Get,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/loyalty/profile"),
  Headers =
  {
    { "Authorization", "Bearer <yourAccessToken>" },
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Request-Id", "__RP_TOK_1__" },
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
2cb:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L2cd",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":true,"description":"Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n","schema":{"type":"string","enum":"$15a:props:children:0:props:children:1:props:parameters:0:schema:enum"},"example":"2026-09-17","descriptionNode":"$L2ce"},{"name":"Request-Id","in":"header","required":false,"description":"Revolut's correlation ID for this request. Echo it back in your response.","schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$L2cf"}],"requestBody":"$undefined","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$20:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X GET \"https://passes.partner.example/revolut-wallet/loyalty/profile\" \\\n -H \"Authorization: Bearer \" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Request-Id: __RP_TOK_1__\"","templateHtml":"$2d0","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"fetch(\"https://passes.partner.example/revolut-wallet/loyalty/profile\", {\n method: \"GET\",\n headers: {\n \"Authorization\": \"Bearer \",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n }\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$2d1","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/loyalty/profile\"\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.Header.Add(\"Authorization\", \"Bearer \")\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_1__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$2d2","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/loyalty/profile\"\nheaders = {\n \"Authorization\": \"Bearer \",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Request-Id\": \"__RP_TOK_1__\"\n}\n\nresponse = requests.get(url, headers=headers)\nprint(response.json())","templateHtml":"$2d3","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\npublic class Main {\n public static void main(String[] args) {\n HttpClient client = HttpClient.newHttpClient();\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://passes.partner.example/revolut-wallet/loyalty/profile\"))\n .header(\"Authorization\", \"Bearer \")\n .header(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n .header(\"Request-Id\", \"__RP_TOK_1__\")\n .GET(HttpRequest.BodyPublishers.noBody())\n .build();\n\n client.sendAsync(request, HttpResponse.BodyHandlers.ofString())\n .thenApply(HttpResponse::body)\n .thenAccept(System.out::println)\n .join();\n }\n}","templateHtml":"$2d4","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"using System.Net.Http;\nusing System.Net.Http.Headers;\n\nvar client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Get,\n RequestUri = new Uri(\"https://passes.partner.example/revolut-wallet/loyalty/profile\"),\n Headers =\n {\n { \"Authorization\", \"Bearer \" },\n { \"Revolut-Api-Version\", \"__RP_TOK_0__\" },\n { \"Request-Id\", \"__RP_TOK_1__\" },\n }\n};\n\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}","templateHtml":"$2d5","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"get","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/loyalty/profile","parameters":["$2cb:props:children:0:props:children:1:props:parameters:0","$2cb:props:children:0:props:children:1:props:parameters:1"]}],"$L2d6"],"$L2d7","$L2d8"]}]]}] 2da:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 2d6:["$","$L89",null,{"security":[{"accessToken":[]}],"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$L2d9"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$2da","descriptionNode":"$L2db"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":"$4:6:props:children:props:children:2:props:children:2:props:children:0:props:children:2:props:authorization:oauth2:flows","descriptionNode":"$L2dc"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$L2dd"}}}] 2d7:["$","$L4a",null,{"exampleBlocks":{},"title":"Request body samples","headingAs":"h4"}] 2d8:["$","$L4b",null,{"exampleBlocks":{"200":{"application/json":{"variants":[{"key":"profile","label":"Enrolled membership profile, with a pass that uses your template","rawValue":"$20:props:children:0:props:children:props:responses:200:content:application/json:examples:profile:value","block":"$L2de"}],"syncedPropertyName":"$undefined"}},"400":{"application/json":{"variants":[{"key":"validation_error","label":"validation_error","rawValue":"$22:props:children:0:props:children:props:responses:400:content:application/json:examples:validation_error:value","block":"$L2df"}],"syncedPropertyName":"$undefined"}},"401":{"application/json":{"variants":[{"key":"invalid_token","label":"invalid_token","rawValue":"$20:props:children:0:props:children:props:responses:401:content:application/json:examples:invalid_token:value","block":"$L2e0"}],"syncedPropertyName":"$undefined"}},"403":{"application/json":{"variants":[{"key":"insufficient_scope","label":"insufficient_scope","rawValue":"$20:props:children:0:props:children:props:responses:403:content:application/json:examples:insufficient_scope:value","block":"$L2e1"}],"syncedPropertyName":"$undefined"}},"404":{"application/json":{"variants":[{"key":"membership_not_found","label":"membership_not_found","rawValue":"$20:props:children:0:props:children:props:responses:404:content:application/json:examples:membership_not_found:value","block":"$L2e2"}],"syncedPropertyName":"$undefined"}},"429":{"application/json":{"variants":[{"key":"rate_limited","label":"rate_limited","rawValue":"$22:props:children:0:props:children:props:responses:429:content:application/json:examples:rate_limited:value","block":"$L2e3"}],"syncedPropertyName":"$undefined"}},"503":{"application/json":{"variants":[{"key":"temporarily_unavailable","label":"temporarily_unavailable","rawValue":"$22:props:children:0:props:children:props:responses:503:content:application/json:examples:temporarily_unavailable:value","block":"$L2e4"}],"syncedPropertyName":"$undefined"}}},"headingAs":"h4"}] 2cc:"Retrieve a loyalty profile" 1c1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 1c2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the enrolled or linked membership.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the enrolled or linked membership."}]]}]}] 1c3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the loyalty program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the loyalty program."}]]}]}] 1c4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership tier label.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership tier label."}]]}]}] 1c5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso ",["$","code","code-0",{"children":"\"1500\""}]," and ",["$","code","code-1",{"children":"\"1500.00\""}]," are equivalent."]}]]}]}] 1c6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit label for the balance (e.g. points, miles).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit label for the balance (e.g. points, miles)."}]]}]}] 1c7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Non-negative decimal amount as a string (e.g. \"72.40\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Non-negative decimal amount as a string (e.g. \"72.40\")."}]]}]}] 1c8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code (e.g. GBP, EUR, USD).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 4217 currency code (e.g. GBP, EUR, USD)."}]]}]}] 1c9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional monetary equivalent of the points balance.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional monetary equivalent of the points balance."}]]}]}] 1ca:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance. Include it if you track balances.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current points balance. Include it if you track balances."}]]}]}] 1cb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On `PUT /passes/{id}`, it must match the pass addressed in the path; a mismatch\nis rejected with `422`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On ",["$","code","code-0",{"children":"PUT /passes/{id}"}],", it must match the pass addressed in the path; a mismatch\nis rejected with ",["$","code","code-1",{"children":"422"}],"."]}]]}]}] 1cc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your pass revision. Must be `1` on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with `409` (`stale_version`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Your pass revision. Must be ",["$","code","code-0",{"children":"1"}]," on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with ",["$","code","code-1",{"children":"409"}]," (",["$","code","code-2",{"children":"stale_version"}],")."]}]]}]}] 1cd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 1ce:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 1cf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format discriminator for a Revolut native pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Format discriminator for a Revolut native pass."}]]}]}] 1d0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n`template_id` that doesn't exist under your Partner ID returns `404`\n(`template_not_found`); a `draft`, `terminating`, or `terminated` template returns\n`422` (`template_not_active`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n",["$","code","code-0",{"children":"template_id"}]," that doesn't exist under your Partner ID returns ",["$","code","code-1",{"children":"404"}],"\n(",["$","code","code-2",{"children":"template_not_found"}],"); a ",["$","code","code-3",{"children":"draft"}],", ",["$","code","code-4",{"children":"terminating"}],", or ",["$","code","code-5",{"children":"terminated"}]," template returns\n",["$","code","code-6",{"children":"422"}]," (",["$","code","code-7",{"children":"template_not_active"}],")."]}]]}]}] 1d1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional Revolut template selection for a native pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional Revolut template selection for a native pass at creation."}]]}]}] 1d2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Who can install and hold the pass:\n\n| Value | Description |\n| ----- | ----------- |\n| `MULTIPLE_HOLDERS` | Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner. |\n| `ONE_USER_ALL_DEVICES` | A single customer holds the pass, across all of their devices. |\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Who can install and hold the pass:"}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"MULTIPLE_HOLDERS"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"ONE_USER_ALL_DEVICES"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"A single customer holds the pass, across all of their devices.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 1d3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a `template_id`, Revolut uses the template's holder mode at install time,\nand when there is no template either, the default `ONE_USER_ALL_DEVICES` applies.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a ",["$","code","code-0",{"children":"template_id"}],", Revolut uses the template's holder mode at install time,\nand when there is no template either, the default ",["$","code","code-1",{"children":"ONE_USER_ALL_DEVICES"}]," applies."]}]]}]}] 1d4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 1d5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted."}]]}]}] 1d6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Brand name displayed on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Brand name displayed on the pass."}]]}]}] 1d7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Reference to an image asset managed by Revolut.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Reference to an image asset managed by Revolut."}]]}]}] 1d8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Base64-encoded image bytes.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Base64-encoded image bytes."}]]}]}] 1d9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Image MIME type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Image MIME type."}]]}]}] 1da:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Accessible description of the image.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Accessible description of the image."}]]}]}] 1db:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Logo image used by the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Logo image used by the pass."}]]}]}] 1dc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Background or hero image used by the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Background or hero image used by the pass."}]]}]}] 1dd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Predefined visual style for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Predefined visual style for the pass."}]]}]}] 1de:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Explicit colour scheme for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Explicit colour scheme for the pass."}]]}]}] 1df:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional visual branding for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional visual branding for the pass."}]]}]}] 1e0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies."}]]}]}] 1e1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full legal name of the issuer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full legal name of the issuer."}]]}]}] 1e2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the issuer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the issuer."}]]}]}] 1e3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional issuer information displayed on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional issuer information displayed on the pass."}]]}]}] 1e4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Symbology used to render the barcode.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Symbology used to render the barcode."}]]}]}] 1e5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Character encoding used for `static_payload`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Character encoding used for ",["$","code","code-0",{"children":"static_payload"}],"."]}]]}]}] 1e6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Payload type. Only static barcode payloads are supported.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Payload type. Only static barcode payloads are supported."}]]}]}] 1e7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Static value encoded in the barcode.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Static value encoded in the barcode."}]]}]}] 1e8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A machine-readable barcode displayed on a Revolut native pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A machine-readable barcode displayed on a Revolut native pass."}]]}]}] 1e9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes."}]]}]}] 1ea:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for the action within this pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for the action within this pass."}]]}]}] 1eb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `open_external_url`. External URL domain needs to be registered at onboarding.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"open_external_url"}],". External URL domain needs to be registered at onboarding."]}]]}]}] 1ec:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fallback text when no localisation matches.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fallback text when no localisation matches."}]]}]}] 1ed:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the `default` text.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the ",["$","code","code-0",{"children":"default"}]," text."]}]]}]}] 1ee:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display label for the button, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display label for the button, with optional localisation."}]]}]}] 1ef:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Target URL for `open_external_url` actions.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Target URL for ",["$","code","code-0",{"children":"open_external_url"}]," actions."]}]]}]}] 1f0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Relative prominence of this action (5 = primary, 1 = least prominent).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Relative prominence of this action (5 = primary, 1 = least prominent)."}]]}]}] 1f1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A button rendered on the pass (e.g. \"Open website\", \"Get directions\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A button rendered on the pass (e.g. \"Open website\", \"Get directions\")."}]]}]}] 1f2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Buttons rendered on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Buttons rendered on the pass."}]]}]}] 1f3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for the trigger within this pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for the trigger within this pass."}]]}]}] 1f4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `proximity_time`, `proximity_geo_location`, `field_change`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"proximity_time"}],", ",["$","code","code-1",{"children":"proximity_geo_location"}],", ",["$","code","code-2",{"children":"field_change"}],"."]}]]}]}] 1f5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Relative prominence of this trigger (5 = high, 1 = low).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Relative prominence of this trigger (5 = high, 1 = low)."}]]}]}] 1f6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Reference to a datetime field (e.g. `flight.scheduled_departure_at`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Reference to a datetime field (e.g. ",["$","code","code-0",{"children":"flight.scheduled_departure_at"}],")."]}]]}]}] 1f7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 8601 duration before the target (e.g. `PT1H` for 1 hour before departure).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["ISO 8601 duration before the target (e.g. ",["$","code","code-0",{"children":"PT1H"}]," for 1 hour before departure)."]}]]}]}] 1f8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Latitude in decimal degrees.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Latitude in decimal degrees."}]]}]}] 1f9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Longitude in decimal degrees.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Longitude in decimal degrees."}]]}]}] 1fa:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates (WGS 84).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates (WGS 84)."}]]}]}] 1fb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates for proximity-based triggers.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates for proximity-based triggers."}]]}]}] 1fc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Radius in meters around the `location_targets` coordinates for the proximity alert.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Radius in meters around the ",["$","code","code-0",{"children":"location_targets"}]," coordinates for the proximity alert."]}]]}]}] 1fd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the semantic field to watch for changes (e.g. `boarding.gate`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Name of the semantic field to watch for changes (e.g. ",["$","code","code-0",{"children":"boarding.gate"}],")."]}]]}]}] 1fe:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `notification`, `tile`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"notification"}],", ",["$","code","code-1",{"children":"tile"}],"."]}]]}]}] 1ff:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Title text for the notification or tile, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Title text for the notification or tile, with optional localisation."}]]}]}] 200:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Body text for the notification or tile, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Body text for the notification or tile, with optional localisation."}]]}]}] 201:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","How the trigger is presented to the customer (notification, tile).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"How the trigger is presented to the customer (notification, tile)."}]]}]}] 202:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A context-aware notification that nudges the customer (e.g. proximity alert, time before event).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A context-aware notification that nudges the customer (e.g. proximity alert, time before event)."}]]}]}] 203:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Context-aware notifications that nudge the customer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Context-aware notifications that nudge the customer."}]]}]}] 204:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 205:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 206:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the passenger as it appears on the boarding pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the passenger as it appears on the boarding pass."}]]}]}] 207:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable fare class (e.g. Economy, Business, First).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable fare class (e.g. Economy, Business, First)."}]]}]}] 208:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA fare class code (single letter, e.g. Y for Economy, J for Business).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA fare class code (single letter, e.g. Y for Economy, J for Business)."}]]}]}] 209:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the frequent flyer program the passenger belongs to.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the frequent flyer program the passenger belongs to."}]]}]}] 20a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership number within the frequent flyer program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership number within the frequent flyer program."}]]}]}] 20b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Passenger details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Passenger details."}]]}]}] 20c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Flight number without the carrier code (e.g. 2241, not SJ2241).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Flight number without the carrier code (e.g. 2241, not SJ2241)."}]]}]}] 20d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA (2-character) or ICAO (3-character) carrier code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA (2-character) or ICAO (3-character) carrier code."}]]}]}] 20e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the operating carrier.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the operating carrier."}]]}]}] 20f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from `carrier_code`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from ",["$","code","code-0",{"children":"carrier_code"}],")."]}]]}]}] 210:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA airport code (3 uppercase letters).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA airport code (3 uppercase letters)."}]]}]}] 211:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the airport (e.g. London Luton Airport).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the airport (e.g. London Luton Airport)."}]]}]}] 212:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","City where the airport is located.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"City where the airport is located."}]]}]}] 213:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 3166-1 alpha-2 country code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 3166-1 alpha-2 country code."}]]}]}] 214:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Terminal identifier at the airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Terminal identifier at the airport."}]]}]}] 215:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Departure airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Departure airport."}]]}]}] 216:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Arrival airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Arrival airport."}]]}]}] 217:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled departure time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled departure time, UTC, ISO 8601."}]]}]}] 218:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled arrival time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled arrival time, UTC, ISO 8601."}]]}]}] 219:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA aircraft type code (e.g. A320, B738).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA aircraft type code (e.g. A320, B738)."}]]}]}] 21a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Flight details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Flight details."}]]}]}] 21b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding gate at the departure airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding gate at the departure airport."}]]}]}] 21c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled boarding time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled boarding time, UTC, ISO 8601."}]]}]}] 21d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding group or zone (airline-specific, e.g. A, B, 1, 2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding group or zone (airline-specific, e.g. A, B, 1, 2)."}]]}]}] 21e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding sequence number assigned to the passenger.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding sequence number assigned to the passenger."}]]}]}] 21f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Assigned seat number (e.g. 14C, 22A).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Assigned seat number (e.g. 14C, 22A)."}]]}]}] 220:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seat class label (e.g. Economy, Premium Economy, Business).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Seat class label (e.g. Economy, Premium Economy, Business)."}]]}]}] 221:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding details (gate, seat, boarding time).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding details (gate, seat, boarding time)."}]]}]}] 222:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Passenger Name Record, the booking reference from the airline's reservation system.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Passenger Name Record, the booking reference from the airline's reservation system."}]]}]}] 223:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","13-digit IATA ticket number.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"13-digit IATA ticket number."}]]}]}] 224:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Alternative booking reference (e.g. agency or GDS reference), if different from the PNR.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Alternative booking reference (e.g. agency or GDS reference), if different from the PNR."}]]}]}] 225:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Booking details (PNR, ticket number).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Booking details (PNR, ticket number)."}]]}]}] 226:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Start of the pass validity period, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Start of the pass validity period, UTC, ISO 8601."}]]}]}] 227:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","End of the pass validity period, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"End of the pass validity period, UTC, ISO 8601."}]]}]}] 228:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 229:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for a boarding pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for a boarding pass."}]]}]}] 22a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a boarding pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a boarding pass at creation."}]]}]}] 22b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 22c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 22d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the event.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the event."}]]}]}] 22e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `concert`, `sport`, `conference`, `theatre`, `festival`, `race`, `other`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"concert"}],", ",["$","code","code-1",{"children":"sport"}],", ",["$","code","code-2",{"children":"conference"}],", ",["$","code","code-3",{"children":"theatre"}],", ",["$","code","code-4",{"children":"festival"}],", ",["$","code","code-5",{"children":"race"}],", ",["$","code","code-6",{"children":"other"}],"."]}]]}]}] 22f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Edition or iteration of a recurring event (e.g. 2026, Season 5).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Edition or iteration of a recurring event (e.g. 2026, Season 5)."}]]}]}] 230:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Calendar day of the event (use `starts_at` for the precise start time).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Calendar day of the event (use ",["$","code","code-0",{"children":"starts_at"}]," for the precise start time)."]}]]}]}] 231:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Start time of the event, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Start time of the event, UTC, ISO 8601."}]]}]}] 232:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","End time of the event, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"End time of the event, UTC, ISO 8601."}]]}]}] 233:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Time the venue doors open, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Time the venue doors open, UTC, ISO 8601."}]]}]}] 234:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Event details (name, category, dates).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Event details (name, category, dates)."}]]}]}] 235:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the venue."}]]}]}] 236:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Street address of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Street address of the venue."}]]}]}] 237:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","City where the venue is located.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"City where the venue is located."}]]}]}] 238:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 3166-1 alpha-2 country code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 3166-1 alpha-2 country code."}]]}]}] 239:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates of the venue."}]]}]}] 23a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Entrance gate at the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Entrance gate at the venue."}]]}]}] 23b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Section or block within the venue (e.g. Block 112, Section C).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Section or block within the venue (e.g. Block 112, Section C)."}]]}]}] 23c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Row identifier within the section.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Row identifier within the section."}]]}]}] 23d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seat number within the row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Seat number within the row."}]]}]}] 23e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Venue details (name, address, seat).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Venue details (name, address, seat)."}]]}]}] 23f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Ticket number or barcode value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Ticket number or barcode value."}]]}]}] 240:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Booking or order reference for the ticket purchase.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Booking or order reference for the ticket purchase."}]]}]}] 241:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `general_admission`, `seated`, `vip`, `backstage`, `staff`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"general_admission"}],", ",["$","code","code-1",{"children":"seated"}],", ",["$","code","code-2",{"children":"vip"}],", ",["$","code","code-3",{"children":"backstage"}],", ",["$","code","code-4",{"children":"staff"}],"."]}]]}]}] 242:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Ticket details (number, type, booking reference).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Ticket details (number, type, booking reference)."}]]}]}] 243:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the participant.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the participant."}]]}]}] 244:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Company or organisation the participant represents.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Company or organisation the participant represents."}]]}]}] 245:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Role or title at the event (e.g. Speaker, Attendee, Volunteer).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Role or title at the event (e.g. Speaker, Attendee, Volunteer)."}]]}]}] 246:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Participant details (name, company, role).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Participant details (name, company, role)."}]]}]}] 247:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the organising company or individual.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the organising company or individual."}]]}]}] 248:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Organiser details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Organiser details."}]]}]}] 249:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 24a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for an event pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for an event pass."}]]}]}] 24b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of an event pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of an event pass at creation."}]]}]}] 24c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 24d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 24e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the loyalty program member.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the loyalty program member."}]]}]}] 24f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership number or ID within the loyalty program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership number or ID within the loyalty program."}]]}]}] 250:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Date the member joined the programme.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Date the member joined the programme."}]]}]}] 251:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Member details (name, ID, join date).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Member details (name, ID, join date)."}]]}]}] 252:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the loyalty program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the loyalty program."}]]}]}] 253:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current tier level of the member (e.g. Gold, Silver, Bronze).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current tier level of the member (e.g. Gold, Silver, Bronze)."}]]}]}] 254:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current progress value as a string (e.g. points earned this period).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current progress value as a string (e.g. points earned this period)."}]]}]}] 255:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Target value required to reach the next tier, as a string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Target value required to reach the next tier, as a string."}]]}]}] 256:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit of measurement for the progress values (e.g. points, stays, flights).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit of measurement for the progress values (e.g. points, stays, flights)."}]]}]}] 257:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Progress towards the next tier.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Progress towards the next tier."}]]}]}] 258:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current points balance."}]]}]}] 259:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable description of the reward (e.g. \"Free coffee voucher\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable description of the reward (e.g. \"Free coffee voucher\")."}]]}]}] 25a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Points required to unlock the reward, as a string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Points required to unlock the reward, as a string."}]]}]}] 25b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Next reward the member can unlock.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Next reward the member can unlock."}]]}]}] 25c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Loyalty program details (tier, balance, next reward).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Loyalty program details (tier, balance, next reward)."}]]}]}] 25d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 25e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for a loyalty pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for a loyalty pass."}]]}]}] 25f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a loyalty pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a loyalty pass at creation."}]]}]}] 260:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 261:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 262:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for a custom field within a generic pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for a custom field within a generic pass."}]]}]}] 263:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display label for the field, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display label for the field, with optional localisation."}]]}]}] 264:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display value for the field, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display value for the field, with optional localisation."}]]}]}] 265:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Interpretation of the field value. The `value` is always carried as a string (or a\nlocalised string map); `data_type` defines how Revolut parses and renders it:\n\n| Value | Wire representation |\n|-------|---------------------|\n| `text` | Any string. |\n| `number` | Plain decimal number as a string, e.g. `1400` or `1400.50` (no thousands separators; rendered per `number_style`). |\n| `currency` | Plain decimal amount as a string, e.g. `1400.50`, with `currency_code` (ISO 4217) alongside. |\n| `date_time` | RFC 3339 UTC timestamp, e.g. `2026-09-15T19:00:00.000Z`. |\n| `uri` | Absolute HTTPS URI string, e.g. `https://example.com/offer`. |\n\nConditional rules: `currency` requires `currency_code`; `number_style` applies only to\n`number`; `date_style`, `time_style`, `is_relative`, and `ignores_time_zone` apply only\nto `date_time`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Interpretation of the field value. The ",["$","code","code-0",{"children":"value"}]," is always carried as a string (or a\nlocalised string map); ",["$","code","code-1",{"children":"data_type"}]," defines how Revolut parses and renders it:"]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Wire representation","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"text"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Any string.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"number"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Plain decimal number as a string, e.g. ",["$","code","code-0",{"children":"1400"}]," or ",["$","code","code-1",{"children":"1400.50"}]," (no thousands separators; rendered per ",["$","code","code-2",{"children":"number_style"}],")."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"currency"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Plain decimal amount as a string, e.g. ",["$","code","code-0",{"children":"1400.50"}],", with ",["$","code","code-1",{"children":"currency_code"}]," (ISO 4217) alongside."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"date_time"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["RFC 3339 UTC timestamp, e.g. ",["$","code","code-0",{"children":"2026-09-15T19:00:00.000Z"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"uri"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Absolute HTTPS URI string, e.g. ",["$","code","code-0",{"children":"https://example.com/offer"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}],"\n",["$","p","p-1",{"children":["Conditional rules: ",["$","code","code-0",{"children":"currency"}]," requires ",["$","code","code-1",{"children":"currency_code"}],"; ",["$","code","code-2",{"children":"number_style"}]," applies only to\n",["$","code","code-3",{"children":"number"}],"; ",["$","code","code-4",{"children":"date_style"}],", ",["$","code","code-5",{"children":"time_style"}],", ",["$","code","code-6",{"children":"is_relative"}],", and ",["$","code","code-7",{"children":"ignores_time_zone"}]," apply only\nto ","$L2e5","."]}]]}]}] 266:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional."}]]}]}] 267:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional."}]]}]}] 268:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering."}]]}]}] 269:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred text alignment when the renderer supports it.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Preferred text alignment when the renderer supports it."}]]}]}] 26a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred date display style for a `date_time` value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Preferred date display style for a ",["$","code","code-0",{"children":"date_time"}]," value."]}]]}]}] 26b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred time display style for a `date_time` value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Preferred time display style for a ",["$","code","code-0",{"children":"date_time"}]," value."]}]]}]}] 26c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Whether a date and time value should be presented relative to the current time.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Whether a date and time value should be presented relative to the current time."}]]}]}] 26d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Whether a date and time value should be shown without time-zone conversion.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Whether a date and time value should be shown without time-zone conversion."}]]}]}] 26e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred display style for a numeric value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Preferred display style for a numeric value."}]]}]}] 26f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code for a `currency` value. Required when `data_type` is `currency`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["ISO 4217 currency code for a ",["$","code","code-0",{"children":"currency"}]," value. Required when ",["$","code","code-1",{"children":"data_type"}]," is ",["$","code","code-2",{"children":"currency"}],"."]}]]}]}] 270:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field `id` is referenced from the pass `presentation` configuration. When neither the pass\nnor its template provides a presentation, every field must provide `data_category` and\n`semantic_type`; `importance` remains optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field ",["$","code","code-0",{"children":"id"}]," is referenced from the pass ",["$","code","code-1",{"children":"presentation"}]," configuration. When neither the pass\nnor its template provides a presentation, every field must provide ",["$","code","code-2",{"children":"data_category"}]," and\n",["$","code","code-3",{"children":"semantic_type"}],"; ",["$","code","code-4",{"children":"importance"}]," remains optional."]}]]}]}] 271:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Custom fields available to the selected presentation layout.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Custom fields available to the selected presentation layout."}]]}]}] 272:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ID of the primary field displayed in this slot.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ID of the primary field displayed in this slot."}]]}]}] 273:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional ID of a field joined to the primary field in the same slot.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional ID of a field joined to the primary field in the same slot."}]]}]}] 274:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Horizontal placement of the slot within its row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Horizontal placement of the slot within its row."}]]}]}] 275:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A field placed in a positional presentation row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A field placed in a positional presentation row."}]]}]}] 276:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional header section row, displayed before the primary section.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional header section row, displayed before the primary section."}]]}]}] 277:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Primary section row, displayed after the header when provided.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Primary section row, displayed after the header when provided."}]]}]}] 278:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A row in a positional generic-pass presentation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A row in a positional generic-pass presentation."}]]}]}] 279:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional secondary section rows, in display order.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional secondary section rows, in display order."}]]}]}] 27a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Footer section row, displayed last.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Footer section row, displayed last."}]]}]}] 27b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a `field_id` or `join_field_id` when this layout is used.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a ",["$","code","code-0",{"children":"field_id"}]," or ",["$","code","code-1",{"children":"join_field_id"}]," when this layout is used."]}]]}]}] 27c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Wrapper for a positional presentation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Wrapper for a positional presentation."}]]}]}] 27d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field."}]]}]}] 27e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a generic pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a generic pass at creation."}]]}]}] 27f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The content of a Revolut native pass at creation. The root-level `type` discriminator selects\nthe content structure: `semantics` for typed passes, `fields` with an optional `presentation`\nfor generic passes. The immutable `template_id`, when used, is set on the containing pass envelope.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The content of a Revolut native pass at creation. The root-level ",["$","code","code-0",{"children":"type"}]," discriminator selects\nthe content structure: ",["$","code","code-1",{"children":"semantics"}]," for typed passes, ",["$","code","code-2",{"children":"fields"}]," with an optional ",["$","code","code-3",{"children":"presentation"}],"\nfor generic passes. The immutable ",["$","code","code-4",{"children":"template_id"}],", when used, is set on the containing pass envelope."]}]]}]}] 280:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass using Revolut's native semantic model, at creation. The root-level `template_id` selects\nthe render template, while the `rev_pass` object carries the pass type, semantic content, and\nrelevant-at timestamp.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass using Revolut's native semantic model, at creation. The root-level ",["$","code","code-0",{"children":"template_id"}]," selects\nthe render template, while the ",["$","code","code-1",{"children":"rev_pass"}]," object carries the pass type, semantic content, and\nrelevant-at timestamp."]}]]}]}] 281:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 282:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 283:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The raw `.pkpass` file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The raw ",["$","code","code-0",{"children":".pkpass"}]," file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB."]}]]}]}] 284:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a `.pkpass` file supplied as a base64-encoded string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Format-specific fields for a ",["$","code","code-0",{"children":".pkpass"}]," file supplied as a base64-encoded string."]}]]}]}] 285:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A `template_id` that\ndoesn't exist under your Partner ID returns `404` (`template_not_found`); a `draft`,\n`terminating`, or `terminated` template returns `422` (`template_not_active`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A ",["$","code","code-0",{"children":"template_id"}]," that\ndoesn't exist under your Partner ID returns ",["$","code","code-1",{"children":"404"}]," (",["$","code","code-2",{"children":"template_not_found"}],"); a ",["$","code","code-3",{"children":"draft"}],",\n",["$","code","code-4",{"children":"terminating"}],", or ",["$","code","code-5",{"children":"terminated"}]," template returns ",["$","code","code-6",{"children":"422"}]," (",["$","code","code-7",{"children":"template_not_active"}],")."]}]]}]}] 286:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 287:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 288:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass created from a `.pkpass` file, provided as a base64-encoded string.\nRevolut parses the `pass.json` inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the `.pkpass` are used where possible.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass created from a ",["$","code","code-0",{"children":".pkpass"}]," file, provided as a base64-encoded string.\nRevolut parses the ",["$","code","code-1",{"children":"pass.json"}]," inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the ",["$","code","code-2",{"children":".pkpass"}]," are used where possible."]}]]}]}] 289:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 28a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 28b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Public HTTPS URL from which Revolut downloads the `.pkpass` file. Must return a valid\n`.pkpass` (signed ZIP archive).\n\nRevolut fetches the URL server-side under these rules:\n\n- HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\n and link-local IP ranges are not fetched).\n- At most 3 redirects, each to an HTTPS URL.\n- The response must be `200` with a valid `pkpass` body of at most 10 MB, fully received\n within 10 seconds.\n- The URL must remain valid for at least 24 hours after submission so Revolut can download\n and re-download it, including across retries.\n\nIf the download fails any of these rules, the request is rejected with `422`\n(`pkpass_url_download_failed`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Public HTTPS URL from which Revolut downloads the ",["$","code","code-0",{"children":".pkpass"}]," file. Must return a valid\n",["$","code","code-1",{"children":".pkpass"}]," (signed ZIP archive)."]}],"\n",["$","p","p-1",{"children":"Revolut fetches the URL server-side under these rules:"}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":"HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\nand link-local IP ranges are not fetched)."}],"\n",["$","li","li-1",{"children":"At most 3 redirects, each to an HTTPS URL."}],"\n",["$","li","li-2",{"children":["The response must be ",["$","code","code-0",{"children":"200"}]," with a valid ",["$","code","code-1",{"children":"pkpass"}]," body of at most 10 MB, fully received\nwithin 10 seconds."]}],"\n",["$","li","li-3",{"children":"The URL must remain valid for at least 24 hours after submission so Revolut can download\nand re-download it, including across retries."}],"\n"]}],"\n",["$","p","p-2",{"children":["If the download fails any of these rules, the request is rejected with ",["$","code","code-0",{"children":"422"}],"\n(",["$","code","code-1",{"children":"pkpass_url_download_failed"}],")."]}]]}]}] 28c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a `.pkpass` file supplied through a download URL.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Format-specific fields for a ",["$","code","code-0",{"children":".pkpass"}]," file supplied through a download URL."]}]]}]}] 28d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 28e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 28f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass created from a `.pkpass` file, provided via a download URL. Revolut fetches\nthe `.pkpass` file from the URL, parses the `pass.json` inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid `.pkpass` file.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass created from a ",["$","code","code-0",{"children":".pkpass"}]," file, provided via a download URL. Revolut fetches\nthe ",["$","code","code-1",{"children":".pkpass"}]," file from the URL, parses the ",["$","code","code-2",{"children":"pass.json"}]," inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid ",["$","code","code-3",{"children":".pkpass"}]," file."]}]]}]}] 290:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 291:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 292:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects resource family used to validate and render both resources.\n\n| Value | Description |\n| ----- | ----------- |\n| `event_ticket` | An `EventTicketClass` and `EventTicketObject` pair. |\n| `flight` | A `FlightClass` and `FlightObject` pair. |\n| `generic` | A `GenericClass` and `GenericObject` pair. |\n| `gift_card` | A `GiftCardClass` and `GiftCardObject` pair. |\n| `loyalty` | A `LoyaltyClass` and `LoyaltyObject` pair. |\n| `offer` | An `OfferClass` and `OfferObject` pair. |\n| `transit` | A `TransitClass` and `TransitObject` pair. |",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The Wallet Objects resource family used to validate and render both resources."}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"event_ticket"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["An ",["$","code","code-0",{"children":"EventTicketClass"}]," and ",["$","code","code-1",{"children":"EventTicketObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"flight"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"FlightClass"}]," and ",["$","code","code-1",{"children":"FlightObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"generic"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"GenericClass"}]," and ",["$","code","code-1",{"children":"GenericObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"gift_card"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"GiftCardClass"}]," and ",["$","code","code-1",{"children":"GiftCardObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"loyalty"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"LoyaltyClass"}]," and ",["$","code","code-1",{"children":"LoyaltyObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"offer"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["An ",["$","code","code-0",{"children":"OfferClass"}]," and ",["$","code","code-1",{"children":"OfferObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"transit"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"TransitClass"}]," and ",["$","code","code-1",{"children":"TransitObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 293:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied Wallet Objects class resource.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Identifier of the supplied Wallet Objects class resource."}]]}]}] 294:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects class resource for the selected `type`. Its `id` must match the\nsupplied object's `classId`; a mismatch is rejected with `422`\n(`walletobjects_class_mismatch`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects class resource for the selected ",["$","code","code-0",{"children":"type"}],". Its ",["$","code","code-1",{"children":"id"}]," must match the\nsupplied object's ",["$","code","code-2",{"children":"classId"}],"; a mismatch is rejected with ",["$","code","code-3",{"children":"422"}],"\n(",["$","code","code-4",{"children":"walletobjects_class_mismatch"}],")."]}]]}]}] 295:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied Wallet Objects object resource.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Identifier of the supplied Wallet Objects object resource."}]]}]}] 296:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied class resource; must match `class.id`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Identifier of the supplied class resource; must match ",["$","code","code-0",{"children":"class.id"}],"."]}]]}]}] 297:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects object resource for the selected `type`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects object resource for the selected ",["$","code","code-0",{"children":"type"}],"."]}]]}]}] 298:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against `type`,\nparses them, and renders the pass natively.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against ",["$","code","code-0",{"children":"type"}],",\nparses them, and renders the pass natively."]}]]}]}] 299:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a Wallet Objects JSON pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Format-specific fields for a Wallet Objects JSON pass."}]]}]}] 29a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 29b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 29c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n`classId` must reference the supplied class resource.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n",["$","code","code-0",{"children":"classId"}]," must reference the supplied class resource."]}]]}]}] 29d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The complete loyalty pass envelope, in any format accepted by `POST /passes` on the\n[Wallet Partner API](https://developer.revolut.com/docs/api/revolut-wallet-partner). Its `partner_reference` is\nyour stable key for the pass when you push updates later. To apply one of your\n[templates](https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management), set\n`template_id` in the envelope; without it, the pass uses only the styling it carries.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The complete loyalty pass envelope, in any format accepted by ",["$","code","code-0",{"children":"POST /passes"}]," on the\n",["$","a","a-0",{"href":"https://developer.revolut.com/docs/api/revolut-wallet-partner","target":"_blank","rel":"noreferrer","children":"Wallet Partner API"}],". Its ",["$","code","code-1",{"children":"partner_reference"}]," is\nyour stable key for the pass when you push updates later. To apply one of your\n",["$","a","a-1",{"href":"https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management","target":"_blank","rel":"noreferrer","children":"templates"}],", set\n",["$","code","code-2",{"children":"template_id"}]," in the envelope; without it, the pass uses only the styling it carries."]}]]}]}] 29e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Response body for `GET /loyalty/profile`: the identifiers of the membership the customer\nenrolled in or linked, its current loyalty state, and the complete pass envelope.\nRevolut ignores unknown fields in this response, so you may add fields without breaking\ncompatibility.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Response body for ",["$","code","code-0",{"children":"GET /loyalty/profile"}],": the identifiers of the membership the customer\nenrolled in or linked, its current loyalty state, and the complete pass envelope.\nRevolut ignores unknown fields in this response, so you may add fields without breaking\ncompatibility."]}]]}]}] 29f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The membership's profile: its identifiers, current loyalty state, and the complete\npass envelope.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The membership's profile: its identifiers, current loyalty state, and the complete\npass envelope."}]]}]}] 2a0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2a1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 2a2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 2a3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 2a4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 2a5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Malformed request or invalid body.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Malformed request or invalid body."}]]}]}] 2a6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2a7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Bearer challenge carrying the OAuth 2.0 error code (RFC 6750).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Bearer challenge carrying the OAuth 2.0 error code (RFC 6750)."}]]}]}] 2a9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] 2aa:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] 2ab:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] 2e6:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 2ac:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$2e6",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$L2e7"," does not match the ","$L2e8","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$L2e9","$L2ea","$L2eb","$L2ec","$L2ed"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 2ad:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","No access token, or an expired or invalid one. For a request without a token, send a\nbare `Bearer` challenge with no error code (RFC 6750, section 3.1). For an expired or\ninvalid token (not issued for this enrolment or link, expired, or failing\nvalidation), send `invalid_token`. Signal the error in `WWW-Authenticate`; the JSON\nbody is optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["No access token, or an expired or invalid one. For a request without a token, send a\nbare ",["$","code","code-0",{"children":"Bearer"}]," challenge with no error code (RFC 6750, section 3.1). For an expired or\ninvalid token (not issued for this enrolment or link, expired, or failing\nvalidation), send ",["$","code","code-1",{"children":"invalid_token"}],". Signal the error in ",["$","code","code-2",{"children":"WWW-Authenticate"}],"; the JSON\nbody is optional."]}]]}]}] 2ae:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2af:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Bearer challenge carrying the OAuth 2.0 error code and the required scope (RFC 6750).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Bearer challenge carrying the OAuth 2.0 error code and the required scope (RFC 6750)."}]]}]}] 2b1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable OAuth 2.0 error code; see the table above.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable OAuth 2.0 error code; see the table above."}]]}]}] 2b2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable text explaining the error (RFC 6749, section 5.2). Never include\nsensitive client credentials in it."}]]}]}] 2b3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","URI of a page with more information about the error (RFC 6749, section 5.2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"URI of a page with more information about the error (RFC 6749, section 5.2)."}]]}]}] 2ee:T555,Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by `400` and `401` from `POST /oauth2/par` (RFC 9126 applies the same format) and `POST /oauth2/token`, and by access-token errors (`401`, `403`) on `GET /loyalty/profile`, where you signal the error in the `WWW-Authenticate` header (RFC 6750) and the JSON body is optional. Off-the-shelf authorisation servers emit this format natively. | Value | Description | | ----- | ----------- | | `invalid_request` | The request is missing a required parameter, is otherwise malformed, or repeats a parameter. | | `invalid_client` | Client authentication failed: unknown client, no authentication included, or an unsupported authentication method. | | `invalid_grant` | The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the `code_verifier` does not match the `code_challenge`. | | `unauthorized_client` | The authenticated client is not authorised to use this grant type. | | `unsupported_grant_type` | The grant type is not supported by this authorisation server. | | `invalid_scope` | The requested scope is invalid, unknown, or malformed. | | `invalid_token` | The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750). | | `insufficient_scope` | The access token lacks the scope the request needs (RFC 6750). | 2b4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$2ee",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard OAuth 2.0 error body (RFC 6749, section 5.2). Used by ",["$","code","code-0",{"children":"400"}]," and ",["$","code","code-1",{"children":"401"}]," from\n",["$","code","code-2",{"children":"POST /oauth2/par"}]," (RFC 9126 applies the same format) and ",["$","code","code-3",{"children":"POST /oauth2/token"}],", and by\naccess-token errors (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") on ",["$","code","code-6",{"children":"GET /loyalty/profile"}],", where you signal the error\nin the ",["$","code","code-7",{"children":"WWW-Authenticate"}]," header (RFC 6750) and the JSON body is optional. Off-the-shelf\nauthorisation servers emit this format natively."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_request"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The request is missing a required parameter, is otherwise malformed, or repeats a parameter.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Client authentication failed: unknown client, no authentication included, or an unsupported authentication method.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_grant"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The authorisation code is invalid, expired, already used, issued to another client, or does not match the request, or the ","$L2ef"," does not match the ","$L2f0","."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$L2f1","$L2f2","$L2f3","$L2f4","$L2f5"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 2b5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The access token lacks the `loyalty.profile` scope (`insufficient_scope`). Signal the\nerror in `WWW-Authenticate` (RFC 6750); the JSON body is optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The access token lacks the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope (",["$","code","code-1",{"children":"insufficient_scope"}],"). Signal the\nerror in ",["$","code","code-2",{"children":"WWW-Authenticate"}]," (RFC 6750); the JSON body is optional."]}]]}]}] 2b6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2b7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 2b8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 2b9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 2ba:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 2bb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","No active membership found for this access token. Revolut stops retrying.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"No active membership found for this access token. Revolut stops retrying."}]]}]}] 2bc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2bd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 2be:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 2bf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 2c0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 2c1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 2c2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 2c3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 2c4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 2c5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 2c6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 2c7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 2c8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 2c9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Temporary capacity issue. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Temporary capacity issue. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 2f6:T618,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Revolut's backend calls this once per enrolment or link, immediately after exchanging the authorisation code at your token endpoint, to fetch the membership the customer just enrolled in or linked. Return the membership identifiers, its current loyalty state, and the complete pass envelope for the customer's Revolut Wallet. The `member_id` you return must equal the `member_id` claim of the ID token you issued for the same code. After this call, keep the pass current through [pass updates](https://developer.revolut.com/docs/guides/revolut-wallet/operations/update-pass): push changes through the Wallet Partner API, or serve Revolut's poll requests. Validate the access token your authorisation server issued and require the `loyalty.profile` scope. Revolut uses the token only for this endpoint, including any retries after `429` or `503`, so issue a short-lived access token whose lifetime still covers the `Retry-After` delays you return. Signal token errors in the `WWW-Authenticate` header (RFC 6750): reject a request without a token with `401` and a bare `Bearer` challenge, an expired or invalid token with `401` (`invalid_token`), and a token without `loyalty.profile` with `403` (`insufficient_scope`). When the customer unlinks the membership in Revolut Wallet, Revolut doesn't notify you; it stops calling your loyalty endpoints for that membership. 2cd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$2f6",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}],["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}],["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}]]}],"\n",["$","p","p-0",{"children":["Revolut's backend calls this once per enrolment or link, immediately after exchanging the\nauthorisation code at your token endpoint, to fetch the membership the customer just\nenrolled in or linked. Return the membership identifiers, its current loyalty state, and\nthe complete pass envelope for the customer's Revolut Wallet. The ",["$","code","code-0",{"children":"member_id"}]," you return\nmust equal the ",["$","code","code-1",{"children":"member_id"}]," claim of the ID token you issued for the same code."]}],"\n",["$","p","p-1",{"children":["After this call, keep the pass current through\n",["$","a","a-0",{"href":"https://developer.revolut.com/docs/guides/revolut-wallet/operations/update-pass","target":"_blank","rel":"noreferrer","children":"pass updates"}],": push changes through\nthe Wallet Partner API, or serve Revolut's poll requests."]}],"\n",["$","p","p-2",{"children":["Validate the access token your authorisation server issued and require the\n",["$","code","code-0",{"children":"loyalty.profile"}]," scope. Revolut uses the token only for this endpoint, including any\nretries after ","$L2f7"," or ","$L2f8",", so issue a short-lived access token whose lifetime still\ncovers the ","$L2f9"," delays you return. Signal token errors in the ","$L2fa","\nheader (RFC 6750): reject a request without a token with ","$L2fb"," and a bare ","$L2fc","\nchallenge, an expired or invalid token with ","$L2fd"," (","$L2fe","), and a token without\n","$L2ff"," with ","$L300"," (","$L301",")."]}],"\n","$L302"]}]}] 2ce:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Contract version Revolut is calling with. Currently ",["$","code","code-0",{"children":"2026-09-17"}],"."]}],"\n",["$","div","inlinealert-0",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["If you receive a version you do not implement, respond with ",["$","code","code-0",{"children":"400"}],"."]}]}]]}]]}]}] 2cf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. Echo it back in your response.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. Echo it back in your response."}]]}]}] 2e5:["$","code","code-8",{"children":"date_time"}] 2e7:["$","code","code-0",{"children":"code_verifier"}] 2e8:["$","code","code-1",{"children":"code_challenge"}] 2e9:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2ea:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2eb:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2ec:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2ed:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2ef:["$","code","code-0",{"children":"code_verifier"}] 2f0:["$","code","code-1",{"children":"code_challenge"}] 2f1:["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unauthorized_client"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The authenticated client is not authorised to use this grant type.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2f2:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"unsupported_grant_type"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The grant type is not supported by this authorisation server.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2f3:["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The requested scope is invalid, unknown, or malformed.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2f4:["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"invalid_token"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token expired, was revoked, is malformed, or is otherwise invalid (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2f5:["$","tr","tr-7",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"The access token lacks the scope the request needs (RFC 6750).","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 2f7:["$","code","code-1",{"children":"429"}] 2f8:["$","code","code-2",{"children":"503"}] 2f9:["$","code","code-3",{"children":"Retry-After"}] 2fa:["$","code","code-4",{"children":"WWW-Authenticate"}] 2fb:["$","code","code-5",{"children":"401"}] 2fc:["$","code","code-6",{"children":"Bearer"}] 2fd:["$","code","code-7",{"children":"401"}] 2fe:["$","code","code-8",{"children":"invalid_token"}] 2ff:["$","code","code-9",{"children":"loyalty.profile"}] 300:["$","code","code-10",{"children":"403"}] 301:["$","code","code-11",{"children":"insufficient_scope"}] 302:["$","p","p-3",{"children":"When the customer unlinks the membership in Revolut Wallet, Revolut doesn't notify you; it\nstops calling your loyalty endpoints for that membership."}] 2d9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] 303:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 2db:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$303",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$L304",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$L305","."]}],"\n","$L306","\n"]}],"\n","$L307"]}]}] 2dc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] 2dd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 304:["$","code","code-1",{"children":"kid"}] 305:["$","code","code-2",{"children":"kid"}] 306:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] 307:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] 308:T1a42,
{
  "member_id": "9988776655",
  "program_id": "program_gb_rewards",
  "tier": "Gold",
  "points_balance": {
    "value": "4820",
    "unit": "points"
  },
  "pass": {
    "format": "revpass",
    "partner_reference": "brightpoints-9988776655",
    "version": 1,
    "template_id": "3f6c2a9e-8b71-4d0c-9e52-7a1b4c8d2e60",
    "rev_pass": {
      "type": "loyalty_pass",
      "semantics": {
        "member": {
          "full_name": "Alan Maxwell",
          "member_id": "9988776655",
          "member_since_on": "2026-09-17"
        },
        "loyalty": {
          "program_name": "BrightPoints",
          "tier": "Gold",
          "points_balance": {
            "value": "4820",
            "unit": "points"
          }
        }
      }
    }
  }
}
2de:["$","div","200-application/json-profile",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$308"}}]}]],"$L309"]}] 2df:["$","div","400-application/json-validation_error",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"validation_error\",\n  \"message\": \"Request validation failed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"validation_error\",\n \"message\": \"Request validation failed.\"\n}"}]}]]}] 2e0:["$","div","401-application/json-invalid_token",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"invalid_token\",\n  \"error_description\": \"The access token expired or is invalid.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"invalid_token\",\n \"error_description\": \"The access token expired or is invalid.\"\n}"}]}]]}] 2e1:["$","div","403-application/json-insufficient_scope",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"error\": \"insufficient_scope\",\n  \"error_description\": \"The access token does not have the loyalty.profile scope.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"error\": \"insufficient_scope\",\n \"error_description\": \"The access token does not have the loyalty.profile scope.\"\n}"}]}]]}] 2e2:["$","div","404-application/json-membership_not_found",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"membership_not_found\",\n  \"message\": \"No active membership found for this token.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"membership_not_found\",\n \"message\": \"No active membership found for this token.\"\n}"}]}]]}] 2e3:["$","div","429-application/json-rate_limited",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"rate_limited\",\n  \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"rate_limited\",\n \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}"}]}]]}] 2e4:["$","div","503-application/json-temporarily_unavailable",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"temporarily_unavailable\",\n  \"message\": \"Service temporarily unavailable. Please retry.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"temporarily_unavailable\",\n \"message\": \"Service temporarily unavailable. Please retry.\"\n}"}]}]]}] 309:["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"member_id\": \"9988776655\",\n \"program_id\": \"program_gb_rewards\",\n \"tier\": \"Gold\",\n \"points_balance\": {\n \"value\": \"4820\",\n \"unit\": \"points\"\n },\n \"pass\": {\n \"format\": \"revpass\",\n \"partner_reference\": \"brightpoints-9988776655\",\n \"version\": 1,\n \"template_id\": \"3f6c2a9e-8b71-4d0c-9e52-7a1b4c8d2e60\",\n \"rev_pass\": {\n \"type\": \"loyalty_pass\",\n \"semantics\": {\n \"member\": {\n \"full_name\": \"Alan Maxwell\",\n \"member_id\": \"9988776655\",\n \"member_since_on\": \"2026-09-17\"\n },\n \"loyalty\": {\n \"program_name\": \"BrightPoints\",\n \"tier\": \"Gold\",\n \"points_balance\": {\n \"value\": \"4820\",\n \"unit\": \"points\"\n }\n }\n }\n }\n }\n}"}]}] 3f5:T458,The customer must complete steps in the browser (UI-required), or the token lacks the required scope. Revolut never retries a UI-required response; it falls back to the OAuth 2.0 browser flow with the `prompt` value shown below. `insufficient_scope` is terminal: fix the credentials during onboarding. | Code | Description | | ---- | ----------- | | `ui_required` | Generic: the customer must complete steps in the browser before enrolment. Revolut starts the browser flow with `prompt=create`. | | `account_exists` | The shared data matches an existing membership; never create a duplicate. Revolut starts the link flow: `prompt=login` and no enrolment claims. | | `terms_acceptance_required` | The customer must accept your Terms and Conditions in the browser. Revolut starts the browser flow with `prompt=create`. | | `additional_data_required` | Enrolment needs data the customer must provide in the browser. Revolut starts the browser flow with `prompt=create`. | | `insufficient_scope` | Token lacks `loyalty.enrol` (terminal): fix credentials during onboarding. Revolut doesn't start the browser flow. | 1b:["$","$37","auto-enrol-customer",{"children":[["$","section",null,{"className":"y9a0do0","data-variant":"endpoint","children":["$","$L38",null,{"responses":{"200":{"description":"Membership created. Return the identifiers of the new membership and the complete\nloyalty pass envelope for the customer's Revolut Wallet.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L30a","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Result of an automatic enrolment: the identifiers of the membership you created, plus the\ncomplete loyalty pass envelope for the customer's Revolut Wallet. Revolut ignores\nunknown fields in this response, so you may add fields without breaking compatibility.\n","required":["member_id","program_id","pass"],"properties":{"member_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the new membership. Revolut records it at enrolment\nand sends it back on `POST /loyalty/apply`.\n","examples":["9988776655"],"descriptionNode":"$L30b"},"program_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the loyalty program. Always returned, even when you\noperate a single program, so Revolut can record it for `POST /loyalty/apply`.\n","examples":["program_gb_rewards"],"descriptionNode":"$L30c"},"tier":{"type":"string","description":"Membership tier label.","examples":["Gold"],"descriptionNode":"$L30d"},"points_balance":{"description":"The customer's current points balance. Include it if you track balances.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:required","properties":{"value":{"type":"string","pattern":"^(0|[1-9]\\d*)(\\.\\d{1,6})?$","description":"Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:value:examples","descriptionNode":"$L30e"},"unit":{"type":"string","minLength":1,"description":"Unit label for the balance (e.g. points, miles).","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:unit:examples","descriptionNode":"$L30f"},"monetary_value":{"description":"Optional monetary equivalent of the points balance.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:required","properties":{"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Non-negative decimal amount as a string (e.g. \"72.40\").","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:amount:examples","descriptionNode":"$L310"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code (e.g. GBP, EUR, USD).","examples":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_earned:properties:monetary_value:properties:currency:examples","descriptionNode":"$L311"}},"descriptionNode":"$L312"}},"descriptionNode":"$L313"},"pass":{"description":"The complete loyalty pass envelope for the new membership, in any format accepted\nby `POST /passes` on the [Wallet Partner API](https://developer.revolut.com/docs/api/revolut-wallet-partner). Its\n`partner_reference` is your stable key for the pass. To apply one of your\n[templates](https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management), set\n`template_id` in the envelope; without it, the pass uses only the styling it carries.\n","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:required","oneOf":[{"description":"A pass using Revolut's native semantic model, at creation. The root-level `template_id` selects\nthe render template, while the `rev_pass` object carries the pass type, semantic content, and\nrelevant-at timestamp.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":{"type":"string","maxLength":128,"description":"Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On `PUT /passes/{id}`, it must match the pass addressed in the path; a mismatch\nis rejected with `422`.\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference:examples","descriptionNode":"$L314"},"version":{"type":"integer","format":"int64","minimum":1,"description":"Your pass revision. Must be `1` on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with `409` (`stale_version`).\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version:examples","descriptionNode":"$L315"}},"descriptionNode":"$L316"},{"type":"object","description":"Format discriminator for a Revolut native pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:1:required","properties":{"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:1:properties:format:enum","description":"Pass format discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:1:properties:format:examples","descriptionNode":"$L317"}},"descriptionNode":"$L318"},{"type":"object","description":"Optional Revolut template selection for a native pass at creation.","properties":{"template_id":{"description":"UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n`template_id` that doesn't exist under your Partner ID returns `404`\n(`template_not_found`); a `draft`, `terminating`, or `terminated` template returns\n`422` (`template_not_active`).\n","type":"string","format":"uuid","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:2:properties:template_id:examples","descriptionNode":"$L319"}},"descriptionNode":"$L31a"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":{"description":"Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a `template_id`, Revolut uses the template's holder mode at install time,\nand when there is no template either, the default `ONE_USER_ALL_DEVICES` applies.\n","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options:required","properties":{"holder_mode":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options:properties:holder_mode:enum","description":"Who can install and hold the pass:\n\n| Value | Description |\n| ----- | ----------- |\n| `MULTIPLE_HOLDERS` | Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner. |\n| `ONE_USER_ALL_DEVICES` | A single customer holds the pass, across all of their devices. |\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options:properties:holder_mode:examples","descriptionNode":"$L31b"}},"descriptionNode":"$L31c"}},"descriptionNode":"$L31d"},{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:required","properties":{"rev_pass":{"description":"The content of a Revolut native pass at creation. The root-level `type` discriminator selects\nthe content structure: `semantics` for typed passes, `fields` with an optional `presentation`\nfor generic passes. The immutable `template_id`, when used, is set on the containing pass envelope.\n","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:required","oneOf":[{"description":"The native content of a boarding pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":{"type":"string","format":"date-time","description":"When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted.\n","descriptionNode":"$L31e"},"branding":{"description":"Optional visual branding for the pass.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:required","oneOf":[{"required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:oneOf:0:required"},{"required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:oneOf:1:required"}],"properties":{"brand_name":{"type":"string","minLength":1,"maxLength":25,"description":"Brand name displayed on the pass.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:brand_name:examples","descriptionNode":"$L31f"},"logo":{"description":"Logo image used by the pass.","type":"object","oneOf":[{"required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:0:required","not":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:0:not"},{"required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:1:required","not":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:1:not"}],"properties":{"asset_ref":{"type":"string","pattern":"^revasset://(public|private)/[0-9a-fA-F-]{36}$","description":"Reference to an image asset managed by Revolut.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:asset_ref:examples","descriptionNode":"$L320"},"data":{"type":"string","contentEncoding":"base64","minLength":1,"description":"Base64-encoded image bytes.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:data:examples","format":"byte","descriptionNode":"$L321"},"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:format:enum","description":"Image MIME type.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:format:examples","descriptionNode":"$L322"},"description":{"type":"string","description":"Accessible description of the image.","descriptionNode":"$L323"}},"descriptionNode":"$L324"},"background_image":{"description":"Background or hero image used by the pass.","type":"object","oneOf":["$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:0","$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:oneOf:1"],"properties":{"asset_ref":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:asset_ref","data":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:data","format":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:format","description":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:logo:properties:description"},"descriptionNode":"$L325"},"predefined_style":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:predefined_style:enum","description":"Predefined visual style for the pass.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:predefined_style:examples","descriptionNode":"$L326"},"colours":{"description":"Explicit colour scheme for the pass.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding:properties:colours:required","properties":{"primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"background":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"text_primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"text_secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"label_primary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"label_secondary":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"descriptionNode":"$L327"}},"descriptionNode":"$L328"},"issuer":{"description":"Optional issuer information displayed on the pass.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer:required","properties":{"issuer_id":{"type":"string","format":"uuid","readOnly":true,"description":"Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies.\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer:properties:issuer_id:examples","descriptionNode":"$L329"},"issuer_full_name":{"type":"string","minLength":1,"maxLength":50,"description":"Full legal name of the issuer.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer:properties:issuer_full_name:examples","descriptionNode":"$L32a"},"issuer_display_name":{"type":"string","minLength":1,"maxLength":25,"description":"Display name of the issuer.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer:properties:issuer_display_name:examples","descriptionNode":"$L32b"}},"descriptionNode":"$L32c"},"barcodes":{"type":"array","description":"Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes.\n","items":{"type":"object","description":"A machine-readable barcode displayed on a Revolut native pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:required","properties":{"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:format:enum","description":"Symbology used to render the barcode.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:format:examples","descriptionNode":"$L32d"},"encoding":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:encoding:enum","description":"Character encoding used for `static_payload`.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:encoding:examples","descriptionNode":"$L32e"},"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:type:enum","description":"Payload type. Only static barcode payloads are supported.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:type:examples","descriptionNode":"$L32f"},"static_payload":{"type":"string","minLength":1,"description":"Static value encoded in the barcode.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes:items:properties:static_payload:examples","descriptionNode":"$L330"}},"descriptionNode":"$L331"},"descriptionNode":"$L332"},"actions":{"type":"array","description":"Buttons rendered on the pass.","items":{"type":"object","description":"A button rendered on the pass (e.g. \"Open website\", \"Get directions\").","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:required","properties":{"id":{"type":"string","description":"Unique identifier for the action within this pass.","descriptionNode":"$L333"},"type":{"type":"string","description":"Documented values: `open_external_url`. External URL domain needs to be registered at onboarding.","descriptionNode":"$L334"},"label":{"description":"Display label for the button, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":{"type":"string","description":"Fallback text when no localisation matches.","descriptionNode":"$L335"},"localisation_key":{"type":"string","description":"Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the `default` text.\n","descriptionNode":"$L336"}},"descriptionNode":"$L337"},"url":{"type":"string","format":"uri","description":"Target URL for `open_external_url` actions.","descriptionNode":"$L338"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Relative prominence of this action (5 = primary, 1 = least prominent).","descriptionNode":"$L339"}},"descriptionNode":"$L33a"},"descriptionNode":"$L33b"},"triggers":{"type":"array","description":"Context-aware notifications that nudge the customer.","items":{"type":"object","description":"A context-aware notification that nudges the customer (e.g. proximity alert, time before event).","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:required","properties":{"id":{"type":"string","description":"Unique identifier for the trigger within this pass.","descriptionNode":"$L33c"},"type":{"type":"string","description":"Documented values: `proximity_time`, `proximity_geo_location`, `field_change`.","descriptionNode":"$L33d"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Relative prominence of this trigger (5 = high, 1 = low).","descriptionNode":"$L33e"},"time_target":{"type":"string","description":"Reference to a datetime field (e.g. `flight.scheduled_departure_at`).","descriptionNode":"$L33f"},"time_offset":{"type":"string","description":"ISO 8601 duration before the target (e.g. `PT1H` for 1 hour before departure).","descriptionNode":"$L340"},"location_targets":{"type":"array","description":"Geographic coordinates for proximity-based triggers.","items":{"type":"object","description":"Geographic coordinates (WGS 84).","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:required","properties":{"lat":{"type":"number","format":"double","description":"Latitude in decimal degrees.","descriptionNode":"$L341"},"lng":{"type":"number","format":"double","description":"Longitude in decimal degrees.","descriptionNode":"$L342"}},"descriptionNode":"$L343"},"descriptionNode":"$L344"},"radius_meters":{"type":"integer","minimum":0,"description":"Radius in meters around the `location_targets` coordinates for the proximity alert.","descriptionNode":"$L345"},"field_target":{"type":"string","description":"Name of the semantic field to watch for changes (e.g. `boarding.gate`).","descriptionNode":"$L346"},"presentation":{"description":"How the trigger is presented to the customer (notification, tile).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:presentation:required","properties":{"presentation_type":{"type":"string","description":"Documented values: `notification`, `tile`.","descriptionNode":"$L347"},"title":{"description":"Title text for the notification or tile, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L348"},"description":{"description":"Body text for the notification or tile, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L349"}},"descriptionNode":"$L34a"}},"descriptionNode":"$L34b"},"descriptionNode":"$L34c"}},"descriptionNode":"$L34d"},{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:required","properties":{"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:type:enum","description":"Pass type discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:type:examples","descriptionNode":"$L34e"},"semantics":{"type":"object","description":"Semantic tags for a boarding pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:required","properties":{"passenger":{"description":"Passenger details.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:passenger:required","properties":{"full_name":{"type":"string","description":"Full name of the passenger as it appears on the boarding pass.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:passenger:properties:full_name:examples","descriptionNode":"$L34f"},"fare_class":{"type":"string","description":"Human-readable fare class (e.g. Economy, Business, First).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:passenger:properties:fare_class:examples","descriptionNode":"$L350"},"fare_class_code":{"type":"string","description":"IATA fare class code (single letter, e.g. Y for Economy, J for Business).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:passenger:properties:fare_class_code:examples","descriptionNode":"$L351"},"frequent_flyer_program":{"type":"string","description":"Name of the frequent flyer program the passenger belongs to.","descriptionNode":"$L352"},"frequent_flyer_number":{"type":"string","description":"Membership number within the frequent flyer program.","descriptionNode":"$L353"}},"descriptionNode":"$L354"},"flight":{"description":"Flight details.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:required","properties":{"flight_number":{"type":"string","description":"Flight number without the carrier code (e.g. 2241, not SJ2241).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:flight_number:examples","descriptionNode":"$L355"},"carrier_code":{"type":"string","description":"IATA (2-character) or ICAO (3-character) carrier code.","pattern":"^[A-Z0-9]{2,3}$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:carrier_code:examples","descriptionNode":"$L356"},"carrier_name":{"type":"string","description":"Display name of the operating carrier.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:carrier_name:examples","descriptionNode":"$L357"},"operating_carrier_code":{"type":"string","description":"IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from `carrier_code`).","pattern":"^[A-Z0-9]{2,3}$","descriptionNode":"$L358"},"departure_airport":{"description":"Departure airport.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:required","properties":{"iata":{"type":"string","description":"IATA airport code (3 uppercase letters).","pattern":"^[A-Z]{3}$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:iata:examples","descriptionNode":"$L359"},"name":{"type":"string","description":"Full name of the airport (e.g. London Luton Airport).","descriptionNode":"$L35a"},"city":{"type":"string","description":"City where the airport is located.","descriptionNode":"$L35b"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","descriptionNode":"$L35c"},"terminal":{"type":"string","description":"Terminal identifier at the airport.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:terminal:examples","descriptionNode":"$L35d"}},"descriptionNode":"$L35e"},"arrival_airport":{"description":"Arrival airport.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:required","properties":{"iata":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:iata","name":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:name","city":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:city","country_code":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:country_code","terminal":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:departure_airport:properties:terminal"},"descriptionNode":"$L35f"},"scheduled_departure_at":{"type":"string","format":"date-time","description":"Scheduled departure time, UTC, ISO 8601.","descriptionNode":"$L360"},"scheduled_arrival_at":{"type":"string","format":"date-time","description":"Scheduled arrival time, UTC, ISO 8601.","descriptionNode":"$L361"},"aircraft_type":{"type":"string","description":"IATA aircraft type code (e.g. A320, B738).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:flight:properties:aircraft_type:examples","descriptionNode":"$L362"}},"descriptionNode":"$L363"},"boarding":{"description":"Boarding details (gate, seat, boarding time).","type":"object","properties":{"gate":{"type":"string","description":"Boarding gate at the departure airport.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:boarding:properties:gate:examples","descriptionNode":"$L364"},"boarding_at":{"type":"string","format":"date-time","description":"Scheduled boarding time, UTC, ISO 8601.","descriptionNode":"$L365"},"boarding_group":{"type":"string","description":"Boarding group or zone (airline-specific, e.g. A, B, 1, 2).","descriptionNode":"$L366"},"sequence_number":{"type":"string","description":"Boarding sequence number assigned to the passenger.","descriptionNode":"$L367"},"seat":{"type":"string","description":"Assigned seat number (e.g. 14C, 22A).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:boarding:properties:seat:examples","descriptionNode":"$L368"},"seat_class":{"type":"string","description":"Seat class label (e.g. Economy, Premium Economy, Business).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:boarding:properties:seat_class:examples","descriptionNode":"$L369"}},"descriptionNode":"$L36a"},"booking":{"description":"Booking details (PNR, ticket number).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:booking:required","properties":{"pnr":{"type":"string","description":"Passenger Name Record, the booking reference from the airline's reservation system.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:booking:properties:pnr:examples","descriptionNode":"$L36b"},"ticket_number":{"type":"string","description":"13-digit IATA ticket number.","pattern":"^[0-9]{13}$","descriptionNode":"$L36c"},"booking_reference":{"type":"string","description":"Alternative booking reference (e.g. agency or GDS reference), if different from the PNR.","descriptionNode":"$L36d"}},"descriptionNode":"$L36e"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":{"type":"string","format":"date-time","description":"Start of the pass validity period, UTC, ISO 8601.","descriptionNode":"$L36f"},"valid_until":{"type":"string","format":"date-time","description":"End of the pass validity period, UTC, ISO 8601.","descriptionNode":"$L370"}},"descriptionNode":"$L371"}},"descriptionNode":"$L372"}}}],"descriptionNode":"$L373"},{"description":"The native content of an event pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L374"},{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:required","properties":{"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:type:enum","description":"Pass type discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:type:examples","descriptionNode":"$L375"},"semantics":{"type":"object","description":"Semantic tags for an event pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:semantics:required","properties":{"event":{"description":"Event details (name, category, dates).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:semantics:properties:event:required","properties":{"name":{"type":"string","description":"Name of the event.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:semantics:properties:event:properties:name:examples","descriptionNode":"$L376"},"category":{"type":"string","description":"Documented values: `concert`, `sport`, `conference`, `theatre`, `festival`, `race`, `other`.","descriptionNode":"$L377"},"edition":{"type":"string","description":"Edition or iteration of a recurring event (e.g. 2026, Season 5).","descriptionNode":"$L378"},"held_on":{"type":"string","format":"date","description":"Calendar day of the event (use `starts_at` for the precise start time).","descriptionNode":"$L379"},"starts_at":{"type":"string","format":"date-time","description":"Start time of the event, UTC, ISO 8601.","descriptionNode":"$L37a"},"ends_at":{"type":"string","format":"date-time","description":"End time of the event, UTC, ISO 8601.","descriptionNode":"$L37b"},"doors_open_at":{"type":"string","format":"date-time","description":"Time the venue doors open, UTC, ISO 8601.","descriptionNode":"$L37c"}},"descriptionNode":"$L37d"},"venue":{"description":"Venue details (name, address, seat).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:semantics:properties:venue:required","properties":{"name":{"type":"string","description":"Name of the venue.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:1:allOf:1:properties:semantics:properties:venue:properties:name:examples","descriptionNode":"$L37e"},"address":{"type":"string","description":"Street address of the venue.","descriptionNode":"$L37f"},"city":{"type":"string","description":"City where the venue is located.","descriptionNode":"$L380"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","descriptionNode":"$L381"},"coordinates":{"description":"Geographic coordinates of the venue.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:required","properties":{"lat":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:properties:lat","lng":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers:items:properties:location_targets:items:properties:lng"},"descriptionNode":"$L382"},"gate":{"type":"string","description":"Entrance gate at the venue.","descriptionNode":"$L383"},"section":{"type":"string","description":"Section or block within the venue (e.g. Block 112, Section C).","descriptionNode":"$L384"},"row":{"type":"string","description":"Row identifier within the section.","descriptionNode":"$L385"},"seat":{"type":"string","description":"Seat number within the row.","descriptionNode":"$L386"}},"descriptionNode":"$L387"},"ticket":{"description":"Ticket details (number, type, booking reference).","type":"object","properties":{"number":{"type":"string","description":"Ticket number or barcode value.","descriptionNode":"$L388"},"booking_reference":{"type":"string","description":"Booking or order reference for the ticket purchase.","descriptionNode":"$L389"},"type":{"type":"string","description":"Documented values: `general_admission`, `seated`, `vip`, `backstage`, `staff`.","descriptionNode":"$L38a"}},"descriptionNode":"$L38b"},"participant":{"description":"Participant details (name, company, role).","type":"object","properties":{"full_name":{"type":"string","description":"Full name of the participant.","descriptionNode":"$L38c"},"company":{"type":"string","description":"Company or organisation the participant represents.","descriptionNode":"$L38d"},"role":{"type":"string","description":"Role or title at the event (e.g. Speaker, Attendee, Volunteer).","descriptionNode":"$L38e"}},"descriptionNode":"$L38f"},"organiser":{"description":"Organiser details.","type":"object","properties":{"name":{"type":"string","description":"Name of the organising company or individual.","descriptionNode":"$L390"}},"descriptionNode":"$L391"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_from","valid_until":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_until"},"descriptionNode":"$L392"}},"descriptionNode":"$L393"}}}],"descriptionNode":"$L394"},{"description":"The native content of a loyalty pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L395"},{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:required","properties":{"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:type:enum","description":"Pass type discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:type:examples","descriptionNode":"$L396"},"semantics":{"type":"object","description":"Semantic tags for a loyalty pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:required","properties":{"member":{"description":"Member details (name, ID, join date).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:member:required","properties":{"full_name":{"type":"string","description":"Full name of the loyalty program member.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:member:properties:full_name:examples","descriptionNode":"$L397"},"member_id":{"type":"string","description":"Membership number or ID within the loyalty program.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:member:properties:member_id:examples","descriptionNode":"$L398"},"member_since_on":{"type":"string","format":"date","description":"Date the member joined the programme.","descriptionNode":"$L399"}},"descriptionNode":"$L39a"},"loyalty":{"description":"Loyalty program details (tier, balance, next reward).","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:loyalty:required","properties":{"program_name":{"type":"string","description":"Display name of the loyalty program.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:loyalty:properties:program_name:examples","descriptionNode":"$L39b"},"tier":{"type":"string","description":"Current tier level of the member (e.g. Gold, Silver, Bronze).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:loyalty:properties:tier:examples","descriptionNode":"$L39c"},"tier_progress":{"description":"Progress towards the next tier.","type":"object","properties":{"current":{"type":"string","description":"Current progress value as a string (e.g. points earned this period).","descriptionNode":"$L39d"},"target":{"type":"string","description":"Target value required to reach the next tier, as a string.","descriptionNode":"$L39e"},"unit":{"type":"string","description":"Unit of measurement for the progress values (e.g. points, stays, flights).","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:loyalty:properties:tier_progress:properties:unit:examples","descriptionNode":"$L39f"}},"descriptionNode":"$L3a0"},"points_balance":{"description":"Current points balance.","type":"object","required":"$22:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:required","properties":{"value":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:value","unit":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:unit","monetary_value":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:points_balance:properties:monetary_value"},"descriptionNode":"$L3a1"},"next_reward":{"description":"Next reward the member can unlock.","type":"object","properties":{"description":{"type":"string","description":"Human-readable description of the reward (e.g. \"Free coffee voucher\").","descriptionNode":"$L3a2"},"points_required":{"type":"string","description":"Points required to unlock the reward, as a string.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:2:allOf:1:properties:semantics:properties:loyalty:properties:next_reward:properties:points_required:examples","descriptionNode":"$L3a3"}},"descriptionNode":"$L3a4"}},"descriptionNode":"$L3a5"},"validity":{"description":"Optional validity window for the pass.","type":"object","properties":{"valid_from":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_from","valid_until":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:1:properties:semantics:properties:validity:properties:valid_until"},"descriptionNode":"$L3a6"}},"descriptionNode":"$L3a7"}}}],"descriptionNode":"$L3a8"},{"description":"The native content of a generic pass at creation.","allOf":[{"type":"object","description":"Fields common to every Revolut native pass content type.","properties":{"relevant_at":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:relevant_at","branding":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:branding","issuer":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:issuer","barcodes":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:barcodes","actions":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions","triggers":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:triggers"},"descriptionNode":"$L3a9"},{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:required","properties":{"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:type:enum","description":"Pass type discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:type:examples","descriptionNode":"$L3aa"},"fields":{"type":"array","minItems":1,"description":"Custom fields available to the selected presentation layout.","items":{"type":"object","description":"Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field `id` is referenced from the pass `presentation` configuration. When neither the pass\nnor its template provides a presentation, every field must provide `data_category` and\n`semantic_type`; `importance` remains optional.\n","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:required","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"Unique identifier for a custom field within a generic pass.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:id:examples","descriptionNode":"$L3ab"},"label":{"description":"Display label for the field, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L3ac"},"value":{"description":"Display value for the field, with optional localisation.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:required","properties":{"default":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:default","localisation_key":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:0:allOf:0:properties:actions:items:properties:label:properties:localisation_key"},"descriptionNode":"$L3ad"},"data_type":{"type":"string","description":"Interpretation of the field value. The `value` is always carried as a string (or a\nlocalised string map); `data_type` defines how Revolut parses and renders it:\n\n| Value | Wire representation |\n|-------|---------------------|\n| `text` | Any string. |\n| `number` | Plain decimal number as a string, e.g. `1400` or `1400.50` (no thousands separators; rendered per `number_style`). |\n| `currency` | Plain decimal amount as a string, e.g. `1400.50`, with `currency_code` (ISO 4217) alongside. |\n| `date_time` | RFC 3339 UTC timestamp, e.g. `2026-09-15T19:00:00.000Z`. |\n| `uri` | Absolute HTTPS URI string, e.g. `https://example.com/offer`. |\n\nConditional rules: `currency` requires `currency_code`; `number_style` applies only to\n`number`; `date_style`, `time_style`, `is_relative`, and `ignores_time_zone` apply only\nto `date_time`.\n","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:data_type:enum","default":"text","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:data_type:examples","descriptionNode":"$L3ae"},"data_category":{"description":"Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional.\n","type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:data_category:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:data_category:examples","descriptionNode":"$L3af"},"semantic_type":{"description":"Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional.\n","type":"string","minLength":1,"examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:semantic_type:examples","descriptionNode":"$L3b0"},"importance":{"type":"integer","minimum":1,"maximum":5,"description":"Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering.\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:importance:examples","descriptionNode":"$L3b1"},"text_alignment":{"type":"string","description":"Preferred text alignment when the renderer supports it.","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:text_alignment:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:text_alignment:examples","descriptionNode":"$L3b2"},"date_style":{"type":"string","description":"Preferred date display style for a `date_time` value.","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:date_style:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:date_style:examples","descriptionNode":"$L3b3"},"time_style":{"type":"string","description":"Preferred time display style for a `date_time` value.","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:time_style:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:time_style:examples","descriptionNode":"$L3b4"},"is_relative":{"type":"boolean","description":"Whether a date and time value should be presented relative to the current time.","descriptionNode":"$L3b5"},"ignores_time_zone":{"type":"boolean","description":"Whether a date and time value should be shown without time-zone conversion.","descriptionNode":"$L3b6"},"number_style":{"type":"string","description":"Preferred display style for a numeric value.","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:number_style:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:number_style:examples","descriptionNode":"$L3b7"},"currency_code":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for a `currency` value. Required when `data_type` is `currency`.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:currency_code:examples","descriptionNode":"$L3b8"}},"descriptionNode":"$L3b9"},"descriptionNode":"$L3ba"},"presentation":{"description":"Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field.\n","type":"object","oneOf":[{"type":"object","description":"Wrapper for a positional presentation.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:required","properties":{"positional":{"type":"object","description":"Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a `field_id` or `join_field_id` when this layout is used.\n","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:required","properties":{"header":{"description":"Optional header section row, displayed before the primary section.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","description":"A field placed in a positional presentation row.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items:items:required","properties":{"field_id":{"description":"ID of the primary field displayed in this slot.","type":"string","pattern":"^[a-zA-Z0-9_-]+$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:id:examples","descriptionNode":"$L3bb"},"join_field_id":{"description":"Optional ID of a field joined to the primary field in the same slot.","type":"string","pattern":"^[a-zA-Z0-9_-]+$","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:fields:items:properties:id:examples","descriptionNode":"$L3bc"},"alignment":{"type":"string","description":"Horizontal placement of the slot within its row.","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items:items:properties:alignment:enum","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items:items:properties:alignment:examples","descriptionNode":"$L3bd"}},"descriptionNode":"$L3be"}}},"descriptionNode":"$L3bf"},"primary":{"description":"Primary section row, displayed after the header when provided.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L3c0"},"secondary":{"type":"array","minItems":1,"maxItems":3,"description":"Optional secondary section rows, in display order.","items":{"type":"object","description":"A row in a positional generic-pass presentation.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L3c1"},"descriptionNode":"$L3c2"},"footer":{"description":"Footer section row, displayed last.","type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:required","properties":{"items":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:oneOf:3:allOf:1:properties:presentation:oneOf:0:properties:positional:properties:header:properties:items"},"descriptionNode":"$L3c3"}},"descriptionNode":"$L3c4"}},"descriptionNode":"$L3c5"}],"descriptionNode":"$L3c6"}}}],"descriptionNode":"$L3c7"}],"discriminator":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:4:properties:rev_pass:discriminator","descriptionNode":"$L3c8"}}}],"descriptionNode":"$L3c9"},{"description":"A pass created from a `.pkpass` file, provided as a base64-encoded string.\nRevolut parses the `pass.json` inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the `.pkpass` are used where possible.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L3ca"},{"type":"object","description":"Format-specific fields for a `.pkpass` file supplied as a base64-encoded string.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:1:required","properties":{"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:1:properties:format:enum","description":"Pass format discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:1:properties:format:examples","descriptionNode":"$L3cb"},"pkpass":{"type":"string","contentEncoding":"base64","contentMediaType":"application/vnd.apple.pkpass","description":"The raw `.pkpass` file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB.\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:1:properties:pkpass:examples","format":"byte","descriptionNode":"$L3cc"}},"descriptionNode":"$L3cd"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":{"description":"UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A `template_id` that\ndoesn't exist under your Partner ID returns `404` (`template_not_found`); a `draft`,\n`terminating`, or `terminated` template returns `422` (`template_not_active`).\n","type":"string","format":"uuid","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:2:properties:template_id:examples","descriptionNode":"$L3ce"}},"descriptionNode":"$L3cf"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L3d0"}],"descriptionNode":"$L3d1"},{"description":"A pass created from a `.pkpass` file, provided via a download URL. Revolut fetches\nthe `.pkpass` file from the URL, parses the `pass.json` inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid `.pkpass` file.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L3d2"},{"type":"object","description":"Format-specific fields for a `.pkpass` file supplied through a download URL.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:2:allOf:1:required","properties":{"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:2:allOf:1:properties:format:enum","description":"Pass format discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:2:allOf:1:properties:format:examples","descriptionNode":"$L3d3"},"pkpass_url":{"type":"string","format":"uri","pattern":"^https://","description":"Public HTTPS URL from which Revolut downloads the `.pkpass` file. Must return a valid\n`.pkpass` (signed ZIP archive).\n\nRevolut fetches the URL server-side under these rules:\n\n- HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\n and link-local IP ranges are not fetched).\n- At most 3 redirects, each to an HTTPS URL.\n- The response must be `200` with a valid `pkpass` body of at most 10 MB, fully received\n within 10 seconds.\n- The URL must remain valid for at least 24 hours after submission so Revolut can download\n and re-download it, including across retries.\n\nIf the download fails any of these rules, the request is rejected with `422`\n(`pkpass_url_download_failed`).\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:2:allOf:1:properties:pkpass_url:examples","descriptionNode":"$L3d4"}},"descriptionNode":"$L3d5"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:2:properties:template_id"},"descriptionNode":"$L3d6"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L3d7"}],"descriptionNode":"$L3d8"},{"description":"A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n`classId` must reference the supplied class resource.\n","allOf":[{"type":"object","description":"Fields that identify a partner's pass and the revision being submitted.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:required","properties":{"partner_reference":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:partner_reference","version":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:0:properties:version"},"descriptionNode":"$L3d9"},{"type":"object","description":"Format-specific fields for a Wallet Objects JSON pass.","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:required","properties":{"format":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:format:enum","description":"Pass format discriminator.","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:format:examples","descriptionNode":"$L3da"},"walletobjects":{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:required","properties":{"type":{"type":"string","enum":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:properties:type:enum","description":"The Wallet Objects resource family used to validate and render both resources.\n\n| Value | Description |\n| ----- | ----------- |\n| `event_ticket` | An `EventTicketClass` and `EventTicketObject` pair. |\n| `flight` | A `FlightClass` and `FlightObject` pair. |\n| `generic` | A `GenericClass` and `GenericObject` pair. |\n| `gift_card` | A `GiftCardClass` and `GiftCardObject` pair. |\n| `loyalty` | A `LoyaltyClass` and `LoyaltyObject` pair. |\n| `offer` | An `OfferClass` and `OfferObject` pair. |\n| `transit` | A `TransitClass` and `TransitObject` pair. |","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:properties:type:examples","descriptionNode":"$L3db"},"class":{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:properties:class:required","properties":{"id":{"type":"string","description":"Identifier of the supplied Wallet Objects class resource.","descriptionNode":"$L3dc"}},"additionalProperties":true,"description":"The Wallet Objects class resource for the selected `type`. Its `id` must match the\nsupplied object's `classId`; a mismatch is rejected with `422`\n(`walletobjects_class_mismatch`).\n","descriptionNode":"$L3dd"},"object":{"type":"object","required":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:properties:object:required","properties":{"id":{"type":"string","description":"Identifier of the supplied Wallet Objects object resource.","descriptionNode":"$L3de"},"classId":{"type":"string","description":"Identifier of the supplied class resource; must match `class.id`.","descriptionNode":"$L3df"}},"additionalProperties":true,"description":"The Wallet Objects object resource for the selected `type`.","descriptionNode":"$L3e0"}},"description":"The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against `type`,\nparses them, and renders the pass natively.\n","examples":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:3:allOf:1:properties:walletobjects:examples","descriptionNode":"$L3e1"}},"descriptionNode":"$L3e2"},{"type":"object","description":"Optional template override for an imported pass at creation.","properties":{"template_id":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:1:allOf:2:properties:template_id"},"descriptionNode":"$L3e3"},{"type":"object","description":"Optional sharing options for a pass at creation.","properties":{"sharing_options":"$1b:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:oneOf:0:allOf:3:properties:sharing_options"},"descriptionNode":"$L3e4"}],"descriptionNode":"$L3e5"}],"discriminator":"$20:props:children:0:props:children:props:responses:200:content:application/json:schema:properties:pass:discriminator","descriptionNode":"$L3e6"}},"descriptionNode":"$L3e7"},"examples":{"enrolled":{"summary":"Membership created, with the complete pass envelope","value":{"member_id":"9988776655","program_id":"program_gb_rewards","tier":"Gold","points_balance":{"value":"4820","unit":"points"},"pass":{"format":"revpass","partner_reference":"brightpoints-9988776655","version":1,"rev_pass":{"type":"loyalty_pass","semantics":{"member":{"full_name":"Alan Maxwell","member_id":"9988776655","member_since_on":"2026-09-17"},"loyalty":{"program_name":"BrightPoints","tier":"Gold","points_balance":{"value":"4820","unit":"points"}}}}}}}}}},"descriptionNode":"$L3e8"},"400":{"description":"Malformed request or invalid body.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L3e9","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L3ea"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L3eb"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L3ec"}},"descriptionNode":"$L3ed"},"examples":"$22:props:children:0:props:children:props:responses:400:content:application/json:examples"}},"descriptionNode":"$L3ee"},"401":{"description":"Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L3ef","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L3f0"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L3f1"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L3f2"}},"descriptionNode":"$L3f3"},"examples":"$22:props:children:0:props:children:props:responses:401:content:application/json:examples"}},"descriptionNode":"$L3f4"},"403":{"description":"$3f5","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L3f6","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L3f7"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L3f8"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L3f9"}},"descriptionNode":"$L3fa"},"examples":{"ui_required":{"value":{"code":"ui_required","message":"The customer must complete steps in the browser before enrolment."}},"account_exists":{"value":{"code":"account_exists","message":"The shared data matches an existing membership; the customer must sign in and link it in the browser."}},"terms_acceptance_required":{"value":{"code":"terms_acceptance_required","message":"The customer must accept the Terms and Conditions in the browser."}},"additional_data_required":{"value":{"code":"additional_data_required","message":"Enrolment requires data the customer must provide in the browser."}},"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The token does not have the loyalty.enrol scope."}}}}},"descriptionNode":"$L3fb"},"409":{"description":"Unrecoverable conflict: the `Idempotency-Key` was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying.\n","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L3fc","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L3fd"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L3fe"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L3ff"}},"descriptionNode":"$L400"},"examples":"$22:props:children:0:props:children:props:responses:409:content:application/json:examples"}},"descriptionNode":"$L401"},"429":{"description":"Rate limit exceeded. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L402","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L403","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L404"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L405"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L406"}},"descriptionNode":"$L407"},"examples":"$22:props:children:0:props:children:props:responses:429:content:application/json:examples"}},"descriptionNode":"$L408"},"503":{"description":"Temporary capacity issue. Revolut retries, honouring `Retry-After`.","headers":{"Request-Id":{"description":"Correlation ID for the response. Echo the incoming `Request-Id` when present.","descriptionNode":"$L409","schema":{"type":"string"}},"Retry-After":{"description":"Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n","example":30,"descriptionNode":"$L40a","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","description":"Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n","required":"$22:props:children:0:props:children:props:responses:400:content:application/json:schema:required","properties":{"code":{"type":"string","description":"Machine-readable snake_case error code.","descriptionNode":"$L40b"},"message":{"type":"string","description":"Human-readable explanation.","descriptionNode":"$L40c"},"error_id":{"type":"string","description":"Your trace ID, if you have one.","descriptionNode":"$L40d"}},"descriptionNode":"$L40e"},"examples":"$22:props:children:0:props:children:props:responses:503:content:application/json:examples"}},"descriptionNode":"$L40f"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request body for `POST /loyalty/auto-enrol`: the enrolment claims the customer agreed\nto share, plus the loyalty program to enrol them in when you operate several. At least\none enrolment claim is always present.\n","anyOf":[{"title":"Given name shared","required":["given_name"]},{"title":"Family name shared","required":["family_name"]},{"title":"Email shared","required":["email"]},{"title":"Phone number shared","required":["phone_number"]},{"title":"Custom fields shared","required":["custom_fields"]}],"properties":{"program_id":{"type":"string","minLength":1,"description":"Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet. Revolut sends it only if you operate several loyalty programs; the valid\nvalues are agreed during onboarding.\n","examples":["program_gb_rewards"],"descriptionNode":"$L410"}},"examples":"$1d:props:children:0:props:children:props:requestBody:content:application/x-www-form-urlencoded:schema:properties:enrolment_claims:contentSchema:examples","descriptionNode":"$L411"},"examples":{"auto_enrol":{"summary":"Automatic enrolment with the shared enrolment claims","value":{"given_name":"Alan","family_name":"Maxwell","email":"alan.maxwell@example.com","phone_number":"+447700900123","custom_fields":{"vehicle_type":"car","licence_plate":"BX21 ABC"},"program_id":"program_gb_rewards"}}}}}},"variantLabels":[],"children":["$L412","$L413"]}]}],false]}] 412:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$","div",null,{"className":"y9a0do1","children":[["$","h2",null,{"id":"auto-enrol-customer","children":[["$L414","$undefined"],["$","$L18",null,{"id":"auto-enrol-customer"}]]}],["$","$L19",null,{"url":"/docs/api/revolut-wallet-loyalty-callbacks/operations/auto-enrol-customer.md"}]]}]}],"$undefined"]}] 419:Tb92,
curl -X POST "https://passes.partner.example/revolut-wallet/loyalty/auto-enrol" \
  -H "Authorization: Bearer <yourAccessToken>" \
  -H "Content-Type: application/json" \
  -H "Revolut-Api-Version: __RP_TOK_0__" \
  -H "Idempotency-Key: __RP_TOK_1__" \
  -H "Request-Id: __RP_TOK_2__" \
  -d '{
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
}'
41a:T183b,
const payload = {
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
};
fetch("https://passes.partner.example/revolut-wallet/loyalty/auto-enrol", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <yourAccessToken>",
    "Content-Type": "application/json",
    "Revolut-Api-Version": "__RP_TOK_0__",
    "Idempotency-Key": "__RP_TOK_1__",
    "Request-Id": "__RP_TOK_2__"
  },
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data));
41b:T1d51,
package main

import (
  "fmt"
  "net/http"
  "bytes"
  "encoding/json"
)

func main() {
  url := "https://passes.partner.example/revolut-wallet/loyalty/auto-enrol"
  jsonData := []byte(`
{
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
}
  `)
  req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  req.Header.Add("Authorization", "Bearer <yourAccessToken>")
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Revolut-Api-Version", "__RP_TOK_0__")
  req.Header.Add("Idempotency-Key", "__RP_TOK_1__")
  req.Header.Add("Request-Id", "__RP_TOK_2__")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  fmt.Println(res)
}
41c:T156b,
import requests

url = "https://passes.partner.example/revolut-wallet/loyalty/auto-enrol"
headers = {
  "Authorization": "Bearer <yourAccessToken>",
  "Content-Type": "application/json",
  "Revolut-Api-Version": "__RP_TOK_0__",
  "Idempotency-Key": "__RP_TOK_1__",
  "Request-Id": "__RP_TOK_2__"
}
payload = {
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
41d:T484,import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class Main { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); String body = """ { "given_name": "Alan", "family_name": "Maxwell", "email": "alan.maxwell@example.com", "phone_number": "+447700900123", "custom_fields": { "vehicle_type": "car", "licence_plate": "BX21 ABC" }, "program_id": "program_gb_rewards" } """; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://passes.partner.example/revolut-wallet/loyalty/auto-enrol")) .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .header("Revolut-Api-Version", "__RP_TOK_0__") .header("Idempotency-Key", "__RP_TOK_1__") .header("Request-Id", "__RP_TOK_2__") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println) .join(); } }41e:T22af,
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
  public static void main(String[] args) {
    HttpClient client = HttpClient.newHttpClient();
    String body = """
{
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
}
    """;

    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://passes.partner.example/revolut-wallet/loyalty/auto-enrol"))
      .header("Authorization", "Bearer <yourAccessToken>")
      .header("Content-Type", "application/json")
      .header("Revolut-Api-Version", "__RP_TOK_0__")
      .header("Idempotency-Key", "__RP_TOK_1__")
      .header("Request-Id", "__RP_TOK_2__")
      .POST(HttpRequest.BodyPublishers.ofString(body))
      .build();

    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();
  }
}
41f:T416,using System.Net.Http; using System.Net.Http.Headers; var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("https://passes.partner.example/revolut-wallet/loyalty/auto-enrol"), Headers = { { "Authorization", "Bearer " }, { "Revolut-Api-Version", "__RP_TOK_0__" }, { "Idempotency-Key", "__RP_TOK_1__" }, { "Request-Id", "__RP_TOK_2__" }, }, Content = new StringContent(@"{ ""given_name"": ""Alan"", ""family_name"": ""Maxwell"", ""email"": ""alan.maxwell@example.com"", ""phone_number"": ""+447700900123"", ""custom_fields"": { ""vehicle_type"": ""car"", ""licence_plate"": ""BX21 ABC"" }, ""program_id"": ""program_gb_rewards"" }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } } }; using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body); }420:T2d65,
using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
  Method = HttpMethod.Post,
  RequestUri = new Uri("https://passes.partner.example/revolut-wallet/loyalty/auto-enrol"),
  Headers =
  {
    { "Authorization", "Bearer <yourAccessToken>" },
    { "Revolut-Api-Version", "__RP_TOK_0__" },
    { "Idempotency-Key", "__RP_TOK_1__" },
    { "Request-Id", "__RP_TOK_2__" },
  },
  Content = new StringContent(@"{
  ""given_name"": ""Alan"",
  ""family_name"": ""Maxwell"",
  ""email"": ""alan.maxwell@example.com"",
  ""phone_number"": ""+447700900123"",
  ""custom_fields"": {
    ""vehicle_type"": ""car"",
    ""licence_plate"": ""BX21 ABC""
  },
  ""program_id"": ""program_gb_rewards""
}")
  {
    Headers =
    {
      ContentType = new MediaTypeHeaderValue("application/json")
    }
  }
};

using (var response = await client.SendAsync(request))
{
  response.EnsureSuccessStatusCode();
  var body = await response.Content.ReadAsStringAsync();
  Console.WriteLine(body);
}
413:["$","div",null,{"className":"ezz1n30","children":[["$","div",null,{"data-header":"$undefined","className":"ezz1n31","children":["$L415",["$","$L3e",null,{"parameters":[{"name":"Revolut-Api-Version","in":"header","required":true,"description":"Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n","schema":{"type":"string","enum":"$15a:props:children:0:props:children:1:props:parameters:0:schema:enum"},"example":"2026-09-17","descriptionNode":"$L416"},{"name":"Idempotency-Key","in":"header","required":true,"description":"UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry.\n\n**Key lifecycle.** Only a `200` completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (`202` on `POST /loyalty/apply` only, `429`, and `503`)\nmust not complete or consume the key. Terminal failures (`400`, `401`, `403`, `404`,\n`409`, `410`) need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days.\n\n**Body comparison.** The same key with a different request body returns `409`.\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict.\n","schema":{"type":"string","format":"uuid"},"example":"550e8400-e29b-41d4-a716-446655440000","descriptionNode":"$L417"},{"name":"Request-Id","in":"header","required":false,"description":"Revolut's correlation ID for this request. Echo it back in your response.","schema":{"type":"string"},"example":"01970c4c-5790-7fb5-8331-84dfa075bbe9","descriptionNode":"$L418"}],"requestBody":"$1b:props:children:0:props:children:props:requestBody","heading":"Request","requestBodySchemaTitle":"Request body","headingAs":"h3"}],["$","$L41",null,{"responses":"$1b:props:children:0:props:children:props:responses","headingAs":"h3"}]]}],["$","div",null,{"className":"ezz1n32","children":[[["$","$L42",null,{"itemsByServer":{"https://passes.partner.example/revolut-wallet":[{"id":"curl","label":"cURL","templateCode":"curl -X POST \"https://passes.partner.example/revolut-wallet/loyalty/auto-enrol\" \\\n -H \"Authorization: Bearer \" \\\n -H \"Content-Type: application/json\" \\\n -H \"Revolut-Api-Version: __RP_TOK_0__\" \\\n -H \"Idempotency-Key: __RP_TOK_1__\" \\\n -H \"Request-Id: __RP_TOK_2__\" \\\n -d '{\n \"given_name\": \"Alan\",\n \"family_name\": \"Maxwell\",\n \"email\": \"alan.maxwell@example.com\",\n \"phone_number\": \"+447700900123\",\n \"custom_fields\": {\n \"vehicle_type\": \"car\",\n \"licence_plate\": \"BX21 ABC\"\n },\n \"program_id\": \"program_gb_rewards\"\n}'","templateHtml":"$419","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["shell-double-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["shell-double-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"javascript","label":"JavaScript","templateCode":"const payload = {\n \"given_name\": \"Alan\",\n \"family_name\": \"Maxwell\",\n \"email\": \"alan.maxwell@example.com\",\n \"phone_number\": \"+447700900123\",\n \"custom_fields\": {\n \"vehicle_type\": \"car\",\n \"licence_plate\": \"BX21 ABC\"\n },\n \"program_id\": \"program_gb_rewards\"\n};\nfetch(\"https://passes.partner.example/revolut-wallet/loyalty/auto-enrol\", {\n method: \"POST\",\n headers: {\n \"Authorization\": \"Bearer \",\n \"Content-Type\": \"application/json\",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Idempotency-Key\": \"__RP_TOK_1__\",\n \"Request-Id\": \"__RP_TOK_2__\"\n },\n body: JSON.stringify(payload)\n})\n .then(response => response.json())\n .then(data => console.log(data));","templateHtml":"$41a","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"go","label":"Go","templateCode":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"bytes\"\n \"encoding/json\"\n)\n\nfunc main() {\n url := \"https://passes.partner.example/revolut-wallet/loyalty/auto-enrol\"\n jsonData := []byte(`\n{\n \"given_name\": \"Alan\",\n \"family_name\": \"Maxwell\",\n \"email\": \"alan.maxwell@example.com\",\n \"phone_number\": \"+447700900123\",\n \"custom_fields\": {\n \"vehicle_type\": \"car\",\n \"licence_plate\": \"BX21 ABC\"\n },\n \"program_id\": \"program_gb_rewards\"\n}\n `)\n req, _ := http.NewRequest(\"POST\", url, bytes.NewBuffer(jsonData))\n req.Header.Add(\"Authorization\", \"Bearer \")\n req.Header.Add(\"Content-Type\", \"application/json\")\n req.Header.Add(\"Revolut-Api-Version\", \"__RP_TOK_0__\")\n req.Header.Add(\"Idempotency-Key\", \"__RP_TOK_1__\")\n req.Header.Add(\"Request-Id\", \"__RP_TOK_2__\")\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n fmt.Println(res)\n}","templateHtml":"$41b","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"python","label":"Python","templateCode":"import requests\n\nurl = \"https://passes.partner.example/revolut-wallet/loyalty/auto-enrol\"\nheaders = {\n \"Authorization\": \"Bearer \",\n \"Content-Type\": \"application/json\",\n \"Revolut-Api-Version\": \"__RP_TOK_0__\",\n \"Idempotency-Key\": \"__RP_TOK_1__\",\n \"Request-Id\": \"__RP_TOK_2__\"\n}\npayload = {\n \"given_name\": \"Alan\",\n \"family_name\": \"Maxwell\",\n \"email\": \"alan.maxwell@example.com\",\n \"phone_number\": \"+447700900123\",\n \"custom_fields\": {\n \"vehicle_type\": \"car\",\n \"licence_plate\": \"BX21 ABC\"\n },\n \"program_id\": \"program_gb_rewards\"\n}\n\nresponse = requests.post(url, headers=headers, json=payload)\nprint(response.json())","templateHtml":"$41c","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"java","label":"Java","templateCode":"$41d","templateHtml":"$41e","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}},{"id":"csharp","label":"C#","templateCode":"$41f","templateHtml":"$420","tokens":[{"marker":"__RP_TOK_0__","paramName":"Revolut-Api-Version","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_1__","paramName":"Idempotency-Key","paramIn":"header","pipeline":["json-string-inner"]},{"marker":"__RP_TOK_2__","paramName":"Request-Id","paramIn":"header","pipeline":["json-string-inner"]}],"defaults":{"header:Revolut-Api-Version":"2026-09-17","header:Idempotency-Key":"550e8400-e29b-41d4-a716-446655440000","header:Request-Id":"01970c4c-5790-7fb5-8331-84dfa075bbe9"}}]},"method":"post","servers":"$1e:props:children:0:props:children:props:children:1:props:children:1:props:children:0:0:props:servers","path":"/loyalty/auto-enrol","parameters":["$413:props:children:0:props:children:1:props:parameters:0","$413:props:children:0:props:children:1:props:parameters:1","$413:props:children:0:props:children:1:props:parameters:2"]}],"$L421"],"$L422","$L423"]}]]}] 425:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 421:["$","$L89",null,{"security":[{"oauth2":["loyalty.enrol"]},{"oauth2":["loyalty.enrol"],"mtls":[]}],"authorization":{"mtls":{"type":"mutualTLS","description":"**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n","descriptionNode":"$L424"},"jws":{"type":"apiKey","in":"header","name":"Jws-Signature","description":"$425","descriptionNode":"$L426"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n","flows":"$4:6:props:children:props:children:2:props:children:2:props:children:0:props:children:2:props:authorization:oauth2:flows","descriptionNode":"$L427"},"accessToken":{"type":"http","scheme":"bearer","description":"Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n","descriptionNode":"$L428"}}}] 422:["$","$L4a",null,{"exampleBlocks":{"application/json":{"variants":[{"key":"auto_enrol","label":"Automatic enrolment with the shared enrolment claims","rawValue":"$1b:props:children:0:props:children:props:requestBody:content:application/json:examples:auto_enrol:value","block":"$L429"}],"syncedPropertyName":"$undefined"}},"title":"Request body samples","headingAs":"h4"}] 423:["$","$L4b",null,{"exampleBlocks":{"200":{"application/json":{"variants":[{"key":"enrolled","label":"Membership created, with the complete pass envelope","rawValue":"$1b:props:children:0:props:children:props:responses:200:content:application/json:examples:enrolled:value","block":"$L42a"}],"syncedPropertyName":"$undefined"}},"400":{"application/json":{"variants":[{"key":"validation_error","label":"validation_error","rawValue":"$22:props:children:0:props:children:props:responses:400:content:application/json:examples:validation_error:value","block":"$L42b"}],"syncedPropertyName":"$undefined"}},"401":{"application/json":{"variants":[{"key":"invalid_credentials","label":"invalid_credentials","rawValue":"$22:props:children:0:props:children:props:responses:401:content:application/json:examples:invalid_credentials:value","block":"$L42c"}],"syncedPropertyName":"$undefined"}},"403":{"application/json":{"variants":[{"key":"ui_required","label":"ui_required","rawValue":"$1b:props:children:0:props:children:props:responses:403:content:application/json:examples:ui_required:value","block":"$L42d"},{"key":"account_exists","label":"account_exists","rawValue":"$1b:props:children:0:props:children:props:responses:403:content:application/json:examples:account_exists:value","block":"$L42e"},{"key":"terms_acceptance_required","label":"terms_acceptance_required","rawValue":"$1b:props:children:0:props:children:props:responses:403:content:application/json:examples:terms_acceptance_required:value","block":"$L42f"},{"key":"additional_data_required","label":"additional_data_required","rawValue":"$1b:props:children:0:props:children:props:responses:403:content:application/json:examples:additional_data_required:value","block":"$L430"},{"key":"insufficient_scope","label":"insufficient_scope","rawValue":"$1b:props:children:0:props:children:props:responses:403:content:application/json:examples:insufficient_scope:value","block":"$L431"}],"syncedPropertyName":"$undefined"}},"409":{"application/json":{"variants":[{"key":"idempotency_conflict","label":"idempotency_conflict","rawValue":"$22:props:children:0:props:children:props:responses:409:content:application/json:examples:idempotency_conflict:value","block":"$L432"},{"key":"ambiguous_transaction","label":"ambiguous_transaction","rawValue":"$22:props:children:0:props:children:props:responses:409:content:application/json:examples:ambiguous_transaction:value","block":"$L433"}],"syncedPropertyName":"$undefined"}},"429":{"application/json":{"variants":[{"key":"rate_limited","label":"rate_limited","rawValue":"$22:props:children:0:props:children:props:responses:429:content:application/json:examples:rate_limited:value","block":"$L434"}],"syncedPropertyName":"$undefined"}},"503":{"application/json":{"variants":[{"key":"temporarily_unavailable","label":"temporarily_unavailable","rawValue":"$22:props:children:0:props:children:props:responses:503:content:application/json:examples:temporarily_unavailable:value","block":"$L435"}],"syncedPropertyName":"$undefined"}}},"headingAs":"h4"}] 414:"Enrol a customer automatically" 30a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 30b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the new membership. Revolut records it at enrolment\nand sends it back on `POST /loyalty/apply`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Partner-issued identifier of the new membership. Revolut records it at enrolment\nand sends it back on ",["$","code","code-0",{"children":"POST /loyalty/apply"}],"."]}]]}]}] 30c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the loyalty program. Always returned, even when you\noperate a single program, so Revolut can record it for `POST /loyalty/apply`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Partner-issued identifier of the loyalty program. Always returned, even when you\noperate a single program, so Revolut can record it for ",["$","code","code-0",{"children":"POST /loyalty/apply"}],"."]}]]}]}] 30d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership tier label.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership tier label."}]]}]}] 30e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso `\"1500\"` and `\"1500.00\"` are equivalent.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Current points balance as a non-negative decimal string with up to six fractional digits.\nDo not use a sign, exponent notation, or redundant leading zeros. Compare values as decimals,\nso ",["$","code","code-0",{"children":"\"1500\""}]," and ",["$","code","code-1",{"children":"\"1500.00\""}]," are equivalent."]}]]}]}] 30f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit label for the balance (e.g. points, miles).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit label for the balance (e.g. points, miles)."}]]}]}] 310:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Non-negative decimal amount as a string (e.g. \"72.40\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Non-negative decimal amount as a string (e.g. \"72.40\")."}]]}]}] 311:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code (e.g. GBP, EUR, USD).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 4217 currency code (e.g. GBP, EUR, USD)."}]]}]}] 312:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional monetary equivalent of the points balance.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional monetary equivalent of the points balance."}]]}]}] 313:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The customer's current points balance. Include it if you track balances.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The customer's current points balance. Include it if you track balances."}]]}]}] 314:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On `PUT /passes/{id}`, it must match the pass addressed in the path; a mismatch\nis rejected with `422`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On ",["$","code","code-0",{"children":"PUT /passes/{id}"}],", it must match the pass addressed in the path; a mismatch\nis rejected with ",["$","code","code-1",{"children":"422"}],"."]}]]}]}] 315:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your pass revision. Must be `1` on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with `409` (`stale_version`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Your pass revision. Must be ",["$","code","code-0",{"children":"1"}]," on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with ",["$","code","code-1",{"children":"409"}]," (",["$","code","code-2",{"children":"stale_version"}],")."]}]]}]}] 316:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 317:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 318:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format discriminator for a Revolut native pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Format discriminator for a Revolut native pass."}]]}]}] 319:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n`template_id` that doesn't exist under your Partner ID returns `404`\n(`template_not_found`); a `draft`, `terminating`, or `terminated` template returns\n`422` (`template_not_active`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["UUID of an active template created through the template management endpoints of the\nPartner API. If omitted, no template is applied: the pass uses only the styling it\ncarries. Set at creation and immutable; not accepted when updating a pass. A\n",["$","code","code-0",{"children":"template_id"}]," that doesn't exist under your Partner ID returns ",["$","code","code-1",{"children":"404"}],"\n(",["$","code","code-2",{"children":"template_not_found"}],"); a ",["$","code","code-3",{"children":"draft"}],", ",["$","code","code-4",{"children":"terminating"}],", or ",["$","code","code-5",{"children":"terminated"}]," template returns\n",["$","code","code-6",{"children":"422"}]," (",["$","code","code-7",{"children":"template_not_active"}],")."]}]]}]}] 31a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional Revolut template selection for a native pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional Revolut template selection for a native pass at creation."}]]}]}] 31b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Who can install and hold the pass:\n\n| Value | Description |\n| ----- | ----------- |\n| `MULTIPLE_HOLDERS` | Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner. |\n| `ONE_USER_ALL_DEVICES` | A single customer holds the pass, across all of their devices. |\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Who can install and hold the pass:"}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"MULTIPLE_HOLDERS"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Any customer who receives the pass can install and hold it. The first customer to add the pass becomes its owner.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"ONE_USER_ALL_DEVICES"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"A single customer holds the pass, across all of their devices.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 31c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a `template_id`, Revolut uses the template's holder mode at install time,\nand when there is no template either, the default `ONE_USER_ALL_DEVICES` applies.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Who can install and hold this pass. Set at creation and immutable; not accepted when\nupdating a pass. Takes precedence over the template's sharing options: when omitted on a\npass created with a ",["$","code","code-0",{"children":"template_id"}],", Revolut uses the template's holder mode at install time,\nand when there is no template either, the default ",["$","code","code-1",{"children":"ONE_USER_ALL_DEVICES"}]," applies."]}]]}]}] 31d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 31e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"When the pass becomes time-relevant (departure, event start); drives Revolut's polling\ncadence. Derived from semantic content if omitted."}]]}]}] 31f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Brand name displayed on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Brand name displayed on the pass."}]]}]}] 320:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Reference to an image asset managed by Revolut.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Reference to an image asset managed by Revolut."}]]}]}] 321:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Base64-encoded image bytes.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Base64-encoded image bytes."}]]}]}] 322:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Image MIME type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Image MIME type."}]]}]}] 323:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Accessible description of the image.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Accessible description of the image."}]]}]}] 324:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Logo image used by the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Logo image used by the pass."}]]}]}] 325:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Background or hero image used by the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Background or hero image used by the pass."}]]}]}] 326:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Predefined visual style for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Predefined visual style for the pass."}]]}]}] 327:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Explicit colour scheme for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Explicit colour scheme for the pass."}]]}]}] 328:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional visual branding for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional visual branding for the pass."}]]}]}] 329:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies."}]]}]}] 32a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full legal name of the issuer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full legal name of the issuer."}]]}]}] 32b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the issuer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the issuer."}]]}]}] 32c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional issuer information displayed on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional issuer information displayed on the pass."}]]}]}] 32d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Symbology used to render the barcode.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Symbology used to render the barcode."}]]}]}] 32e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Character encoding used for `static_payload`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Character encoding used for ",["$","code","code-0",{"children":"static_payload"}],"."]}]]}]}] 32f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Payload type. Only static barcode payloads are supported.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Payload type. Only static barcode payloads are supported."}]]}]}] 330:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Static value encoded in the barcode.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Static value encoded in the barcode."}]]}]}] 331:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A machine-readable barcode displayed on a Revolut native pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A machine-readable barcode displayed on a Revolut native pass."}]]}]}] 332:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Barcodes displayed on the pass. If the pass uses a template, omit this field to inherit the\ntemplate barcodes, send a non-empty array to replace the complete template array, or send an\nempty array to suppress all template barcodes. If the pass doesn't use a template, omitting\nthis field means that the pass has no barcodes."}]]}]}] 333:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for the action within this pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for the action within this pass."}]]}]}] 334:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `open_external_url`. External URL domain needs to be registered at onboarding.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"open_external_url"}],". External URL domain needs to be registered at onboarding."]}]]}]}] 335:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fallback text when no localisation matches.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fallback text when no localisation matches."}]]}]}] 336:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the `default` text.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the ",["$","code","code-0",{"children":"default"}]," text."]}]]}]}] 337:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display label for the button, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display label for the button, with optional localisation."}]]}]}] 338:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Target URL for `open_external_url` actions.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Target URL for ",["$","code","code-0",{"children":"open_external_url"}]," actions."]}]]}]}] 339:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Relative prominence of this action (5 = primary, 1 = least prominent).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Relative prominence of this action (5 = primary, 1 = least prominent)."}]]}]}] 33a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A button rendered on the pass (e.g. \"Open website\", \"Get directions\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A button rendered on the pass (e.g. \"Open website\", \"Get directions\")."}]]}]}] 33b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Buttons rendered on the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Buttons rendered on the pass."}]]}]}] 33c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for the trigger within this pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for the trigger within this pass."}]]}]}] 33d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `proximity_time`, `proximity_geo_location`, `field_change`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"proximity_time"}],", ",["$","code","code-1",{"children":"proximity_geo_location"}],", ",["$","code","code-2",{"children":"field_change"}],"."]}]]}]}] 33e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Relative prominence of this trigger (5 = high, 1 = low).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Relative prominence of this trigger (5 = high, 1 = low)."}]]}]}] 33f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Reference to a datetime field (e.g. `flight.scheduled_departure_at`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Reference to a datetime field (e.g. ",["$","code","code-0",{"children":"flight.scheduled_departure_at"}],")."]}]]}]}] 340:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 8601 duration before the target (e.g. `PT1H` for 1 hour before departure).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["ISO 8601 duration before the target (e.g. ",["$","code","code-0",{"children":"PT1H"}]," for 1 hour before departure)."]}]]}]}] 341:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Latitude in decimal degrees.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Latitude in decimal degrees."}]]}]}] 342:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Longitude in decimal degrees.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Longitude in decimal degrees."}]]}]}] 343:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates (WGS 84).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates (WGS 84)."}]]}]}] 344:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates for proximity-based triggers.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates for proximity-based triggers."}]]}]}] 345:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Radius in meters around the `location_targets` coordinates for the proximity alert.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Radius in meters around the ",["$","code","code-0",{"children":"location_targets"}]," coordinates for the proximity alert."]}]]}]}] 346:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the semantic field to watch for changes (e.g. `boarding.gate`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Name of the semantic field to watch for changes (e.g. ",["$","code","code-0",{"children":"boarding.gate"}],")."]}]]}]}] 347:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `notification`, `tile`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"notification"}],", ",["$","code","code-1",{"children":"tile"}],"."]}]]}]}] 348:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Title text for the notification or tile, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Title text for the notification or tile, with optional localisation."}]]}]}] 349:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Body text for the notification or tile, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Body text for the notification or tile, with optional localisation."}]]}]}] 34a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","How the trigger is presented to the customer (notification, tile).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"How the trigger is presented to the customer (notification, tile)."}]]}]}] 34b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A context-aware notification that nudges the customer (e.g. proximity alert, time before event).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A context-aware notification that nudges the customer (e.g. proximity alert, time before event)."}]]}]}] 34c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Context-aware notifications that nudge the customer.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Context-aware notifications that nudge the customer."}]]}]}] 34d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 34e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 34f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the passenger as it appears on the boarding pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the passenger as it appears on the boarding pass."}]]}]}] 350:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable fare class (e.g. Economy, Business, First).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable fare class (e.g. Economy, Business, First)."}]]}]}] 351:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA fare class code (single letter, e.g. Y for Economy, J for Business).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA fare class code (single letter, e.g. Y for Economy, J for Business)."}]]}]}] 352:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the frequent flyer program the passenger belongs to.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the frequent flyer program the passenger belongs to."}]]}]}] 353:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership number within the frequent flyer program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership number within the frequent flyer program."}]]}]}] 354:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Passenger details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Passenger details."}]]}]}] 355:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Flight number without the carrier code (e.g. 2241, not SJ2241).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Flight number without the carrier code (e.g. 2241, not SJ2241)."}]]}]}] 356:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA (2-character) or ICAO (3-character) carrier code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA (2-character) or ICAO (3-character) carrier code."}]]}]}] 357:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the operating carrier.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the operating carrier."}]]}]}] 358:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from `carrier_code`).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from ",["$","code","code-0",{"children":"carrier_code"}],")."]}]]}]}] 359:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA airport code (3 uppercase letters).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA airport code (3 uppercase letters)."}]]}]}] 35a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the airport (e.g. London Luton Airport).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the airport (e.g. London Luton Airport)."}]]}]}] 35b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","City where the airport is located.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"City where the airport is located."}]]}]}] 35c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 3166-1 alpha-2 country code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 3166-1 alpha-2 country code."}]]}]}] 35d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Terminal identifier at the airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Terminal identifier at the airport."}]]}]}] 35e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Departure airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Departure airport."}]]}]}] 35f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Arrival airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Arrival airport."}]]}]}] 360:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled departure time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled departure time, UTC, ISO 8601."}]]}]}] 361:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled arrival time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled arrival time, UTC, ISO 8601."}]]}]}] 362:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","IATA aircraft type code (e.g. A320, B738).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"IATA aircraft type code (e.g. A320, B738)."}]]}]}] 363:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Flight details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Flight details."}]]}]}] 364:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding gate at the departure airport.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding gate at the departure airport."}]]}]}] 365:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Scheduled boarding time, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Scheduled boarding time, UTC, ISO 8601."}]]}]}] 366:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding group or zone (airline-specific, e.g. A, B, 1, 2).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding group or zone (airline-specific, e.g. A, B, 1, 2)."}]]}]}] 367:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding sequence number assigned to the passenger.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding sequence number assigned to the passenger."}]]}]}] 368:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Assigned seat number (e.g. 14C, 22A).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Assigned seat number (e.g. 14C, 22A)."}]]}]}] 369:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seat class label (e.g. Economy, Premium Economy, Business).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Seat class label (e.g. Economy, Premium Economy, Business)."}]]}]}] 36a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Boarding details (gate, seat, boarding time).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Boarding details (gate, seat, boarding time)."}]]}]}] 36b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Passenger Name Record, the booking reference from the airline's reservation system.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Passenger Name Record, the booking reference from the airline's reservation system."}]]}]}] 36c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","13-digit IATA ticket number.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"13-digit IATA ticket number."}]]}]}] 36d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Alternative booking reference (e.g. agency or GDS reference), if different from the PNR.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Alternative booking reference (e.g. agency or GDS reference), if different from the PNR."}]]}]}] 36e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Booking details (PNR, ticket number).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Booking details (PNR, ticket number)."}]]}]}] 36f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Start of the pass validity period, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Start of the pass validity period, UTC, ISO 8601."}]]}]}] 370:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","End of the pass validity period, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"End of the pass validity period, UTC, ISO 8601."}]]}]}] 371:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 372:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for a boarding pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for a boarding pass."}]]}]}] 373:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a boarding pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a boarding pass at creation."}]]}]}] 374:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 375:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 376:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the event.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the event."}]]}]}] 377:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `concert`, `sport`, `conference`, `theatre`, `festival`, `race`, `other`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"concert"}],", ",["$","code","code-1",{"children":"sport"}],", ",["$","code","code-2",{"children":"conference"}],", ",["$","code","code-3",{"children":"theatre"}],", ",["$","code","code-4",{"children":"festival"}],", ",["$","code","code-5",{"children":"race"}],", ",["$","code","code-6",{"children":"other"}],"."]}]]}]}] 378:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Edition or iteration of a recurring event (e.g. 2026, Season 5).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Edition or iteration of a recurring event (e.g. 2026, Season 5)."}]]}]}] 379:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Calendar day of the event (use `starts_at` for the precise start time).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Calendar day of the event (use ",["$","code","code-0",{"children":"starts_at"}]," for the precise start time)."]}]]}]}] 37a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Start time of the event, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Start time of the event, UTC, ISO 8601."}]]}]}] 37b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","End time of the event, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"End time of the event, UTC, ISO 8601."}]]}]}] 37c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Time the venue doors open, UTC, ISO 8601.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Time the venue doors open, UTC, ISO 8601."}]]}]}] 37d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Event details (name, category, dates).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Event details (name, category, dates)."}]]}]}] 37e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the venue."}]]}]}] 37f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Street address of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Street address of the venue."}]]}]}] 380:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","City where the venue is located.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"City where the venue is located."}]]}]}] 381:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 3166-1 alpha-2 country code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ISO 3166-1 alpha-2 country code."}]]}]}] 382:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Geographic coordinates of the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Geographic coordinates of the venue."}]]}]}] 383:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Entrance gate at the venue.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Entrance gate at the venue."}]]}]}] 384:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Section or block within the venue (e.g. Block 112, Section C).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Section or block within the venue (e.g. Block 112, Section C)."}]]}]}] 385:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Row identifier within the section.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Row identifier within the section."}]]}]}] 386:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Seat number within the row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Seat number within the row."}]]}]}] 387:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Venue details (name, address, seat).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Venue details (name, address, seat)."}]]}]}] 388:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Ticket number or barcode value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Ticket number or barcode value."}]]}]}] 389:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Booking or order reference for the ticket purchase.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Booking or order reference for the ticket purchase."}]]}]}] 38a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Documented values: `general_admission`, `seated`, `vip`, `backstage`, `staff`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Documented values: ",["$","code","code-0",{"children":"general_admission"}],", ",["$","code","code-1",{"children":"seated"}],", ",["$","code","code-2",{"children":"vip"}],", ",["$","code","code-3",{"children":"backstage"}],", ",["$","code","code-4",{"children":"staff"}],"."]}]]}]}] 38b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Ticket details (number, type, booking reference).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Ticket details (number, type, booking reference)."}]]}]}] 38c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the participant.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the participant."}]]}]}] 38d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Company or organisation the participant represents.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Company or organisation the participant represents."}]]}]}] 38e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Role or title at the event (e.g. Speaker, Attendee, Volunteer).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Role or title at the event (e.g. Speaker, Attendee, Volunteer)."}]]}]}] 38f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Participant details (name, company, role).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Participant details (name, company, role)."}]]}]}] 390:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Name of the organising company or individual.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Name of the organising company or individual."}]]}]}] 391:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Organiser details.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Organiser details."}]]}]}] 392:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 393:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for an event pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for an event pass."}]]}]}] 394:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of an event pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of an event pass at creation."}]]}]}] 395:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 396:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 397:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Full name of the loyalty program member.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Full name of the loyalty program member."}]]}]}] 398:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership number or ID within the loyalty program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership number or ID within the loyalty program."}]]}]}] 399:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Date the member joined the programme.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Date the member joined the programme."}]]}]}] 39a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Member details (name, ID, join date).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Member details (name, ID, join date)."}]]}]}] 39b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display name of the loyalty program.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display name of the loyalty program."}]]}]}] 39c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current tier level of the member (e.g. Gold, Silver, Bronze).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current tier level of the member (e.g. Gold, Silver, Bronze)."}]]}]}] 39d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current progress value as a string (e.g. points earned this period).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current progress value as a string (e.g. points earned this period)."}]]}]}] 39e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Target value required to reach the next tier, as a string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Target value required to reach the next tier, as a string."}]]}]}] 39f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unit of measurement for the progress values (e.g. points, stays, flights).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unit of measurement for the progress values (e.g. points, stays, flights)."}]]}]}] 3a0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Progress towards the next tier.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Progress towards the next tier."}]]}]}] 3a1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Current points balance.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Current points balance."}]]}]}] 3a2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable description of the reward (e.g. \"Free coffee voucher\").",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable description of the reward (e.g. \"Free coffee voucher\")."}]]}]}] 3a3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Points required to unlock the reward, as a string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Points required to unlock the reward, as a string."}]]}]}] 3a4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Next reward the member can unlock.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Next reward the member can unlock."}]]}]}] 3a5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Loyalty program details (tier, balance, next reward).",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Loyalty program details (tier, balance, next reward)."}]]}]}] 3a6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional validity window for the pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional validity window for the pass."}]]}]}] 3a7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic tags for a loyalty pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic tags for a loyalty pass."}]]}]}] 3a8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a loyalty pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a loyalty pass at creation."}]]}]}] 3a9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields common to every Revolut native pass content type.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields common to every Revolut native pass content type."}]]}]}] 3aa:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass type discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass type discriminator."}]]}]}] 3ab:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unique identifier for a custom field within a generic pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Unique identifier for a custom field within a generic pass."}]]}]}] 3ac:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display label for the field, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display label for the field, with optional localisation."}]]}]}] 3ad:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Display value for the field, with optional localisation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Display value for the field, with optional localisation."}]]}]}] 3ae:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Interpretation of the field value. The `value` is always carried as a string (or a\nlocalised string map); `data_type` defines how Revolut parses and renders it:\n\n| Value | Wire representation |\n|-------|---------------------|\n| `text` | Any string. |\n| `number` | Plain decimal number as a string, e.g. `1400` or `1400.50` (no thousands separators; rendered per `number_style`). |\n| `currency` | Plain decimal amount as a string, e.g. `1400.50`, with `currency_code` (ISO 4217) alongside. |\n| `date_time` | RFC 3339 UTC timestamp, e.g. `2026-09-15T19:00:00.000Z`. |\n| `uri` | Absolute HTTPS URI string, e.g. `https://example.com/offer`. |\n\nConditional rules: `currency` requires `currency_code`; `number_style` applies only to\n`number`; `date_style`, `time_style`, `is_relative`, and `ignores_time_zone` apply only\nto `date_time`.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Interpretation of the field value. The ",["$","code","code-0",{"children":"value"}]," is always carried as a string (or a\nlocalised string map); ",["$","code","code-1",{"children":"data_type"}]," defines how Revolut parses and renders it:"]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Wire representation","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"text"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":"Any string.","className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"number"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Plain decimal number as a string, e.g. ",["$","code","code-0",{"children":"1400"}]," or ",["$","code","code-1",{"children":"1400.50"}]," (no thousands separators; rendered per ",["$","code","code-2",{"children":"number_style"}],")."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"currency"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Plain decimal amount as a string, e.g. ",["$","code","code-0",{"children":"1400.50"}],", with ",["$","code","code-1",{"children":"currency_code"}]," (ISO 4217) alongside."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"date_time"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["RFC 3339 UTC timestamp, e.g. ",["$","code","code-0",{"children":"2026-09-15T19:00:00.000Z"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"uri"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Absolute HTTPS URI string, e.g. ",["$","code","code-0",{"children":"https://example.com/offer"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}],"\n",["$","p","p-1",{"children":["Conditional rules: ",["$","code","code-0",{"children":"currency"}]," requires ",["$","code","code-1",{"children":"currency_code"}],"; ",["$","code","code-2",{"children":"number_style"}]," applies only to\n",["$","code","code-3",{"children":"number"}],"; ",["$","code","code-4",{"children":"date_style"}],", ",["$","code","code-5",{"children":"time_style"}],", ",["$","code","code-6",{"children":"is_relative"}],", and ",["$","code","code-7",{"children":"ignores_time_zone"}]," apply only\nto ","$L436","."]}]]}]}] 3af:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional."}]]}]}] 3b0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional."}]]}]}] 3b1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering."}]]}]}] 3b2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred text alignment when the renderer supports it.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Preferred text alignment when the renderer supports it."}]]}]}] 3b3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred date display style for a `date_time` value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Preferred date display style for a ",["$","code","code-0",{"children":"date_time"}]," value."]}]]}]}] 3b4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred time display style for a `date_time` value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Preferred time display style for a ",["$","code","code-0",{"children":"date_time"}]," value."]}]]}]}] 3b5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Whether a date and time value should be presented relative to the current time.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Whether a date and time value should be presented relative to the current time."}]]}]}] 3b6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Whether a date and time value should be shown without time-zone conversion.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Whether a date and time value should be shown without time-zone conversion."}]]}]}] 3b7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Preferred display style for a numeric value.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Preferred display style for a numeric value."}]]}]}] 3b8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ISO 4217 currency code for a `currency` value. Required when `data_type` is `currency`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["ISO 4217 currency code for a ",["$","code","code-0",{"children":"currency"}]," value. Required when ",["$","code","code-1",{"children":"data_type"}]," is ",["$","code","code-2",{"children":"currency"}],"."]}]]}]}] 3b9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field `id` is referenced from the pass `presentation` configuration. When neither the pass\nnor its template provides a presentation, every field must provide `data_category` and\n`semantic_type`; `importance` remains optional.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field ",["$","code","code-0",{"children":"id"}]," is referenced from the pass ",["$","code","code-1",{"children":"presentation"}]," configuration. When neither the pass\nnor its template provides a presentation, every field must provide ",["$","code","code-2",{"children":"data_category"}]," and\n",["$","code","code-3",{"children":"semantic_type"}],"; ",["$","code","code-4",{"children":"importance"}]," remains optional."]}]]}]}] 3ba:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Custom fields available to the selected presentation layout.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Custom fields available to the selected presentation layout."}]]}]}] 3bb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","ID of the primary field displayed in this slot.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"ID of the primary field displayed in this slot."}]]}]}] 3bc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional ID of a field joined to the primary field in the same slot.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional ID of a field joined to the primary field in the same slot."}]]}]}] 3bd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Horizontal placement of the slot within its row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Horizontal placement of the slot within its row."}]]}]}] 3be:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A field placed in a positional presentation row.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A field placed in a positional presentation row."}]]}]}] 3bf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional header section row, displayed before the primary section.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional header section row, displayed before the primary section."}]]}]}] 3c0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Primary section row, displayed after the header when provided.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Primary section row, displayed after the header when provided."}]]}]}] 3c1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A row in a positional generic-pass presentation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"A row in a positional generic-pass presentation."}]]}]}] 3c2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional secondary section rows, in display order.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional secondary section rows, in display order."}]]}]}] 3c3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Footer section row, displayed last.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Footer section row, displayed last."}]]}]}] 3c4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a `field_id` or `join_field_id` when this layout is used.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Maps field IDs into header, primary, secondary, and footer sections. This layout may be supplied on the\npass or by its template. Every referenced ID must match a field in the pass, and every field ID\nmust appear at least once as a ",["$","code","code-0",{"children":"field_id"}]," or ",["$","code","code-1",{"children":"join_field_id"}]," when this layout is used."]}]]}]}] 3c5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Wrapper for a positional presentation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Wrapper for a positional presentation."}]]}]}] 3c6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional explicit layout. When omitted, the template presentation is used. When neither\nprovides a presentation, rendering falls back to semantic metadata on every field."}]]}]}] 3c7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The native content of a generic pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The native content of a generic pass at creation."}]]}]}] 3c8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The content of a Revolut native pass at creation. The root-level `type` discriminator selects\nthe content structure: `semantics` for typed passes, `fields` with an optional `presentation`\nfor generic passes. The immutable `template_id`, when used, is set on the containing pass envelope.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The content of a Revolut native pass at creation. The root-level ",["$","code","code-0",{"children":"type"}]," discriminator selects\nthe content structure: ",["$","code","code-1",{"children":"semantics"}]," for typed passes, ",["$","code","code-2",{"children":"fields"}]," with an optional ",["$","code","code-3",{"children":"presentation"}],"\nfor generic passes. The immutable ",["$","code","code-4",{"children":"template_id"}],", when used, is set on the containing pass envelope."]}]]}]}] 3c9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass using Revolut's native semantic model, at creation. The root-level `template_id` selects\nthe render template, while the `rev_pass` object carries the pass type, semantic content, and\nrelevant-at timestamp.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass using Revolut's native semantic model, at creation. The root-level ",["$","code","code-0",{"children":"template_id"}]," selects\nthe render template, while the ",["$","code","code-1",{"children":"rev_pass"}]," object carries the pass type, semantic content, and\nrelevant-at timestamp."]}]]}]}] 3ca:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 3cb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 3cc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The raw `.pkpass` file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The raw ",["$","code","code-0",{"children":".pkpass"}]," file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB."]}]]}]}] 3cd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a `.pkpass` file supplied as a base64-encoded string.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Format-specific fields for a ",["$","code","code-0",{"children":".pkpass"}]," file supplied as a base64-encoded string."]}]]}]}] 3ce:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A `template_id` that\ndoesn't exist under your Partner ID returns `404` (`template_not_found`); a `draft`,\n`terminating`, or `terminated` template returns `422` (`template_not_active`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["UUID of an active template created through the template management endpoints of the\nPartner API. It overrides the source pass's visual design. If omitted, Revolut uses the\nbranding from the imported source. Set at creation and immutable. A ",["$","code","code-0",{"children":"template_id"}]," that\ndoesn't exist under your Partner ID returns ",["$","code","code-1",{"children":"404"}]," (",["$","code","code-2",{"children":"template_not_found"}],"); a ",["$","code","code-3",{"children":"draft"}],",\n",["$","code","code-4",{"children":"terminating"}],", or ",["$","code","code-5",{"children":"terminated"}]," template returns ",["$","code","code-6",{"children":"422"}]," (",["$","code","code-7",{"children":"template_not_active"}],")."]}]]}]}] 3cf:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 3d0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 3d1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass created from a `.pkpass` file, provided as a base64-encoded string.\nRevolut parses the `pass.json` inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the `.pkpass` are used where possible.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass created from a ",["$","code","code-0",{"children":".pkpass"}]," file, provided as a base64-encoded string.\nRevolut parses the ",["$","code","code-1",{"children":"pass.json"}]," inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the ",["$","code","code-2",{"children":".pkpass"}]," are used where possible."]}]]}]}] 3d2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 3d3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 3d4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Public HTTPS URL from which Revolut downloads the `.pkpass` file. Must return a valid\n`.pkpass` (signed ZIP archive).\n\nRevolut fetches the URL server-side under these rules:\n\n- HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\n and link-local IP ranges are not fetched).\n- At most 3 redirects, each to an HTTPS URL.\n- The response must be `200` with a valid `pkpass` body of at most 10 MB, fully received\n within 10 seconds.\n- The URL must remain valid for at least 24 hours after submission so Revolut can download\n and re-download it, including across retries.\n\nIf the download fails any of these rules, the request is rejected with `422`\n(`pkpass_url_download_failed`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Public HTTPS URL from which Revolut downloads the ",["$","code","code-0",{"children":".pkpass"}]," file. Must return a valid\n",["$","code","code-1",{"children":".pkpass"}]," (signed ZIP archive)."]}],"\n",["$","p","p-1",{"children":"Revolut fetches the URL server-side under these rules:"}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":"HTTPS only; the host must resolve to a publicly reachable address (private, loopback,\nand link-local IP ranges are not fetched)."}],"\n",["$","li","li-1",{"children":"At most 3 redirects, each to an HTTPS URL."}],"\n",["$","li","li-2",{"children":["The response must be ",["$","code","code-0",{"children":"200"}]," with a valid ",["$","code","code-1",{"children":"pkpass"}]," body of at most 10 MB, fully received\nwithin 10 seconds."]}],"\n",["$","li","li-3",{"children":"The URL must remain valid for at least 24 hours after submission so Revolut can download\nand re-download it, including across retries."}],"\n"]}],"\n",["$","p","p-2",{"children":["If the download fails any of these rules, the request is rejected with ",["$","code","code-0",{"children":"422"}],"\n(",["$","code","code-1",{"children":"pkpass_url_download_failed"}],")."]}]]}]}] 3d5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a `.pkpass` file supplied through a download URL.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Format-specific fields for a ",["$","code","code-0",{"children":".pkpass"}]," file supplied through a download URL."]}]]}]}] 3d6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 3d7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 3d8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass created from a `.pkpass` file, provided via a download URL. Revolut fetches\nthe `.pkpass` file from the URL, parses the `pass.json` inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid `.pkpass` file.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass created from a ",["$","code","code-0",{"children":".pkpass"}]," file, provided via a download URL. Revolut fetches\nthe ",["$","code","code-1",{"children":".pkpass"}]," file from the URL, parses the ",["$","code","code-2",{"children":"pass.json"}]," inside, extracts the semantic content, and\nrenders the pass natively. The URL must be publicly accessible and return a valid ",["$","code","code-3",{"children":".pkpass"}]," file."]}]]}]}] 3d9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Fields that identify a partner's pass and the revision being submitted.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Fields that identify a partner's pass and the revision being submitted."}]]}]}] 3da:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Pass format discriminator.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Pass format discriminator."}]]}]}] 3db:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects resource family used to validate and render both resources.\n\n| Value | Description |\n| ----- | ----------- |\n| `event_ticket` | An `EventTicketClass` and `EventTicketObject` pair. |\n| `flight` | A `FlightClass` and `FlightObject` pair. |\n| `generic` | A `GenericClass` and `GenericObject` pair. |\n| `gift_card` | A `GiftCardClass` and `GiftCardObject` pair. |\n| `loyalty` | A `LoyaltyClass` and `LoyaltyObject` pair. |\n| `offer` | An `OfferClass` and `OfferObject` pair. |\n| `transit` | A `TransitClass` and `TransitObject` pair. |",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"The Wallet Objects resource family used to validate and render both resources."}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Value","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"event_ticket"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["An ",["$","code","code-0",{"children":"EventTicketClass"}]," and ",["$","code","code-1",{"children":"EventTicketObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"flight"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"FlightClass"}]," and ",["$","code","code-1",{"children":"FlightObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"generic"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"GenericClass"}]," and ",["$","code","code-1",{"children":"GenericObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"gift_card"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"GiftCardClass"}]," and ",["$","code","code-1",{"children":"GiftCardObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"loyalty"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"LoyaltyClass"}]," and ",["$","code","code-1",{"children":"LoyaltyObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-5",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"offer"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["An ",["$","code","code-0",{"children":"OfferClass"}]," and ",["$","code","code-1",{"children":"OfferObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-6",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"transit"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["A ",["$","code","code-0",{"children":"TransitClass"}]," and ",["$","code","code-1",{"children":"TransitObject"}]," pair."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}]],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 3dc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied Wallet Objects class resource.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Identifier of the supplied Wallet Objects class resource."}]]}]}] 3dd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects class resource for the selected `type`. Its `id` must match the\nsupplied object's `classId`; a mismatch is rejected with `422`\n(`walletobjects_class_mismatch`).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects class resource for the selected ",["$","code","code-0",{"children":"type"}],". Its ",["$","code","code-1",{"children":"id"}]," must match the\nsupplied object's ",["$","code","code-2",{"children":"classId"}],"; a mismatch is rejected with ",["$","code","code-3",{"children":"422"}],"\n(",["$","code","code-4",{"children":"walletobjects_class_mismatch"}],")."]}]]}]}] 3de:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied Wallet Objects object resource.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Identifier of the supplied Wallet Objects object resource."}]]}]}] 3df:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Identifier of the supplied class resource; must match `class.id`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Identifier of the supplied class resource; must match ",["$","code","code-0",{"children":"class.id"}],"."]}]]}]}] 3e0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects object resource for the selected `type`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects object resource for the selected ",["$","code","code-0",{"children":"type"}],"."]}]]}]}] 3e1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against `type`,\nparses them, and renders the pass natively.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The Wallet Objects resource family and its class/object pair. Send the format-specific fields\nas defined by the Wallet Objects contract. Revolut validates both resources against ",["$","code","code-0",{"children":"type"}],",\nparses them, and renders the pass natively."]}]]}]}] 3e2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Format-specific fields for a Wallet Objects JSON pass.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Format-specific fields for a Wallet Objects JSON pass."}]]}]}] 3e3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional template override for an imported pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional template override for an imported pass at creation."}]]}]}] 3e4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Optional sharing options for a pass at creation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Optional sharing options for a pass at creation."}]]}]}] 3e5:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n`classId` must reference the supplied class resource.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["A pass in Wallet Objects JSON format, containing an explicit resource family and the corresponding\nclass/object pair. Revolut parses both resources and renders the pass natively. The object's\n",["$","code","code-0",{"children":"classId"}]," must reference the supplied class resource."]}]]}]}] 3e6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","The complete loyalty pass envelope for the new membership, in any format accepted\nby `POST /passes` on the [Wallet Partner API](https://developer.revolut.com/docs/api/revolut-wallet-partner). Its\n`partner_reference` is your stable key for the pass. To apply one of your\n[templates](https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management), set\n`template_id` in the envelope; without it, the pass uses only the styling it carries.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The complete loyalty pass envelope for the new membership, in any format accepted\nby ",["$","code","code-0",{"children":"POST /passes"}]," on the ",["$","a","a-0",{"href":"https://developer.revolut.com/docs/api/revolut-wallet-partner","target":"_blank","rel":"noreferrer","children":"Wallet Partner API"}],". Its\n",["$","code","code-1",{"children":"partner_reference"}]," is your stable key for the pass. To apply one of your\n",["$","a","a-1",{"href":"https://developer.revolut.com/docs/guides/revolut-wallet/operations/template-management","target":"_blank","rel":"noreferrer","children":"templates"}],", set\n",["$","code","code-2",{"children":"template_id"}]," in the envelope; without it, the pass uses only the styling it carries."]}]]}]}] 3e7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Result of an automatic enrolment: the identifiers of the membership you created, plus the\ncomplete loyalty pass envelope for the customer's Revolut Wallet. Revolut ignores\nunknown fields in this response, so you may add fields without breaking compatibility.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Result of an automatic enrolment: the identifiers of the membership you created, plus the\ncomplete loyalty pass envelope for the customer's Revolut Wallet. Revolut ignores\nunknown fields in this response, so you may add fields without breaking compatibility."}]]}]}] 3e8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Membership created. Return the identifiers of the new membership and the complete\nloyalty pass envelope for the customer's Revolut Wallet.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Membership created. Return the identifiers of the new membership and the complete\nloyalty pass envelope for the customer's Revolut Wallet."}]]}]}] 3e9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 3ea:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 3eb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 3ec:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 3ed:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 3ee:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Malformed request or invalid body.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Malformed request or invalid body."}]]}]}] 3ef:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 3f0:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 3f1:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 3f2:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 3f3:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 3f4:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Missing or invalid Revolut credentials: an mTLS certificate rejected at the\napplication layer (a failed TLS handshake never produces an HTTP response), an\ninvalid JWS signature, or a missing/invalid OAuth 2.0 access token."}]]}]}] 3f6:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 3f7:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 3f8:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 3f9:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 3fa:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 437:T458,The customer must complete steps in the browser (UI-required), or the token lacks the required scope. Revolut never retries a UI-required response; it falls back to the OAuth 2.0 browser flow with the `prompt` value shown below. `insufficient_scope` is terminal: fix the credentials during onboarding. | Code | Description | | ---- | ----------- | | `ui_required` | Generic: the customer must complete steps in the browser before enrolment. Revolut starts the browser flow with `prompt=create`. | | `account_exists` | The shared data matches an existing membership; never create a duplicate. Revolut starts the link flow: `prompt=login` and no enrolment claims. | | `terms_acceptance_required` | The customer must accept your Terms and Conditions in the browser. Revolut starts the browser flow with `prompt=create`. | | `additional_data_required` | Enrolment needs data the customer must provide in the browser. Revolut starts the browser flow with `prompt=create`. | | `insufficient_scope` | Token lacks `loyalty.enrol` (terminal): fix credentials during onboarding. Revolut doesn't start the browser flow. | 3fb:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$437",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["The customer must complete steps in the browser (UI-required), or the token lacks\nthe required scope. Revolut never retries a UI-required response; it falls back to\nthe OAuth 2.0 browser flow with the ",["$","code","code-0",{"children":"prompt"}]," value shown below. ",["$","code","code-1",{"children":"insufficient_scope"}],"\nis terminal: fix the credentials during onboarding."]}],"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",["$","div","table-0",{"className":"eowryt0","children":["$","table",null,{"className":"eowryt1","children":[["$","thead","thead-0",{"children":["$","tr","tr-0",{"children":[["$","th","th-0",{"children":"Code","className":"eowryt6","ref":"$undefined"}],["$","th","th-1",{"children":"Description","className":"eowryt6","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"className":"eowryt2","ref":"$undefined"}],["$","tbody","tbody-0",{"children":[["$","tr","tr-0",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"ui_required"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Generic: the customer must complete steps in the browser before enrolment. Revolut starts the browser flow with ",["$","code","code-0",{"children":"prompt=create"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-1",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"account_exists"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The shared data matches an existing membership; never create a duplicate. Revolut starts the link flow: ",["$","code","code-0",{"children":"prompt=login"}]," and no enrolment claims."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-2",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"terms_acceptance_required"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["The customer must accept your Terms and Conditions in the browser. Revolut starts the browser flow with ",["$","code","code-0",{"children":"prompt=create"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],["$","tr","tr-3",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"additional_data_required"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Enrolment needs data the customer must provide in the browser. Revolut starts the browser flow with ",["$","code","code-0",{"children":"prompt=create"}],"."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}],"$L438"],"className":"eowryt3","ref":"$undefined"}]]}]}]]}]}] 3fc:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 3fd:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 3fe:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 3ff:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 400:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 401:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Unrecoverable conflict: the `Idempotency-Key` was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Unrecoverable conflict: the ",["$","code","code-0",{"children":"Idempotency-Key"}]," was reused with a different request\nbody, or the transaction match is ambiguous. Revolut stops retrying."]}]]}]}] 402:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 403:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 404:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 405:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 406:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 407:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 408:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Rate limit exceeded. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Rate limit exceeded. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 409:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Correlation ID for the response. Echo the incoming `Request-Id` when present.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Correlation ID for the response. Echo the incoming ",["$","code","code-0",{"children":"Request-Id"}]," when present."]}]]}]}] 40a:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Integer seconds Revolut should wait before retrying (not the HTTP-date form). `0` means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Integer seconds Revolut should wait before retrying (not the HTTP-date form). ",["$","code","code-0",{"children":"0"}]," means\nretry immediately. If a retryable response omits this header, Revolut uses its default\nbackoff schedule."]}]]}]}] 40b:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Machine-readable snake_case error code.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Machine-readable snake_case error code."}]]}]}] 40c:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Human-readable explanation.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Human-readable explanation."}]]}]}] 40d:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Your trace ID, if you have one.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Your trace ID, if you have one."}]]}]}] 40e:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Standard error body for 4xx/5xx responses from `POST /loyalty/apply`,\n`POST /loyalty/auto-enrol`, and `GET /loyalty/profile`. Access-token errors on\n`GET /loyalty/profile` (`401`, `403`) use `OAuthError` instead.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Standard error body for 4xx/5xx responses from ",["$","code","code-0",{"children":"POST /loyalty/apply"}],",\n",["$","code","code-1",{"children":"POST /loyalty/auto-enrol"}],", and ",["$","code","code-2",{"children":"GET /loyalty/profile"}],". Access-token errors on\n",["$","code","code-3",{"children":"GET /loyalty/profile"}]," (",["$","code","code-4",{"children":"401"}],", ",["$","code","code-5",{"children":"403"}],") use ",["$","code","code-6",{"children":"OAuthError"}]," instead."]}]]}]}] 40f:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Temporary capacity issue. Revolut retries, honouring `Retry-After`.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Temporary capacity issue. Revolut retries, honouring ",["$","code","code-0",{"children":"Retry-After"}],"."]}]]}]}] 410:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet. Revolut sends it only if you operate several loyalty programs; the valid\nvalues are agreed during onboarding.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Partner-issued identifier of the loyalty program the customer selected in Revolut\nWallet. Revolut sends it only if you operate several loyalty programs; the valid\nvalues are agreed during onboarding."}]]}]}] 411:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Request body for `POST /loyalty/auto-enrol`: the enrolment claims the customer agreed\nto share, plus the loyalty program to enrol them in when you operate several. At least\none enrolment claim is always present.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Request body for ",["$","code","code-0",{"children":"POST /loyalty/auto-enrol"}],": the enrolment claims the customer agreed\nto share, plus the loyalty program to enrol them in when you operate several. At least\none enrolment claim is always present."]}]]}]}] 439:Tb4d,:::warning [Pre-release preview] This is a pre-release preview of upcoming documentation. The features, workflows, and UI described here are subject to change before the final release. ::: Revolut calls this when a customer enrols in your loyalty program from Revolut Wallet, to register them without any customer interaction. The request carries the details the customer agreed to share: their name, email, and phone number, verified by Revolut's know your customer (KYC) checks, plus any partner-configured fields they enter. Create the membership and return its identifiers plus the complete loyalty pass envelope. This endpoint is optional: tell the Revolut Wallet team during onboarding whether you implement it. If you don't, Revolut starts every new enrolment with the OAuth 2.0 browser flow (`POST /oauth2/par` with `prompt=create`). If the customer must act in a browser (accept your terms, provide missing data), return `403` with the matching UI-required code below and Revolut falls back to the OAuth 2.0 browser flow. Revolut does not retry the auto-enrol after a `403`. Revolut does not call this endpoint when the customer starts "Link existing account" in Revolut Wallet: that flow goes straight to the OAuth 2.0 browser flow with `prompt=login` and no enrolment claims. **Never silently link an existing membership:** if the shared data matches an existing account, return `403` with `account_exists`. Revolut then runs the link flow, where the customer signs in to you and consents to link their membership. Never create a duplicate membership. **Never succeed silently when the customer must accept terms or complete a step:** return the matching `403` code instead. **Idempotency (this operation has side effects on your side):** Revolut sends one `Idempotency-Key` for each logical enrolment and reuses it for every retry. If the enrolment has already completed, return the original `200` without creating another membership. Reusing the same key with a different request body returns `409`. Do not store `429` or `503` as the final result for a key; Revolut retries them with the same key. Retain completed keys and their responses for at least 7 days. **Status semantics (these drive Revolut's retry behaviour):** - `200`: membership created; return the `member_id`, `program_id`, and the complete pass envelope. - `403`: UI-required (see the codes below); Revolut never retries and falls back to the OAuth 2.0 browser flow. `insufficient_scope` is terminal. - `400` / `401`: terminal; Revolut stops retrying. - `409`: the `Idempotency-Key` was reused with a different request body; Revolut stops retrying. - `429` / `503`: temporary capacity issue; Revolut retries, honouring `Retry-After`. :::note Validate Revolut's credentials (OAuth 2.0 client credentials, optionally hardened with mutual TLS (mTLS)) and reject any unauthenticated request with `401`. ::: 415:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$439",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","div","inlinealert-0",{"data-type":"warning","className":"_25vm6y0","children":["$L43a","$L43b","$L43c"]}],"\n","$L43d","\n","$L43e","\n","$L43f","\n","$L440","\n","$L441","\n","$L442","\n","$L443","\n","$L444","\n","$L445","\n","$L446"]}]}] 416:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Contract version Revolut is calling with. Currently `2026-09-17`.\n\n:::note\nIf you receive a version you do not implement, respond with `400`.\n:::\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Contract version Revolut is calling with. Currently ",["$","code","code-0",{"children":"2026-09-17"}],"."]}],"\n",["$","div","inlinealert-0",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["If you receive a version you do not implement, respond with ",["$","code","code-0",{"children":"400"}],"."]}]}]]}]]}]}] 417:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry.\n\n**Key lifecycle.** Only a `200` completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (`202` on `POST /loyalty/apply` only, `429`, and `503`)\nmust not complete or consume the key. Terminal failures (`400`, `401`, `403`, `404`,\n`409`, `410`) need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days.\n\n**Body comparison.** The same key with a different request body returns `409`.\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"UUID scoped to your Partner ID and identifying one logical operation. Revolut\nreuses it for every retry."}],"\n",["$","p","p-1",{"children":[["$","strong","strong-0",{"children":"Key lifecycle."}]," Only a ",["$","code","code-0",{"children":"200"}]," completes and consumes the key: store the key with\nits request body and response, and replay the stored response when the key is seen\nagain. Retryable responses (",["$","code","code-1",{"children":"202"}]," on ",["$","code","code-2",{"children":"POST /loyalty/apply"}]," only, ",["$","code","code-3",{"children":"429"}],", and ",["$","code","code-4",{"children":"503"}],")\nmust not complete or consume the key. Terminal failures (",["$","code","code-5",{"children":"400"}],", ",["$","code","code-6",{"children":"401"}],", ",["$","code","code-7",{"children":"403"}],", ",["$","code","code-8",{"children":"404"}],",\n",["$","code","code-9",{"children":"409"}],", ",["$","code","code-10",{"children":"410"}],") need not be retained, as Revolut does not retry them, but if you retain\nthem anyway, replay the stored result for that key. Retain completed keys and their\nresponses for at least 7 days."]}],"\n",["$","p","p-2",{"children":[["$","strong","strong-0",{"children":"Body comparison."}]," The same key with a different request body returns ",["$","code","code-0",{"children":"409"}],".\n\"Different\" is semantic, not byte-for-byte: two bodies are the same if their parsed\nJSON is equal, regardless of key order or insignificant whitespace; any difference\nin field values is a conflict."]}]]}]}] 418:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Revolut's correlation ID for this request. Echo it back in your response.",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":"Revolut's correlation ID for this request. Echo it back in your response."}]]}]}] 436:["$","code","code-8",{"children":"date_time"}] 438:["$","tr","tr-4",{"children":[["$","td","td-0",{"children":["$","code","code-0",{"children":"insufficient_scope"}],"className":"eowryt7","ref":"$undefined"}],["$","td","td-1",{"children":["Token lacks ",["$","code","code-0",{"children":"loyalty.enrol"}]," (terminal): fix credentials during onboarding. Revolut doesn't start the browser flow."],"className":"eowryt7","ref":"$undefined"}]],"className":"eowryt5","ref":"$undefined"}] 43a:["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"ExclamationMark","color":"var(--rui-color-warning)","inline":true}]}] 43b:["$","div",null,{"className":"_25vm6y2","children":"Pre-release preview"}] 43c:["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":"This is a pre-release preview of upcoming documentation.\nThe features, workflows, and UI described here are subject to change before the final release."}]}] 43d:["$","p","p-0",{"children":"Revolut calls this when a customer enrols in your loyalty program from Revolut Wallet, to\nregister them without any customer interaction. The request carries the details the\ncustomer agreed to share: their name, email, and phone number, verified by Revolut's know\nyour customer (KYC) checks, plus any partner-configured fields they enter. Create the\nmembership and return its identifiers plus the complete loyalty pass envelope."}] 43e:["$","p","p-1",{"children":["This endpoint is optional: tell the Revolut Wallet team during onboarding whether you\nimplement it. If you don't, Revolut starts every new enrolment with the OAuth 2.0 browser\nflow (",["$","code","code-0",{"children":"POST /oauth2/par"}]," with ",["$","code","code-1",{"children":"prompt=create"}],")."]}] 43f:["$","p","p-2",{"children":["If the customer must act in a browser (accept your terms, provide missing data), return\n",["$","code","code-0",{"children":"403"}]," with the matching UI-required code below and Revolut falls back to the OAuth 2.0\nbrowser flow. Revolut does not retry the auto-enrol after a ",["$","code","code-1",{"children":"403"}],"."]}] 440:["$","p","p-3",{"children":["Revolut does not call this endpoint when the customer starts \"Link existing account\" in\nRevolut Wallet: that flow goes straight to the OAuth 2.0 browser flow with ",["$","code","code-0",{"children":"prompt=login"}],"\nand no enrolment claims."]}] 441:["$","p","p-4",{"children":[["$","strong","strong-0",{"children":"Never silently link an existing membership:"}]," if the shared data matches an existing\naccount, return ",["$","code","code-0",{"children":"403"}]," with ",["$","code","code-1",{"children":"account_exists"}],". Revolut then runs the link flow, where the\ncustomer signs in to you and consents to link their membership. Never create a duplicate\nmembership."]}] 442:["$","p","p-5",{"children":[["$","strong","strong-0",{"children":"Never succeed silently when the customer must accept terms or complete a step:"}]," return\nthe matching ",["$","code","code-0",{"children":"403"}]," code instead."]}] 443:["$","p","p-6",{"children":[["$","strong","strong-0",{"children":"Idempotency (this operation has side effects on your side):"}]," Revolut sends one\n",["$","code","code-0",{"children":"Idempotency-Key"}]," for each logical enrolment and reuses it for every retry. If the\nenrolment has already completed, return the original ",["$","code","code-1",{"children":"200"}]," without creating another\nmembership. Reusing the same key with a different request body returns ",["$","code","code-2",{"children":"409"}],". Do not\nstore ",["$","code","code-3",{"children":"429"}]," or ",["$","code","code-4",{"children":"503"}]," as the final result for a key; Revolut retries them with the\nsame key. Retain completed keys and their responses for at least 7 days."]}] 444:["$","p","p-7",{"children":["$","strong","strong-0",{"children":"Status semantics (these drive Revolut's retry behaviour):"}]}] 445:["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","code","code-0",{"children":"200"}],": membership created; return the ",["$","code","code-1",{"children":"member_id"}],", ",["$","code","code-2",{"children":"program_id"}],", and the complete pass envelope."]}],"\n",["$","li","li-1",{"children":[["$","code","code-0",{"children":"403"}],": UI-required (see the codes below); Revolut never retries and falls back to the OAuth 2.0 browser flow. ",["$","code","code-1",{"children":"insufficient_scope"}]," is terminal."]}],"\n",["$","li","li-2",{"children":[["$","code","code-0",{"children":"400"}]," / ",["$","code","code-1",{"children":"401"}],": terminal; Revolut stops retrying."]}],"\n",["$","li","li-3",{"children":[["$","code","code-0",{"children":"409"}],": the ",["$","code","code-1",{"children":"Idempotency-Key"}]," was reused with a different request body; Revolut stops retrying."]}],"\n",["$","li","li-4",{"children":[["$","code","code-0",{"children":"429"}]," / ",["$","code","code-1",{"children":"503"}],": temporary capacity issue; Revolut retries, honouring ",["$","code","code-2",{"children":"Retry-After"}],"."]}],"\n"]}] 446:["$","div","inlinealert-1",{"data-type":"note","className":"_25vm6y0","children":[["$","div",null,{"className":"_25vm6y1","children":["$","$L2d",null,{"name":"InfoOutline","color":"var(--rui-color-grey-tone-50)","inline":true}]}],null,["$","div",null,{"className":"_25vm6y3","children":["$","p","p-0",{"children":["Validate Revolut's credentials (OAuth 2.0 client credentials, optionally hardened with mutual TLS (mTLS)) and reject any unauthenticated request with ",["$","code","code-0",{"children":"401"}],"."]}]}]]}] 424:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","**Mutual TLS (mTLS).** Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth.\n\nA failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn `401` only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application).\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Mutual TLS (mTLS)."}]," Revolut presents a client certificate signed by the Revolut\nPartner CA. Validate it against the Revolut CA chain from onboarding and reject any\nrequest without a valid Revolut certificate. Your Partner ID is bound to it. Can be\nused on its own, or layered on top of JSON Web Signature (JWS) signing for defence\nin depth."]}],"\n",["$","p","p-1",{"children":["A failed mTLS handshake terminates at the TLS layer and produces no HTTP response.\nReturn ",["$","code","code-0",{"children":"401"}]," only when the connection was established but the client certificate is\nmissing, untrusted, or not bound to your Partner ID (for example, when TLS\nterminates at a proxy in front of your application)."]}]]}]}] 447:T5ba,**Message signing (JSON Web Signature, JWS).** Revolut signs every request as a detached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the `Jws-Signature` header. Verify it exactly as follows: - **Signed bytes.** The signature covers the exact raw HTTP request body bytes as transmitted; nothing is re-serialised or re-encoded. The JWS uses `b64: false` (RFC 7797), so to verify, take the body bytes you received, verbatim, as the JWS payload. - **Protected JOSE header.** `alg` (`RS256` or `ES256`), `kid` (the ID of the Revolut Partner signing key whose certificate you registered during onboarding), `iat` (integer Unix epoch seconds, UTC, when the signature was created), `b64: false`, and `crit: ["b64", "iat"]`. - **Replay protection.** Reject any request where `iat` differs from your current time by more than 5 minutes, allowing for clock skew. - **Key selection and rotation.** Verify only against the registered key whose `kid` matches the header. Revolut may register a new key (new `kid`) and keep the previous key valid for an overlap window before revoking it; accept any registered, unrevoked `kid`. - **Integrity scope.** The signature covers the request body only. The `Idempotency-Key`, `Request-Id`, HTTP method, path, and `Revolut-Api-Version` headers are not integrity-protected; TLS (optionally mTLS) and the `Idempotency-Key` semantics cover them. May be used on its own or together with mTLS. 426:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","$447",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":[["$","strong","strong-0",{"children":"Message signing (JSON Web Signature, JWS)."}]," Revolut signs every request as a\ndetached JWS (RFC 7515, Appendix F) and sends the compact serialisation in the\n",["$","code","code-0",{"children":"Jws-Signature"}]," header.\nVerify it exactly as follows:"]}],"\n",["$","ul","ul-0",{"children":["\n",["$","li","li-0",{"children":[["$","strong","strong-0",{"children":"Signed bytes."}]," The signature covers the exact raw HTTP request body bytes as\ntransmitted; nothing is re-serialised or re-encoded. The JWS uses\n",["$","code","code-0",{"children":"b64: false"}]," (RFC 7797), so to verify, take the body bytes you received, verbatim,\nas the JWS payload."]}],"\n",["$","li","li-1",{"children":[["$","strong","strong-0",{"children":"Protected JOSE header."}]," ",["$","code","code-0",{"children":"alg"}]," (",["$","code","code-1",{"children":"RS256"}]," or ",["$","code","code-2",{"children":"ES256"}],"), ",["$","code","code-3",{"children":"kid"}]," (the ID of the\nRevolut Partner signing key whose certificate you registered during onboarding),\n",["$","code","code-4",{"children":"iat"}]," (integer Unix epoch seconds, UTC, when the signature was created),\n",["$","code","code-5",{"children":"b64: false"}],", and ",["$","code","code-6",{"children":"crit: [\"b64\", \"iat\"]"}],"."]}],"\n",["$","li","li-2",{"children":[["$","strong","strong-0",{"children":"Replay protection."}]," Reject any request where ",["$","code","code-0",{"children":"iat"}]," differs from your current\ntime by more than 5 minutes, allowing for clock skew."]}],"\n",["$","li","li-3",{"children":[["$","strong","strong-0",{"children":"Key selection and rotation."}]," Verify only against the registered key whose\n",["$","code","code-0",{"children":"kid"}]," matches the header. Revolut may register a new key (new ","$L448",") and keep the\nprevious key valid for an overlap window before revoking it; accept any\nregistered, unrevoked ","$L449","."]}],"\n","$L44a","\n"]}],"\n","$L44b"]}]}] 427:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","OAuth 2.0 **client credentials**. Revolut requests a short-lived access token from your\ntoken endpoint, the `token_endpoint` in your discovery document (authenticating with its\nonboarding credential: `client_secret`, `private_key_jwt`, or its mTLS certificate), and\nsends it as `Authorization: Bearer `. The token carries the scopes Revolut\nrequests (`loyalty.apply`, `loyalty.enrol`). May be used on its own or together with\nmTLS.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["OAuth 2.0 ",["$","strong","strong-0",{"children":"client credentials"}],". Revolut requests a short-lived access token from your\ntoken endpoint, the ",["$","code","code-0",{"children":"token_endpoint"}]," in your discovery document (authenticating with its\nonboarding credential: ",["$","code","code-1",{"children":"client_secret"}],", ",["$","code","code-2",{"children":"private_key_jwt"}],", or its mTLS certificate), and\nsends it as ",["$","code","code-3",{"children":"Authorization: Bearer "}],". The token carries the scopes Revolut\nrequests (",["$","code","code-4",{"children":"loyalty.apply"}],", ",["$","code","code-5",{"children":"loyalty.enrol"}],"). May be used on its own or together with\nmTLS."]}]]}]}] 428:["$","article",null,{"className":"_8qmzte0","children":["$","$L25","Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the `loyalty.profile` scope and is sent as\n`Authorization: Bearer `.\n",{"fallback":["$","$L27",null,{"my":"auto","mx":"auto","width":"100%","maxWidth":500,"children":["$","$L28",null,{"children":[["$","$L29",null,{"icon":"ExclamationTriangle"}],["$","$L2a",null,{"children":"Content could not be rendered"}],["$","$L2b",null,{"maxWidth":320,"children":[null,["$","div",null,{"children":"This content is unavailable."}]]}]]}]}],"children":[["$","p","p-0",{"children":["Access token issued by your authorisation server at its token endpoint for the\ncustomer's enrolment or link. It must carry the ",["$","code","code-0",{"children":"loyalty.profile"}]," scope and is sent as\n",["$","code","code-1",{"children":"Authorization: Bearer "}],"."]}]]}]}] 448:["$","code","code-1",{"children":"kid"}] 449:["$","code","code-2",{"children":"kid"}] 44a:["$","li","li-4",{"children":[["$","strong","strong-0",{"children":"Integrity scope."}]," The signature covers the request body only. The\n",["$","code","code-0",{"children":"Idempotency-Key"}],", ",["$","code","code-1",{"children":"Request-Id"}],", HTTP method, path, and ",["$","code","code-2",{"children":"Revolut-Api-Version"}],"\nheaders are not integrity-protected; TLS (optionally mTLS) and the\n",["$","code","code-3",{"children":"Idempotency-Key"}]," semantics cover them."]}] 44b:["$","p","p-1",{"children":"May be used on its own or together with mTLS."}] 44c:T993,
{
  "given_name": "Alan",
  "family_name": "Maxwell",
  "email": "alan.maxwell@example.com",
  "phone_number": "+447700900123",
  "custom_fields": {
    "vehicle_type": "car",
    "licence_plate": "BX21 ABC"
  },
  "program_id": "program_gb_rewards"
}
429:["$","div","request-application/json-auto_enrol",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$44c"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"given_name\": \"Alan\",\n \"family_name\": \"Maxwell\",\n \"email\": \"alan.maxwell@example.com\",\n \"phone_number\": \"+447700900123\",\n \"custom_fields\": {\n \"vehicle_type\": \"car\",\n \"licence_plate\": \"BX21 ABC\"\n },\n \"program_id\": \"program_gb_rewards\"\n}"}]}]]}] 44d:T190d,
{
  "member_id": "9988776655",
  "program_id": "program_gb_rewards",
  "tier": "Gold",
  "points_balance": {
    "value": "4820",
    "unit": "points"
  },
  "pass": {
    "format": "revpass",
    "partner_reference": "brightpoints-9988776655",
    "version": 1,
    "rev_pass": {
      "type": "loyalty_pass",
      "semantics": {
        "member": {
          "full_name": "Alan Maxwell",
          "member_id": "9988776655",
          "member_since_on": "2026-09-17"
        },
        "loyalty": {
          "program_name": "BrightPoints",
          "tier": "Gold",
          "points_balance": {
            "value": "4820",
            "unit": "points"
          }
        }
      }
    }
  }
}
42a:["$","div","200-application/json-enrolled",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"$44d"}}]}]],"$L44e"]}] 42b:["$","div","400-application/json-validation_error",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"validation_error\",\n  \"message\": \"Request validation failed.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"validation_error\",\n \"message\": \"Request validation failed.\"\n}"}]}]]}] 42c:["$","div","401-application/json-invalid_credentials",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"invalid_credentials\",\n  \"message\": \"Missing or invalid Revolut credentials.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"invalid_credentials\",\n \"message\": \"Missing or invalid Revolut credentials.\"\n}"}]}]]}] 42d:["$","div","403-application/json-ui_required",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"ui_required\",\n  \"message\": \"The customer must complete steps in the browser before enrolment.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"ui_required\",\n \"message\": \"The customer must complete steps in the browser before enrolment.\"\n}"}]}]]}] 42e:["$","div","403-application/json-account_exists",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"account_exists\",\n  \"message\": \"The shared data matches an existing membership; the customer must sign in and link it in the browser.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"account_exists\",\n \"message\": \"The shared data matches an existing membership; the customer must sign in and link it in the browser.\"\n}"}]}]]}] 42f:["$","div","403-application/json-terms_acceptance_required",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"terms_acceptance_required\",\n  \"message\": \"The customer must accept the Terms and Conditions in the browser.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"terms_acceptance_required\",\n \"message\": \"The customer must accept the Terms and Conditions in the browser.\"\n}"}]}]]}] 430:["$","div","403-application/json-additional_data_required",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"additional_data_required\",\n  \"message\": \"Enrolment requires data the customer must provide in the browser.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"additional_data_required\",\n \"message\": \"Enrolment requires data the customer must provide in the browser.\"\n}"}]}]]}] 431:["$","div","403-application/json-insufficient_scope",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"insufficient_scope\",\n  \"message\": \"The token does not have the loyalty.enrol scope.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"insufficient_scope\",\n \"message\": \"The token does not have the loyalty.enrol scope.\"\n}"}]}]]}] 432:["$","div","409-application/json-idempotency_conflict",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"idempotency_conflict\",\n  \"message\": \"The Idempotency-Key was already used with a different request body.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"idempotency_conflict\",\n \"message\": \"The Idempotency-Key was already used with a different request body.\"\n}"}]}]]}] 433:["$","div","409-application/json-ambiguous_transaction",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"ambiguous_transaction\",\n  \"message\": \"Multiple transactions match this rrn, merchant_id, transaction_at, and total.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"ambiguous_transaction\",\n \"message\": \"Multiple transactions match this rrn, merchant_id, transaction_at, and total.\"\n}"}]}]]}] 434:["$","div","429-application/json-rate_limited",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"rate_limited\",\n  \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"rate_limited\",\n \"message\": \"Rate limit exceeded. Retry after the specified delay.\"\n}"}]}]]}] 435:["$","div","503-application/json-temporarily_unavailable",{"className":"wzy01m0 _18b50nc0 y9a0do3","children":[["$undefined",["$","$L15b",null,{"className":"_18b50nc3","defaultWrap":false,"children":["$","div",null,{"className":"_18b50nc4","dangerouslySetInnerHTML":{"__html":"
{\n  \"code\": \"temporarily_unavailable\",\n  \"message\": \"Service temporarily unavailable. Please retry.\"\n}
"}}]}]],["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"code\": \"temporarily_unavailable\",\n \"message\": \"Service temporarily unavailable. Please retry.\"\n}"}]}]]}] 44e:["$","div",null,{"className":"wzy01m1","children":["$","$L15d",null,{"code":"{\n \"member_id\": \"9988776655\",\n \"program_id\": \"program_gb_rewards\",\n \"tier\": \"Gold\",\n \"points_balance\": {\n \"value\": \"4820\",\n \"unit\": \"points\"\n },\n \"pass\": {\n \"format\": \"revpass\",\n \"partner_reference\": \"brightpoints-9988776655\",\n \"version\": 1,\n \"rev_pass\": {\n \"type\": \"loyalty_pass\",\n \"semantics\": {\n \"member\": {\n \"full_name\": \"Alan Maxwell\",\n \"member_id\": \"9988776655\",\n \"member_since_on\": \"2026-09-17\"\n },\n \"loyalty\": {\n \"program_name\": \"BrightPoints\",\n \"tier\": \"Gold\",\n \"points_balance\": {\n \"value\": \"4820\",\n \"unit\": \"points\"\n }\n }\n }\n }\n }\n}"}]}]