> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank verification prices

> GET /v3/organization/bank-verification-pricing/: public feed with the list price of bank sign-in, its add-ons and the account check in every country.



Bank Verification Prices Prompt
        Copy prompt to clipboard



      
      

\<pre>

\`Read Didit's public Bank Verification price feed.

GET https://verification.didit.me/v3/organization/bank-verification-pricing/

Auth: NONE. Send no auth header.

Success (HTTP 200):
\- currency: "USD"
\- statement_upload: { price_usd, included_after_charged_bank_attempt, standalone_available }
\- own_provider_fee_usd: fee per billable ownership check on a route that uses your own provider contract
\- countries: keyed by ISO 3166-1 alpha-3 code. Each: { name, methods: { open_banking, account_lookup } }
\- open_banking (bank sign-in): { available, market, price_usd, add_ons: { balance?, transactions? } }
\- account_lookup (account check): { available, price_usd }
\- Every price is a decimal string with 4 decimals, for example "0.7900". Parse it as a decimal, never a float.
\- price_usd is null when available is false. Show "Not available", never a price.
\- add_ons lists only the add-ons the country offers.

These are list prices before the plan discount. A negotiated or contract price replaces them for that organization.

Caching: public cache for one hour. Send If-None-Match with the ETag you received to get a 304 when nothing changed.

curl -fsS https://verification.didit.me/v3/organization/bank-verification-pricing/

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Paste into

## OverviewReturns the list price of each [Bank Verification](https://docs.didit.me/core-technology/bank-verification/verification-methods.md) method in every country.
The endpoint is public: send no auth header.
The response contains no organization data and is the same for every caller.The [Bank Verification pricing](https://docs.didit.me/getting-started/bank-verification-pricing.md) page is built from this feed.## When to use it- **Quote a bank step**: price a workflow before you build it, per country and per method.
- **Show bank prices in your product**: read the feed instead of copying prices that can change.## Methods| Key | Method | Priced |
| - | - | - |
| `open_banking` | Bank sign-in: the person signs in to their bank | Per market, the same for every bank in it. `add_ons` lists the balance and transactions add-ons the country offers, charged on top. |
| `account_lookup` | Account check: the person types their account number and the bank confirms it | Per country, once per check the bank answers. See [Account check](https://docs.didit.me/core-technology/bank-verification/account-check.md). |A method is `available` only where Didit serves it in production today.
Where it is not, `price_usd` is `null`, so the feed never shows a price you cannot buy.
`available: false` covers a country with no approved price, a method the country does not support, and a route that is not switched on yet.## Statement upload and own provider key`statement_upload.included_after_charged_bank_attempt` is `true` when the bank statement upload is included at no extra charge after a charged bank attempt in the same session.
`statement_upload.standalone_available` is `false` in production: a statement upload with no bank attempt first is not offered. Sandbox sessions can test one without billing.`own_provider_fee_usd` is charged for each billable ownership check on a route that uses your own provider contract, whatever the result. A cancelled, timed out or abandoned connection is not billed.## Discounts and contract pricesEvery price is a list price.
Your plan discount applies to the whole bank price, and a negotiated or contract price replaces the list price for your organization.## CachingResponses are cached publicly for one hour and carry an `ETag`.
Send it back in `If-None-Match` to get a `304 Not Modified` with no body when nothing changed.


## OpenAPI

````yaml GET /v3/organization/bank-verification-pricing/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/bank-verification-pricing/:
    get:
      tags:
        - Pricing
      summary: Get bank verification prices (public, unauthenticated)
      description: >-
        Returns the list price of each Bank Verification method in every
        country: bank sign-in with its balance and transactions add-ons, and the
        account check. Use it to quote a bank step before you build a workflow,
        or to show bank prices in your own product.


        Public: send no auth header. The response contains no organization data
        and is the same for every caller. It is cached publicly for one hour and
        carries an `ETag`, so send `If-None-Match` to get a `304 Not Modified`
        when nothing changed.


        A method is `available` only where Didit serves it in production today,
        and its `price_usd` is `null` everywhere else, so the feed never shows a
        price you cannot buy. `available: false` covers a country with no
        approved price, a method the country does not support, and a route that
        is not switched on yet.


        These are list prices before your plan discount. Your plan discount
        applies to the whole bank price, and a negotiated or contract price
        replaces the list price for your organization.
      operationId: get_v3_bank_verification_pricing
      parameters: []
      responses:
        '200':
          description: Bank Verification list prices by country.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankVerificationPricing'
              examples:
                Two countries:
                  summary: One country with both methods, one with neither
                  value:
                    currency: USD
                    statement_upload:
                      price_usd: '0.0000'
                      included_after_charged_bank_attempt: true
                      standalone_available: false
                    own_provider_fee_usd: '0.0200'
                    countries:
                      GBR:
                        name: United Kingdom
                        methods:
                          open_banking:
                            available: true
                            market: UK and EEA
                            price_usd: '0.7900'
                            add_ons:
                              balance: '0.3500'
                              transactions: '1.3000'
                          account_lookup:
                            available: true
                            price_usd: '0.4000'
                      CAN:
                        name: Canada
                        methods:
                          open_banking:
                            available: false
                            market: null
                            price_usd: null
                            add_ons: {}
                          account_lookup:
                            available: false
                            price_usd: null
        '304':
          description: >-
            Not modified: the `ETag` you sent in `If-None-Match` still matches.
            No body.
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -fsS
            https://verification.didit.me/v3/organization/bank-verification-pricing/
        - lang: python
          label: Python
          source: >-
            import requests


            resp =
            requests.get('https://verification.didit.me/v3/organization/bank-verification-pricing/',
            timeout=10)

            resp.raise_for_status()

            feed = resp.json()

            for iso3, country in feed['countries'].items():
                sign_in = country['methods']['open_banking']
                if sign_in['available']:
                    print(iso3, country['name'], sign_in['price_usd'])
        - lang: javascript
          label: JavaScript
          source: >-
            const feed = await
            fetch('https://verification.didit.me/v3/organization/bank-verification-pricing/').then((r)
            => r.json());

            const gbr = feed.countries.GBR.methods;

            console.log(gbr.open_banking.available ? gbr.open_banking.price_usd
            : 'Not available');

            console.log(gbr.account_lookup.available ?
            gbr.account_lookup.price_usd : 'Not available');
components:
  schemas:
    BankVerificationPricing:
      type: object
      description: >-
        Public Bank Verification list prices: the statement upload, the own
        provider key fee and each country's methods.
      required:
        - currency
        - statement_upload
        - own_provider_fee_usd
        - countries
      properties:
        currency:
          type: string
          enum:
            - USD
          description: Currency of every price in the response.
          example: USD
        statement_upload:
          $ref: '#/components/schemas/BankStatementUploadPricing'
        own_provider_fee_usd:
          type: string
          description: >-
            Fee for each billable ownership check on a route that uses your own
            provider contract instead of Didit's, charged whatever the result. A
            cancelled, timed out or abandoned connection is not billed. Decimal
            string with 4 decimals, in USD.
          example: '0.0200'
        countries:
          type: object
          description: Every country, keyed by ISO 3166-1 alpha-3 code.
          additionalProperties:
            $ref: '#/components/schemas/BankVerificationPricingCountry'
    BankStatementUploadPricing:
      type: object
      description: How the bank statement upload is priced.
      required:
        - price_usd
        - included_after_charged_bank_attempt
        - standalone_available
      properties:
        price_usd:
          type: string
          description: >-
            Price of a statement upload after a charged bank attempt. Decimal
            string with 4 decimals, in USD.
          example: '0.0000'
        included_after_charged_bank_attempt:
          type: boolean
          description: >-
            `true` when the upload is included at no extra charge after a
            charged bank attempt in the same session.
          example: true
        standalone_available:
          type: boolean
          description: >-
            `true` when a statement upload can run on its own, with no bank
            attempt first. `false` in production; sandbox sessions can test it
            without billing.
          example: false
    BankVerificationPricingCountry:
      type: object
      description: One country's Bank Verification methods and their list prices.
      required:
        - name
        - methods
      properties:
        name:
          type: string
          description: Country name in English.
          example: United Kingdom
        methods:
          $ref: '#/components/schemas/BankVerificationPricingMethods'
    BankVerificationPricingMethods:
      type: object
      description: The two Bank Verification methods in a country.
      required:
        - open_banking
        - account_lookup
      properties:
        open_banking:
          $ref: '#/components/schemas/BankSignInPricing'
        account_lookup:
          $ref: '#/components/schemas/BankAccountCheckPricing'
    BankSignInPricing:
      type: object
      description: >-
        Bank sign-in: the person signs in to their bank. Priced by market, the
        same for every bank in it.
      required:
        - available
        - market
        - price_usd
        - add_ons
      properties:
        available:
          type: boolean
          description: >-
            `true` only where Didit serves bank sign-in in this country in
            production.
          example: true
        market:
          type: string
          nullable: true
          description: The market whose price applies. `null` when not available.
          example: UK and EEA
        price_usd:
          type: string
          nullable: true
          description: >-
            List price of one bank sign-in. `null` when not available. Decimal
            string with 4 decimals, in USD.
          example: '0.7900'
        add_ons:
          type: object
          description: >-
            Add-ons priced in this country, each a decimal string with 4
            decimals in USD, added to the bank sign-in price. Only the add-ons
            the country offers are listed; empty when bank sign-in is not
            available.
          properties:
            balance:
              type: string
              description: Account balance add-on.
              example: '0.3500'
            transactions:
              type: string
              description: Transactions add-on.
              example: '1.3000'
    BankAccountCheckPricing:
      type: object
      description: >-
        Account check: the person types their account number and Didit checks it
        with the bank. Priced per country.
      required:
        - available
        - price_usd
      properties:
        available:
          type: boolean
          description: >-
            `true` only where Didit serves the account check in this country in
            production.
          example: true
        price_usd:
          type: string
          nullable: true
          description: >-
            List price of one account check the bank answers. `null` when not
            available. Decimal string with 4 decimals, in USD.
          example: '0.4000'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.