openapi: 3.0.3 info: title: 'Wonderful Payments Public API' description: 'Public API to create and retrieve payment requests using the Wonderful Payments Public API interface.' version: 1.0.0 servers: - url: 'https://wonderful.co.uk' paths: /api/public/v1/account-links: get: summary: 'List Account Links' operationId: listAccountLinks description: 'Returns a list of all Account Links created for this Merchant.' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' post: summary: 'Create Account Link Request' operationId: createAccountLinkRequest description: "Before you can request data from an ASPSP you will need to create an Account Link.\nThe Account Link uses AIS permissions that define what data the User will agree to\nshare from their linked account. If you do not provide a list of permissions we will\nrequest `ReadAccountsDetail` which will allow you to read account names and numbers.\n\nTo create an Account Link you **must** provide the ASPSP name (from the Supported\nBanks endpoint) and a unique reference to identify the Account Link\nwithin your system. You **may** also supply explicit AIS permissions, an expiry date,\nand a return URL that will redirect you user back to after the authorisation process.\n\nIf you are requesting any Transaction based permissions (`ReadTransactionsBasic`,\n`ReadTransactionsDetail`, `ReadTransactionsCredit`, `ReadTransactionsDebit`)\nwe also recommend you set the transaction start and end dates.\n\nThe API response will contain a `link_url` within the `aspsp` object. You should redirect\nyour customer to this URL to complete the authorisation process. After your customer\nhas been redirected back to your application you should use the \"Show Account Link Details\"\nendpoint to check the state of the Account Link has been set to \"consented\"." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 176491d6 status: created merchant_reference: TEST-1706026366 expires_at: '2024-07-21T16:12:47+00:00' created_at: '2024-01-23T16:12:47+00:00' return_url: 'https://your-website.example.com/redirect' permissions: - ReadAccountsDetail - ReadTransactionsDetail - ReadTransactionsCredits - ReadTransactionsDebits - ReadBalances - ReadBeneficiariesDetail - ReadDirectDebits - ReadStandingOrdersDetail - ReadAccountsBasic aspsp: name: natwest_ais display_name: 'NatWest (Staging)' consent_status: null link_url: 'https://wonderful.co.uk/link-account/176491d6?signature=fa4554d9b0e0bf0ac1ac9c48578994a008e05c146eb5f37d226f5fff99b45373' properties: data: type: object properties: id: type: string example: 176491d6 status: type: string example: created merchant_reference: type: string example: TEST-1706026366 expires_at: type: string example: '2024-07-21T16:12:47+00:00' created_at: type: string example: '2024-01-23T16:12:47+00:00' return_url: type: string example: 'https://your-website.example.com/redirect' permissions: type: array example: - ReadAccountsDetail - ReadTransactionsDetail - ReadTransactionsCredits - ReadTransactionsDebits - ReadBalances - ReadBeneficiariesDetail - ReadDirectDebits - ReadStandingOrdersDetail - ReadAccountsBasic items: type: string aspsp: type: object properties: name: type: string example: natwest_ais display_name: type: string example: 'NatWest (Staging)' consent_status: type: string example: null link_url: type: string example: 'https://wonderful.co.uk/link-account/176491d6?signature=fa4554d9b0e0bf0ac1ac9c48578994a008e05c146eb5f37d226f5fff99b45373' 401: description: 'invalid token' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error description: 'The state of the AIS Account Link. Example: created' error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' requestBody: required: true content: application/json: schema: type: object properties: selected_aspsp: type: string description: 'The ASPSP that the customer banks with (this determines which banking app to open). Values should match those provided from the Supported Banks endpoint.' example: natwest_ais merchant_reference: type: string description: 'Your account link reference. This must be unique and should uniquely identify the account link on your system.' example: MYREF-661D6B9CB5D09 expires_at: type: string description: 'The date and time you want the account link to expire. Must be a valid date.' example: '2024-07-15T18:02:04+00:00' permissions: type: array description: 'Array of required AIS permissions as defined by Open Banking.' example: - - ReadAccountsDetail - ReadBalances - ReadTransactionsDetail - ReadTransactionsDebits - ReadTransactionsCredits items: type: string transactions_start_at: type: string description: 'The date and time you want read transactions from. Must be a valid date.' example: '2024-03-15T18:02:04+00:00' transactions_end_at: type: string description: 'The date and time you want read transactions until. Must be a valid date.' example: '2024-04-15T18:02:04+00:00' return_url: type: string description: 'The URL we will redirect your user back to after they have accepted/declined consent at their bank. Must be a valid URL.' example: 'https://your-website.example.com/redirect' required: - selected_aspsp - merchant_reference - return_url '/api/public/v1/account-links/{ais_account_link_id}': get: summary: 'Show Account Link Details' operationId: showAccountLinkDetails description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 176491d6 status: consented merchant_reference: TEST-1706026366 expires_at: '2024-07-21T16:12:58+00:00' created_at: '2024-01-23T16:12:47+00:00' return_url: 'https://eoz5oi25gqxj9rb.m.pipedream.net/' permissions: - ReadAccountsDetail - ReadAccountsDetail - ReadAccountsDetail - ReadTransactionsDetail - ReadTransactionsCredits - ReadTransactionsDebits - ReadBalances - ReadBeneficiariesDetail - ReadDirectDebits - ReadStandingOrdersDetail - ReadAccountsBasic aspsp: name: natwest_ais display_name: 'NatWest (Staging)' consent_status: Authorised properties: data: type: object properties: id: type: string example: 176491d6 status: type: string example: consented merchant_reference: type: string example: TEST-1706026366 expires_at: type: string example: '2024-07-21T16:12:58+00:00' created_at: type: string example: '2024-01-23T16:12:47+00:00' return_url: type: string example: 'https://eoz5oi25gqxj9rb.m.pipedream.net/' permissions: type: array example: - ReadAccountsDetail - ReadAccountsDetail - ReadAccountsDetail - ReadTransactionsDetail - ReadTransactionsCredits - ReadTransactionsDebits - ReadBalances - ReadBeneficiariesDetail - ReadDirectDebits - ReadStandingOrdersDetail - ReadAccountsBasic items: type: string aspsp: type: object properties: name: type: string example: natwest_ais display_name: type: string example: 'NatWest (Staging)' consent_status: type: string example: Authorised 401: description: 'invalid token' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error description: 'The state of the AIS Account Link. Example: consented' error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'not found' content: application/json: schema: type: object example: status: error error_code: not_found error_message: 'Account link not found.' properties: status: type: string example: error description: 'The state of the AIS Account Link. Example: consented' error_code: type: string example: not_found error_message: type: string example: 'Account link not found.' tags: - 'Account Information Services' delete: summary: 'Revoke Account Link' operationId: revokeAccountLink description: '' parameters: [] responses: { } tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: odio required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts': get: summary: 'List Accounts' operationId: listAccounts description: "Show account details for all linked Accounts.\n\n- Requires permissions: `ReadAccountsBasic` or `ReadAccountsDetail`\n- OB Endpoint: GET /accounts\n- ASPSP Implementation : Mandatory" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: account: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: GBP account_type: Personal account_sub_type: Savings description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' - account_id: 3910a968-c46a-44d0-b648-015af1e92cfe currency: GBP account_type: Personal account_sub_type: CurrentAccount description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345601' name: 'Sydney Beard' links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts' properties: data: type: object properties: account: type: array example: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: GBP account_type: Personal account_sub_type: Savings description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' - account_id: 3910a968-c46a-44d0-b648-015af1e92cfe currency: GBP account_type: Personal account_sub_type: CurrentAccount description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345601' name: 'Sydney Beard' items: type: object properties: account_id: type: string example: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: type: string example: GBP account_type: type: string example: Personal account_sub_type: type: string example: Savings description: type: string example: Personal nickname: type: string example: 'Sydney Beard' account: type: array example: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' items: type: object properties: scheme_name: type: string example: UK.OBIE.SortCodeAccountNumber identification: type: string example: '50000012345602' name: type: string example: 'Sydney Beard' links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: qui required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}': get: summary: 'Show Account Details' operationId: showAccountDetails description: "Account details for a specific linked Account\n\n- Requires permissions: `ReadAccountsBasic` or `ReadAccountsDetail`\n- OB Endpoint: GET /accounts/{accountId}\n- ASPSP Implementation : Mandatory" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: account: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: GBP account_type: Personal account_sub_type: Savings description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696' properties: data: type: object properties: account: type: array example: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: GBP account_type: Personal account_sub_type: Savings description: Personal nickname: 'Sydney Beard' account: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' items: type: object properties: account_id: type: string example: 184bfebc-1314-41aa-9d76-af7e84f90696 currency: type: string example: GBP account_type: type: string example: Personal account_sub_type: type: string example: Savings description: type: string example: Personal nickname: type: string example: 'Sydney Beard' account: type: array example: - scheme_name: UK.OBIE.SortCodeAccountNumber identification: '50000012345602' name: 'Sydney Beard' items: type: object properties: scheme_name: type: string example: UK.OBIE.SortCodeAccountNumber identification: type: string example: '50000012345602' name: type: string example: 'Sydney Beard' links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: dolore required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: alias required: true schema: type: string '/api/public/v1/{ais_account_link_id}/balances': get: summary: 'List Balances' operationId: listBalances description: "Returns the balances for all linked Accounts.\n\n- Requires permissions: `ReadBalances`\n- OB Endpoint: GET /balances\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'endpoint not supported: {' content: text/plain: schema: type: string example: 'status":"error","error_code":"not_supported","error_message":"This ASPSP does not support the Balances bulk endpoint","account_link":"176491d6"}' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: veniam required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/balances': get: summary: 'Account Balances' operationId: accountBalances description: "List the Balances for a specific linked Account\n\n- Requires permissions: `ReadBalances`\n- OB Endpoint: GET /accounts/{accountId}/balances\n- ASPSP Implementation : Mandatory" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: balance: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 credit_debit_indicator: Credit type: Expected date_time: '2024-01-16T16:44:36.813Z' amount: amount: '94213.07' currency: GBP - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 credit_debit_indicator: Credit type: ForwardAvailable date_time: '2024-01-16T16:44:36.813Z' amount: amount: '94213.07' currency: GBP links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/balances' properties: data: type: object properties: balance: type: array example: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 credit_debit_indicator: Credit type: Expected date_time: '2024-01-16T16:44:36.813Z' amount: amount: '94213.07' currency: GBP - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 credit_debit_indicator: Credit type: ForwardAvailable date_time: '2024-01-16T16:44:36.813Z' amount: amount: '94213.07' currency: GBP items: type: object properties: account_id: type: string example: 184bfebc-1314-41aa-9d76-af7e84f90696 credit_debit_indicator: type: string example: Credit type: type: string example: Expected date_time: type: string example: '2024-01-16T16:44:36.813Z' amount: type: object properties: amount: type: string example: '94213.07' currency: type: string example: GBP links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/balances' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: sequi required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: dicta required: true schema: type: string '/api/public/v1/{ais_account_link_id}/beneficiaries': get: summary: 'List Beneficiaries' operationId: listBeneficiaries description: "Beneficiaries of all linked accounts\n\n- Requires permissions: `ReadBeneficiariesBasic` or `ReadBeneficiariesDetail`\n- OB Endpoint: GET /beneficiaries\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'endpoint not supported' content: application/json: schema: type: object example: status: error error_code: not_supported error_message: 'This ASPSP does not support the Beneficiaries bulk endpoint' account_link: 176491d6 properties: status: type: string example: error error_code: type: string example: not_supported error_message: type: string example: 'This ASPSP does not support the Beneficiaries bulk endpoint' account_link: type: string example: 176491d6 tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: dolorem required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/beneficiaries': get: summary: 'Account Beneficiaries' operationId: accountBeneficiaries description: "Beneficiaries for a specific linked Account\n\n- Requires permissions: `ReadBeneficiariesBasic` or `ReadBeneficiariesDetail`\n- OB Endpoint: GET /accounts/{accountId}/beneficiaries\n- ASPSP Implementation : Conditional" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: beneficiary: [] links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/beneficiaries' properties: data: type: object properties: beneficiary: type: array example: [] links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/beneficiaries' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: perspiciatis required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: quaerat required: true schema: type: string '/api/public/v1/{ais_account_link_id}/direct-debits': get: summary: 'List Direct Debits' operationId: listDirectDebits description: "Direct Debits for all linked Accounts\n\n- Requires permissions: `ReadDirectDebits`\n- OB Endpoint: GET /direct-debits\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'endpoint not supported' content: application/json: schema: type: object example: status: error error_code: not_supported error_message: 'This ASPSP does not support the Direct Debit bulk endpoint' account_link: 176491d6 properties: status: type: string example: error error_code: type: string example: not_supported error_message: type: string example: 'This ASPSP does not support the Direct Debit bulk endpoint' account_link: type: string example: 176491d6 tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: omnis required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/direct-debits': get: summary: 'Account Direct Debits' operationId: accountDirectDebits description: "Direct Debits for a specific linked Account\n\n- Requires permissions: `ReadDirectDebits`\n- OB Endpoint: GET /accounts/{accountId}/direct-debits\n- ASPSP Implementation : Conditional" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: direct_debit: [] links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/direct-debits' properties: data: type: object properties: direct_debit: type: array example: [] links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/direct-debits' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: saepe required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: sunt required: true schema: type: string '/api/public/v1/{ais_account_link_id}/party': get: summary: 'PSU Party' operationId: pSUParty description: "Returns the details of the user that authorised the Account Link.\n\n- Requires permissions: `ReadPartyPSU`\n- OB Endpoint: GET /party\n- ASPSP Implementation : Conditional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: officia required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/parties': get: summary: 'Account Parties' operationId: accountParties description: "Return details on the account owner(s)/holder(s) and operator(s).\n\n- Requires permissions: `ReadParty`\n- OB Endpoint: GET /accounts/{accountId}/parties\n- ASPSP Implementation : Conditional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: eaque required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: id required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/party': get: summary: 'Account Party' operationId: accountParty description: "Return details on the account owner/holder:\n- In the case of a business, this will be the details of the business\n- In the case of a joint account, this will be the party that has given authorisation to the AISP to view the account\n\n- Requires permissions: `ReadParty`\n- OB Endpoint: GET /accounts/{accountId}/party\n- ASPSP Implementation : Conditional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: aut required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: a required: true schema: type: string '/api/public/v1/{ais_account_link_id}/scheduled-payments': get: summary: 'List Scheduled Payments' operationId: listScheduledPayments description: "Scheduled Payments for all linked Accounts\n\n- Requires permissions: `ReadScheduledPaymentsBasic` or `ReadScheduledPaymentsDetail`\n- OB Endpoint: GET /scheduled-payments\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: esse required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/scheduled-payments': get: summary: 'Account Scheduled Payments' operationId: accountScheduledPayments description: "Scheduled Payments for a specific linked Account\n\n- Requires permissions: `ReadScheduledPaymentsBasic` or `ReadScheduledPaymentsDetail`\n- OB Endpoint: GET /accounts/{accountId}/scheduled-payments\n- ASPSP Implementation : Conditional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: doloremque required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: possimus required: true schema: type: string '/api/public/v1/{ais_account_link_id}/standing-orders': get: summary: 'List Standing Orders' operationId: listStandingOrders description: "Standing Orders for all linked Accounts\n\n- Requires permissions: `ReadStandingOrdersBasic` or `ReadStandingOrdersDetail`\n- OB Endpoint: GET /standing-orders\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'endpoint not supported' content: application/json: schema: type: object example: status: error error_code: not_supported error_message: 'This ASPSP does not support the Standing Orders bulk endpoint' account_link: 176491d6 properties: status: type: string example: error error_code: type: string example: not_supported error_message: type: string example: 'This ASPSP does not support the Standing Orders bulk endpoint' account_link: type: string example: 176491d6 tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: quam required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/standing-orders': get: summary: 'Account Standing Orders' operationId: accountStandingOrders description: "Standing Orders for a specific linked Account\n\n\n- Requires permissions: `ReadStandingOrdersBasic` or `ReadStandingOrdersDetail`\n- OB Endpoint: GET /accounts/{accountId}/standing-orders\n- ASPSP Implementation : Conditional" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: standing_order: [] links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/standing-orders' properties: data: type: object properties: standing_order: type: array example: [] links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/standing-orders' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: qui required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: nemo required: true schema: type: string '/api/public/v1/{ais_account_link_id}/transactions': get: summary: 'List Transactions' operationId: listTransactions description: "Transactions for all linked Accounts\n\n- Requires permissions: `ReadTransactionsCredits` and/or `ReadTransactionsDebits`, plus `ReadTransactionsBasic` or `ReadTransactionsDetail`\n- OB Endpoint: GET /transactions\n- ASPSP Implementation : Optional" parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'endpoint not supported' content: application/json: schema: type: object example: status: error error_code: not_supported error_message: 'This ASPSP does not support the Transactions bulk endpoint' account_link: 176491d6 properties: status: type: string example: error error_code: type: string example: not_supported error_message: type: string example: 'This ASPSP does not support the Transactions bulk endpoint' account_link: type: string example: 176491d6 tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: et required: true schema: type: string '/api/public/v1/{ais_account_link_id}/accounts/{account_id}/transactions': get: summary: 'Account Transactions' operationId: accountTransactions description: "Transactions for a specific linked Account\n\n- Requires permissions: `ReadTransactionsCredits` and/or `ReadTransactionsDebits`, plus `ReadTransactionsBasic` or `ReadTransactionsDetail`\n- OB Endpoint: GET /accounts/{accountId}/transactions\n- ASPSP Implementation : Mandatory" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: transaction: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 transaction_id: 8cda05f1-39bb-4824-84a1-78a41b60260c credit_debit_indicator: Debit status: Booked booking_date_time: '2024-01-16T16:44:36.813Z' amount: amount: '25.00' currency: GBP proprietary_bank_transaction_code: code: TFR transaction_information: WNDRFL000043963 balance: credit_debit_indicator: Credit type: Information amount: amount: '94213.07' currency: GBP - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 transaction_id: 667de332-ef37-4758-be57-cc063318d75b credit_debit_indicator: Debit status: Booked booking_date_time: '2024-01-15T10:16:51.046Z' amount: amount: '0.20' currency: GBP proprietary_bank_transaction_code: code: TFR transaction_information: WOO-87EB1D-59 balance: credit_debit_indicator: Credit type: Information amount: amount: '94238.07' currency: GBP links: self: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/transactions' properties: data: type: object properties: transaction: type: array example: - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 transaction_id: 8cda05f1-39bb-4824-84a1-78a41b60260c credit_debit_indicator: Debit status: Booked booking_date_time: '2024-01-16T16:44:36.813Z' amount: amount: '25.00' currency: GBP proprietary_bank_transaction_code: code: TFR transaction_information: WNDRFL000043963 balance: credit_debit_indicator: Credit type: Information amount: amount: '94213.07' currency: GBP - account_id: 184bfebc-1314-41aa-9d76-af7e84f90696 transaction_id: 667de332-ef37-4758-be57-cc063318d75b credit_debit_indicator: Debit status: Booked booking_date_time: '2024-01-15T10:16:51.046Z' amount: amount: '0.20' currency: GBP proprietary_bank_transaction_code: code: TFR transaction_information: WOO-87EB1D-59 balance: credit_debit_indicator: Credit type: Information amount: amount: '94238.07' currency: GBP items: type: object properties: account_id: type: string example: 184bfebc-1314-41aa-9d76-af7e84f90696 transaction_id: type: string example: 8cda05f1-39bb-4824-84a1-78a41b60260c credit_debit_indicator: type: string example: Debit status: type: string example: Booked booking_date_time: type: string example: '2024-01-16T16:44:36.813Z' amount: type: object properties: amount: type: string example: '25.00' currency: type: string example: GBP proprietary_bank_transaction_code: type: object properties: code: type: string example: TFR transaction_information: type: string example: WNDRFL000043963 balance: type: object properties: credit_debit_indicator: type: string example: Credit type: type: string example: Information amount: type: object properties: amount: type: string example: '94213.07' currency: type: string example: GBP links: type: object properties: self: type: string example: 'https://wonderful.co.uk/api/public/v1/176491d6/accounts/184bfebc-1314-41aa-9d76-af7e84f90696/transactions' 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Account Information Services' parameters: - in: path name: ais_account_link_id description: 'The ID of the ais account link.' example: totam required: true schema: type: string - in: path name: account_id description: 'The ID of the account.' example: iusto required: true schema: type: string '/api/public/v1/payments/{payment}': get: summary: 'Show Payment Request.' operationId: showPaymentRequest description: "This endpoint will return the current state of your Payment Request. You will need to provide the Wonderful\nPayment ID we sent you in the HTTP response when you created the Payment Request, so make sure you keep track of\nthat as that is the only value we currently support to look up an existing payment." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: status: expired amount: 15 formatted_amount: '0.15' currency: GBP customer_email_hash: 832a8c7bcdd314b13178fdef5f94c3f9017250e67d9cc65bd607a02d587321be payment_reference: WNDRFL000015550 wonderful_payments_id: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e created_at: '2022-08-10T14:47:55.000000Z' selected_bank: null redirect_url: 'https://wonderful-org.test/payment-redirect' webhook_url: 'https://wonderful-org.test/webhooks/v1/wonderful-payments' is_refundable: false properties: data: type: object properties: status: type: string example: expired amount: type: integer example: 15 formatted_amount: type: string example: '0.15' currency: type: string example: GBP customer_email_hash: type: string example: 832a8c7bcdd314b13178fdef5f94c3f9017250e67d9cc65bd607a02d587321be payment_reference: type: string example: WNDRFL000015550 wonderful_payments_id: type: string example: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e created_at: type: string example: '2022-08-10T14:47:55.000000Z' selected_bank: type: string example: null redirect_url: type: string example: 'https://wonderful-org.test/payment-redirect' webhook_url: type: string example: 'https://wonderful-org.test/webhooks/v1/wonderful-payments' is_refundable: type: boolean example: false 401: description: 'Invalid auth token' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error description: 'Current status. Enum: created, selected, consented, redirected, authed, pending, accepted, completed, rejected, cancelled, errored, expired. Example: completed' error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' 404: description: 'Payment Request not found' content: application/json: schema: type: object example: status: error error_code: failed_validation error_message: 'no payment found' properties: status: type: string example: error description: 'Current status. Enum: created, selected, consented, redirected, authed, pending, accepted, completed, rejected, cancelled, errored, expired. Example: completed' error_code: type: string example: failed_validation error_message: type: string example: 'no payment found' tags: - 'Payment Requests' parameters: - in: path name: payment description: 'Wonderful Payment ID.' example: 44a3a820-2d9b-43c6-a4e5-666486ec8cfa required: true schema: type: string /api/public/v1/payments: post: summary: 'Create a new Payment Request.' operationId: createANewPaymentRequest description: "To create a new payment, we need to know who is making the payment, how much the payment should be for, and where\nto send the person making the payment after they have completed the payment or cancelled. You can also optionally\nsend us an extra URL where we will send you webhook updates as the payment is progressing through the checkout.\n\nIf the customer bank name and account details are known they can be set on the request in the `payer` attribute.\nNote: If the account details and ASPSP (bank) do not match, the ASPSP will reject the payment request." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: status: created payment_reference: WNDRFL000015550 wonderful_payments_id: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e redirect_to: 'http://wonderful.co.uk/payments/48ee6f08-d6d6-4894-8866-2fdca56bcd2e' properties: data: type: object properties: status: type: string example: created payment_reference: type: string example: WNDRFL000015550 wonderful_payments_id: type: string example: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e redirect_to: type: string example: 'http://wonderful.co.uk/payments/48ee6f08-d6d6-4894-8866-2fdca56bcd2e' 400: description: 'Validation error' content: application/json: schema: type: object example: status: error error_code: failed_validation error_message: '
' properties: status: type: string example: error description: 'Current status. Example: created' error_code: type: string example: failed_validation error_message: type: string example: '
' 401: description: 'Invalid auth token' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error description: 'Current status. Example: created' error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Payment Requests' requestBody: required: true content: application/json: schema: type: object properties: customer_email_address: type: string description: 'The email address of the person making the payment i.e. the customer. Must be a valid email address.' example: customer@example.com merchant_payment_reference: type: string description: 'Your payment reference. This must be unique and should uniquely identify the transaction on your system. Must not be greater than 18 characters.' example: MY_ORDER_12345 amount: type: integer description: 'The payment request amount in pence sterling e.g. £12.45 would be sent as 1245. Must be at least 5.' example: 12345 redirect_url: type: string description: 'The URL to redirect the customer to after the payment has been completed (or cancelled). Must be a valid URL.' example: 'https://your-website.example.com/return-url' webhook_url: type: string description: 'The URL that you want us to send webhook updates to for this specific transaction. Must be a valid URL.' example: 'https://your-website.example.com/webhook-url' selected_aspsp: type: string description: 'The ASPSP that the customer banks with (this determines which banking app to open). Values should match those provided from the banks list endpoint. This field is required when payer is present.' example: natwest consented_at: type: string description: 'ISO 8601 date time string that represents when the customer consented to Wonderful processing a payment initiation on their behalf. This field is required when selected_aspsp or payer is present. Must be a valid date.' example: '2024-04-15T18:02:04+00:00' payer: type: object description: '' example: [] properties: account_name: type: string description: 'The name of the customer as it appears on their bank account. This field is required when payer is present.' example: 'Sydney Beard' account_number: type: string description: 'The customer''s bank account number. Must be 8 digits, zero-padded. This field is required when payer is present. Must be 8 characters.' example: '12345602' sort_code: type: string description: 'The customer''s bank sort code. Must be 6 digits, zero-padded. This field is required when payer is present. Must be 6 characters.' example: '500000' required: - customer_email_address - merchant_payment_reference - amount - redirect_url '/api/public/v1/payments/{payment}/refunds': get: summary: '' operationId: getApiPublicV1PaymentsPaymentRefunds description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Refund Requests' post: summary: 'Create a new Refund Request.' operationId: createANewRefundRequest description: "To create a new refund, we need to how much the refund should be for, and where\nto send the person making the payment after they have completed the payment or cancelled. You can also optionally\nsend us an extra URL where we will send you webhook updates as the payment is progressing through the checkout." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: status: created payment_reference: WNDRFL000015550 wonderful_payments_id: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e redirect_to: 'https://wonderful.co.uk/payments/48ee6f08-d6d6-4894-8866-2fdca56bcd2e' properties: data: type: object properties: status: type: string example: created payment_reference: type: string example: WNDRFL000015550 wonderful_payments_id: type: string example: 48ee6f08-d6d6-4894-8866-2fdca56bcd2e redirect_to: type: string example: 'https://wonderful.co.uk/payments/48ee6f08-d6d6-4894-8866-2fdca56bcd2e' 400: description: 'Validation error' content: application/json: schema: type: object example: status: error error_code: failed_validation error_message: '
' properties: status: type: string example: error description: 'Current status. Example: created' error_code: type: string example: failed_validation error_message: type: string example: '
' 401: description: 'Invalid auth token' content: application/json: schema: type: object example: status: error error_code: unauthorized error_message: 'Invalid Bearer Token' properties: status: type: string example: error description: 'Current status. Example: created' error_code: type: string example: unauthorized error_message: type: string example: 'Invalid Bearer Token' tags: - 'Refund Requests' requestBody: required: true content: application/json: schema: type: object properties: amount: type: integer description: 'The refund request amount in pence sterling e.g. £12.45 would be sent as 1245. Must be at least 1.' example: 12345 merchant_payment_reference: type: string description: 'Your payment reference. This should uniquely identify the refund on your system. Must not be greater than 18 characters.' example: MY_REFUND_12345 redirect_url: type: string description: 'The URL to redirect the merchant to after the refund has been completed (or cancelled). Must be a valid URL.' example: 'https://your-website.example.com/return-url' webhook_url: type: string description: 'The URL that you want us to send webhook updates to for this specific refund. Must be a valid URL.' example: 'https://your-website.example.com/webhook-url' required: - amount - redirect_url parameters: - in: path name: payment description: 'The payment.' example: quo required: true schema: type: string /api/public/v1/supported-banks: get: summary: 'Active ASPSPs List' operationId: activeASPSPsList description: "Returns a list of the currently supported ASPSPs, with their current status and latest logo image.\nThe status could be:\n- `online`: no issues reported, payments are being accepted.\n- `issues`: payments are being accepted, but we are aware of some service degradation.\n- `offline`: we support this bank, but payments are not currently being accepted.\n\nWhen an ASPSP is marked as `issues` we may be experiencing some connectivity or processing errors\nbetween Wonderful Payments and the ASPSP. Our systems normally self-heal and return ASPSPs to `online`\nwhen they detect normal service has resumed.\nIn cases where an ASPSP is marked `offline` there may be an active service incident or a situation\nwhere we have manually disabled the connection for our customers benefit. Service disruptions\nwill be communicated on our social channels and on our\n[Wonderful Support](https://wonderful.support) website.\n\n### Selecting the ASPSP at the time of checkout\nWhen creating a Payment Request with the ASPSP selected at the Merchant, use the `aspsp_name`\nfrom this endpoint as the `selected_aspsp` value when creating the Payment Request.\nFor example, to select \"Bank of Scotland\" use the value `bos`." parameters: - in: query name: type description: 'The ASPSP type you require. Set to `ais` to return AIS (accounts) banks. Returns PIS (payments) by default.' example: pis required: false schema: type: string description: 'The ASPSP type you require. Set to `ais` to return AIS (accounts) banks. Returns PIS (payments) by default.' example: pis enum: - ais - pis responses: 200: description: 'PIS (Payments) list' content: application/json: schema: type: object example: data: - aspsp_name: aib display_name: 'Allied Irish Bank (GB)' logo: 'https://payments.test/img/bank_logos/aib.png' status: online - aspsp_name: danske display_name: 'Danske Bank' logo: 'https://payments.test/img/bank_logos/danske.png' status: online properties: data: type: array example: - aspsp_name: aib display_name: 'Allied Irish Bank (GB)' logo: 'https://payments.test/img/bank_logos/aib.png' status: online - aspsp_name: danske display_name: 'Danske Bank' logo: 'https://payments.test/img/bank_logos/danske.png' status: online items: type: object properties: aspsp_name: type: string example: aib display_name: type: string example: 'Allied Irish Bank (GB)' logo: type: string example: 'https://payments.test/img/bank_logos/aib.png' status: type: string example: online tags: - 'Supported Banks' tags: - name: 'Account Information Services' description: '' - name: 'Payment Requests' description: '' - name: 'Refund Requests' description: '' - name: 'Supported Banks' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can request your Public API token by contacting Wonderful support.' security: - default: []