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

# Top up a budget by bank transfer

> Starts a pay-by-bank top-up of one of the account's budgets and returns the `checkoutUrl` to send the customer to. Returns 201 for a new top-up, or 200 with the original when `idempotencyKey` was already used on this account. Returns 404 if the budget is not on the account or not visible to the caller.



## OpenAPI

````yaml /autogenerated/openapi/roqqett.openapi.json post /roqqett/top-ups
openapi: 3.1.0
info:
  title: Roqqett API
  version: 2.0.0
  description: Version 2
  license:
    name: UNLICENSED
    url: https://docs.equalsmoney.com
servers:
  - url: https://api.equalsmoney.com/v2
    description: Production
security: []
paths:
  /roqqett/top-ups:
    post:
      tags:
        - Top-ups
      summary: Top up a budget by bank transfer
      description: >-
        Starts a pay-by-bank top-up of one of the account's budgets and returns
        the `checkoutUrl` to send the customer to. Returns 201 for a new top-up,
        or 200 with the original when `idempotencyKey` was already used on this
        account. Returns 404 if the budget is not on the account or not visible
        to the caller.
      operationId: createTopUp
      parameters:
        - name: accountId
          in: query
          schema:
            description: The ID of the account to work with.
            type:
              - string
            example: F50091
          required: true
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type:
                - object
              properties:
                budgetId:
                  type:
                    - string
                  format: uuid
                  maxLength: 36
                  description: >-
                    The budget to top up. It must be on the account and visible
                    to the caller.
                  example: 775596ae-2624-40af-a9dc-9756110a4a03
                amount:
                  type:
                    - object
                  properties:
                    amount:
                      type:
                        - string
                      maxLength: 32
                      pattern: ^[0-9]+(\.[0-9]+)?$
                      description: >-
                        Decimal amount in major units, as a string. Never a
                        float.
                      example: '10000.00'
                    currencyCode:
                      type:
                        - string
                      enum:
                        - GBP
                        - EUR
                      description: >-
                        ISO-4217 code of a currency Roqqett can take payments
                        in: GBP over Faster Payments, EUR over SEPA Instant.
                      example: GBP
                  required:
                    - amount
                    - currencyCode
                  description: How much to top up. Must be in a currency the budget holds.
                idempotencyKey:
                  type:
                    - string
                  minLength: 1
                  maxLength: 255
                  description: >-
                    Caller-supplied key that makes creation safe to retry: a
                    repeat with the same key on the same account returns the
                    original checkout session instead of creating a second one.
                    Use one key per payment journey.
                  example: 3f9a1c2e-7b4d-4e8a-9c6f-0d2b5a8e1f47
                returnUrl:
                  type:
                    - string
                  format: uri
                  maxLength: 2048
                  description: Where the payer is sent once the top-up ends.
                  example: https://app.equalsmoney.com/top-up/complete
                locale:
                  type:
                    - string
                  pattern: ^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|\d{3}))?$
                  description: >-
                    BCP 47 language tag for the payer-facing checkout. Matches
                    the locale set held against a person and account in CIS, so
                    a value forwarded from Equals Money always validates. A
                    locale Roqqett has no translations for yet renders in en-GB.
                  example: en-GB
              required:
                - budgetId
                - amount
                - idempotencyKey
              example:
                budgetId: 775596ae-2624-40af-a9dc-9756110a4a03
                amount:
                  amount: '10000.00'
                  currencyCode: GBP
                idempotencyKey: 3f9a1c2e-7b4d-4e8a-9c6f-0d2b5a8e1f47
                returnUrl: https://app.equalsmoney.com/top-up/complete
                locale: en-GB
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  id:
                    type:
                      - string
                    format: uuid
                    maxLength: 36
                    description: 'The ID of a checkout session: one payment journey.'
                    example: 0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  status:
                    description: >-
                      OPEN until the payer authorises at their bank, PROCESSING
                      while the payment settles, then exactly one terminal
                      status.
                    type:
                      - string
                    enum:
                      - OPEN
                      - PROCESSING
                      - COMPLETED
                      - CANCELLED
                      - ABANDONED
                      - EXPIRED
                    example: OPEN
                  amount:
                    type:
                      - object
                    properties:
                      amount:
                        type:
                          - string
                        maxLength: 32
                        pattern: ^[0-9]+(\.[0-9]+)?$
                        description: >-
                          Decimal amount in major units, as a string. Never a
                          float.
                        example: '10000.00'
                      currencyCode:
                        type:
                          - string
                        enum:
                          - GBP
                          - EUR
                        description: >-
                          ISO-4217 code of a currency Roqqett can take payments
                          in: GBP over Faster Payments, EUR over SEPA Instant.
                        example: GBP
                    required:
                      - amount
                      - currencyCode
                    description: The total the payer pays, including any shipping.
                  locale:
                    type:
                      - string
                      - 'null'
                    pattern: ^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|\d{3}))?$
                    description: >-
                      The locale the checkout is presented in. `null` when
                      neither the request nor the checkout set one, in which
                      case the payer's browser preference decides and en-GB is
                      the final fallback.
                    example: en-GB
                  checkoutUrl:
                    type:
                      - string
                    format: uri
                    maxLength: 2048
                    description: Where to send the payer to pay. Valid until `expiresAt`.
                    example: >-
                      https://pay.roqqett.com/ch/pay/s/0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  returnUrl:
                    type:
                      - string
                      - 'null'
                    format: uri
                    maxLength: 2048
                    description: Where the payer is sent once the session ends.
                    example: https://shop.example.com/checkout/complete
                  paymentId:
                    type:
                      - string
                      - 'null'
                    format: uuid
                    maxLength: 36
                    description: The payment, once the payer has authorised one.
                    example: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                  expiresAt:
                    type:
                      - string
                    format: date-time
                    description: When an OPEN session expires.
                    example: '2026-10-02T13:00:00Z'
                  budgetId:
                    type:
                      - string
                    format: uuid
                    maxLength: 36
                    description: The budget being topped up.
                    example: 775596ae-2624-40af-a9dc-9756110a4a03
                  createdAt:
                    type:
                      - string
                    format: date-time
                    description: >-
                      The date the Resource was initially created. ISO 8601
                      format without milliseconds.
                  updatedAt:
                    type:
                      - string
                    format: date-time
                    description: >-
                      The date the Resource was last modified. ISO 8601 format
                      without milliseconds.
                required:
                  - id
                  - status
                  - amount
                  - locale
                  - checkoutUrl
                  - returnUrl
                  - paymentId
                  - expiresAt
                  - budgetId
                  - createdAt
                  - updatedAt
                example:
                  id: 0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  status: OPEN
                  amount:
                    amount: '10000.00'
                    currencyCode: GBP
                  locale: en-GB
                  checkoutUrl: >-
                    https://pay.roqqett.com/ch/pay/s/0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  returnUrl: https://shop.example.com/checkout/complete
                  paymentId: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                  expiresAt: '2026-10-02T13:00:00Z'
                  budgetId: 775596ae-2624-40af-a9dc-9756110a4a03
                  createdAt: '2019-08-24T14:15:22Z'
                  updatedAt: '2019-08-24T14:15:22Z'
        '201':
          description: Created
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  id:
                    type:
                      - string
                    format: uuid
                    maxLength: 36
                    description: 'The ID of a checkout session: one payment journey.'
                    example: 0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  status:
                    description: >-
                      OPEN until the payer authorises at their bank, PROCESSING
                      while the payment settles, then exactly one terminal
                      status.
                    type:
                      - string
                    enum:
                      - OPEN
                      - PROCESSING
                      - COMPLETED
                      - CANCELLED
                      - ABANDONED
                      - EXPIRED
                    example: OPEN
                  amount:
                    type:
                      - object
                    properties:
                      amount:
                        type:
                          - string
                        maxLength: 32
                        pattern: ^[0-9]+(\.[0-9]+)?$
                        description: >-
                          Decimal amount in major units, as a string. Never a
                          float.
                        example: '10000.00'
                      currencyCode:
                        type:
                          - string
                        enum:
                          - GBP
                          - EUR
                        description: >-
                          ISO-4217 code of a currency Roqqett can take payments
                          in: GBP over Faster Payments, EUR over SEPA Instant.
                        example: GBP
                    required:
                      - amount
                      - currencyCode
                    description: The total the payer pays, including any shipping.
                  locale:
                    type:
                      - string
                      - 'null'
                    pattern: ^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|\d{3}))?$
                    description: >-
                      The locale the checkout is presented in. `null` when
                      neither the request nor the checkout set one, in which
                      case the payer's browser preference decides and en-GB is
                      the final fallback.
                    example: en-GB
                  checkoutUrl:
                    type:
                      - string
                    format: uri
                    maxLength: 2048
                    description: Where to send the payer to pay. Valid until `expiresAt`.
                    example: >-
                      https://pay.roqqett.com/ch/pay/s/0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  returnUrl:
                    type:
                      - string
                      - 'null'
                    format: uri
                    maxLength: 2048
                    description: Where the payer is sent once the session ends.
                    example: https://shop.example.com/checkout/complete
                  paymentId:
                    type:
                      - string
                      - 'null'
                    format: uuid
                    maxLength: 36
                    description: The payment, once the payer has authorised one.
                    example: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                  expiresAt:
                    type:
                      - string
                    format: date-time
                    description: When an OPEN session expires.
                    example: '2026-10-02T13:00:00Z'
                  budgetId:
                    type:
                      - string
                    format: uuid
                    maxLength: 36
                    description: The budget being topped up.
                    example: 775596ae-2624-40af-a9dc-9756110a4a03
                  createdAt:
                    type:
                      - string
                    format: date-time
                    description: >-
                      The date the Resource was initially created. ISO 8601
                      format without milliseconds.
                  updatedAt:
                    type:
                      - string
                    format: date-time
                    description: >-
                      The date the Resource was last modified. ISO 8601 format
                      without milliseconds.
                required:
                  - id
                  - status
                  - amount
                  - locale
                  - checkoutUrl
                  - returnUrl
                  - paymentId
                  - expiresAt
                  - budgetId
                  - createdAt
                  - updatedAt
                example:
                  id: 0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  status: OPEN
                  amount:
                    amount: '10000.00'
                    currencyCode: GBP
                  locale: en-GB
                  checkoutUrl: >-
                    https://pay.roqqett.com/ch/pay/s/0b8e5c3a-2f1d-4c6b-8a9e-7d4f2c1b0a93
                  returnUrl: https://shop.example.com/checkout/complete
                  paymentId: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                  expiresAt: '2026-10-02T13:00:00Z'
                  budgetId: 775596ae-2624-40af-a9dc-9756110a4a03
                  createdAt: '2019-08-24T14:15:22Z'
                  updatedAt: '2019-08-24T14:15:22Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
      security:
        - CommonAuth:
            - roqqett:top-ups:create:any
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.equalsmoney.com/v2/roqqett/top-ups?accountId={{accountId}}' \
              --header 'Authorization: <api-key>' \
              --header 'Content-Type: application/json' \
              --data '
            {
              "budgetId": "775596ae-2624-40af-a9dc-9756110a4a03",
              "amount": {
                "amount": "10000.00",
                "currencyCode": "GBP"
              },
              "idempotencyKey": "3f9a1c2e-7b4d-4e8a-9c6f-0d2b5a8e1f47",
              "returnUrl": "https://app.equalsmoney.com/top-up/complete",
              "locale": "en-GB"
            }
            '
components:
  securitySchemes:
    CommonAuth:
      type: apiKey
      in: header
      name: Authorization

````