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

# List bonded earn strategies

> Returns the bonded and instant strategies available in a given country.

User-agnostic endpoint. Sorted by asset symbol (A-Z), then unbonding period (shortest first, variable last). Results are paginated.



## OpenAPI

````yaml /api-reference/openapi_v3_pws.json get /v1/earn/bonded/strategies
openapi: 3.1.0
info:
  title: Payward Services API
  description: >-
    The Payward Services (PWS) public API.


    PWS exposes Swaps (institutional FX-style trading), Conversion rules
    (rule-driven fiat ↔ crypto value movement), retail-style Quotes and Price
    Trigger Swaps, end-user Users / Verifications, Travel Rule address ownership
    verification, Funds (deposits, withdrawals, addresses, transactions),
    Portfolio, Earn, Reports, Webhooks, and Ramp (hosted fiat-to-crypto on-ramp
    checkout).


    All requests must be authenticated. All monetary values are decimal strings;
    all timestamps are ISO 8601 UTC. List endpoints are cursor-paginated. Errors
    follow a uniform shape (see `*ErrorResponse` schemas).
  version: v1
  contact:
    name: Payward Services API Support
    url: https://docs.payward.com
    email: api-support@payward.com
servers:
  - url: https://api.services.payward.com
    description: Production
security:
  - ApiKey: []
    ApiSign: []
    ApiNonce: []
tags:
  - name: Users
    description: >-
      User onboarding and status flows that the partner manages.


      - **Create User** provisions a user with an email and external reference.

      - **Get User** retrieves the user's profile, verification status, and
      required actions.


      Use the returned user `id` for calls that require the user's identifier.
  - name: Assets
    description: >-
      Catalog of assets available on the platform with retail-display metadata
      (logos, market data, descriptions).
  - name: Conversion rules
    x-group: Users
    description: >-
      Rule-driven fiat ↔ crypto value movement, including conversion rules and
      deposits.
  - name: On-demand conversions
    x-group: Users
    description: >-
      On-demand conversions between bank accounts and account balances, or from
      account balances to wallets.
  - name: Earn
    description: >-
      Manage Auto Earn preferences and retrieve allocation and reward
      information.
  - name: Bonded earn
    description: >-
      Allocate funds to and deallocate funds from bonded earn strategies, review
      allocations, and track request status.
  - name: Funds
    description: >-
      Deposits, withdrawals, addresses, methods, and the consolidated
      funding-transactions ledger.
  - name: Derivative transfers
    description: Move funds between an account's spot and futures balances.
  - name: Bank links
    description: >-
      Link US bank accounts to an account through a Kraken-hosted widget, then
      reference them for money movement.


      Two resources model a connection:


      - A **Bank Link** is the connection between one account and one banking
      institution. Create it to get a hosted-widget URL, and send the user there
      to choose their institution and approve access. One account can hold many
      Bank Links.

      - An **Account Link** is one bank account (a checking account, for
      example) that the user shared through that connection. One Bank Link owns
      one or more Account Links. Use `account_link_id` to reference the bank
      account when you move money.


      Both ids are opaque handles. Provider identifiers, access tokens, owner
      names, and raw bank numbers are never exposed.


      Eligibility is evaluated on every read, and ownership must match: the bank
      account's holder must match the account's verified holder. An account that
      fails ownership validation reports `ineligible` with the reason
      `name_mismatch`.


      Unlinking is permanent. Linking the same bank account again creates a new
      Bank Link and a new `account_link_id`; old ids stay valid only for reading
      history.
  - name: Portfolio
    description: 'Inspect a customer''s portfolio: balances, valuations, and transactions.'
  - name: Price trigger swaps
    description: Limit-style orders that execute when a configured price trigger is met.
  - name: On-chain swaps
    description: >-
      Wallet-funded onchain quote trading for xStock and USDC pairs. On-chain
      quotes settle on-chain through the Payward on-chain proxy contract.
  - name: Ramp
    description: >-
      Hosted fiat-to-crypto on-ramp checkout: country / fiat / payment-method /
      cryptocurrency-asset discovery, transaction limits and prospective quotes,
      and the hosted checkout URL.
  - name: Reports
    description: Settlement and reconciliation reports for the partner.
  - name: Swaps
    description: >-
      Direct partner-to-Payward swap quotes and executions (institutional
      FX-style trading).
  - name: Travel Rule verifications
    description: Travel Rule address ownership verification flows.
  - name: Verifications
    description: Identity verification (KYC) submission and status for end users.
  - name: Webhooks
    description: Manage webhook subscriptions for asynchronous event delivery.
paths:
  /v1/earn/bonded/strategies:
    get:
      tags:
        - Bonded earn
      summary: List bonded earn strategies
      description: >-
        Returns the bonded and instant strategies available in a given country.


        User-agnostic endpoint. Sorted by asset symbol (A-Z), then unbonding
        period (shortest first, variable last). Results are paginated.
      operationId: listBondedEarnStrategies
      parameters:
        - in: query
          name: country
          required: true
          schema:
            description: >-
              ISO 3166-1 alpha-2 country code to filter available strategies
              (e.g., "US", "GB").
            type: string
            pattern: ^[A-Z]{2}$
          style: form
          example: DE
        - in: query
          name: page_token
          schema:
            description: >-
              Opaque token returned as `next_page_token` in the previous
              response. Omit to request the first page.
            type: string
            minLength: 1
            maxLength: 256
          style: form
          example: MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4
        - in: query
          name: page_size
          schema:
            description: >-
              Maximum number of results to return. Ignored when `page_token` is
              present.
            type: integer
            format: int32
            minimum: 1
            maximum: 25
            default: 20
          style: form
          example: 20
        - in: query
          name: type
          schema:
            description: Returns only strategies for assets of the selected types.
            type: array
            items:
              description: Classification of the asset.
              type: string
              enum:
                - fiat
                - crypto
                - xstock
                - stablecoin
                - equity
          style: form
          example:
            - crypto
        - in: query
          name: yield_source
          schema:
            description: Returns only strategies backed by the selected yield sources.
            type: array
            items:
              description: Yield source that backs this strategy (e.g., "staking").
              type: string
              enum:
                - staking
                - base_rewards
                - opt_in_rewards
          style: form
          example:
            - staking
        - in: query
          name: symbol
          schema:
            description: >-
              Returns only strategies for the selected asset ticker symbols.
              Matching ignores case.
            type: array
            items:
              type: string
              minLength: 1
          style: form
          example:
            - ETH
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Strategies for the requested country and page.
                    type: array
                    items:
                      description: Bonded or instant strategy.
                      type: object
                      properties:
                        id:
                          description: >-
                            Strategy identifier, used to allocate and
                            deallocate.
                          type: string
                        strategy_type:
                          $ref: '#/components/schemas/BondedStrategyType'
                        symbol:
                          description: Asset ticker symbol (e.g., "ETH").
                          type: string
                        type:
                          description: Classification of the asset.
                          type: string
                          enum:
                            - fiat
                            - crypto
                            - xstock
                            - stablecoin
                            - equity
                        name:
                          description: Display name (e.g., "Ethereum").
                          type: string
                        yield_source:
                          description: >-
                            Yield source that backs this strategy (e.g.,
                            "staking").
                          type: string
                          enum:
                            - staking
                            - base_rewards
                            - opt_in_rewards
                        apy:
                          description: >-
                            Annual percentage yield as a decimal string (e.g.,
                            "3.41"), combined across reward assets. Gross,
                            before any reward fee.
                          type: string
                        other_assets:
                          description: >-
                            Reward assets other than the strategy's own, each
                            with its share of `apy`. Usually empty.
                          type: array
                          items:
                            description: >-
                              A reward asset other than the strategy's own, with
                              its share of the APY.
                            type: object
                            properties:
                              symbol:
                                description: Asset ticker symbol (e.g., "EIGEN").
                                type: string
                              type:
                                description: Classification of the asset.
                                type: string
                                enum:
                                  - fiat
                                  - crypto
                                  - xstock
                                  - stablecoin
                                  - equity
                              name:
                                description: Display name (e.g., "Eigenlayer").
                                type: string
                              apy:
                                description: >-
                                  This asset's share of the strategy's `apy`, as
                                  a decimal string.
                                type: string
                            required:
                              - symbol
                              - type
                              - name
                              - apy
                        bonding_period:
                          $ref: '#/components/schemas/BondedStrategyPeriod'
                        unbonding_period:
                          $ref: '#/components/schemas/BondedStrategyPeriod'
                        exit_queue_period:
                          $ref: '#/components/schemas/BondedStrategyPeriod'
                        reward_frequency_seconds:
                          description: Seconds between reward payouts.
                          type: integer
                          format: int32
                          minimum: 0
                        auto_compound:
                          description: Whether rewards are added back to the allocation.
                          type: string
                          enum:
                            - disabled
                            - enabled
                        user_min_allocation:
                          description: >-
                            Smallest amount one allocate may move, in the
                            strategy's asset, as a decimal string.
                          type: string
                        user_cap:
                          description: >-
                            Most the account may allocate, in the strategy's
                            asset, as a decimal string. Absent when unlimited.
                          type: string
                      required:
                        - id
                        - strategy_type
                        - symbol
                        - type
                        - name
                        - yield_source
                        - apy
                        - other_assets
                        - bonding_period
                        - unbonding_period
                        - exit_queue_period
                        - reward_frequency_seconds
                        - auto_compound
                        - user_min_allocation
                  next_page_token:
                    description: >-
                      Opaque token for retrieving the next page. Absent when
                      there are no more results.
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - data
              examples:
                country-strategies:
                  summary: Bonded and instant strategies available in Germany
                  value:
                    data:
                      - id: ESETHBD-N2K7X-QRSTUV
                        strategy_type: bonded
                        symbol: ETH
                        type: crypto
                        name: Ethereum
                        yield_source: staking
                        apy: '3.10'
                        other_assets: []
                        bonding_period:
                          type: fixed
                          seconds: 0
                          rewards: not_accruing
                        unbonding_period:
                          type: variable
                          seconds: 1209600
                          rewards: not_accruing
                        exit_queue_period:
                          type: fixed
                          seconds: 0
                          rewards: accruing
                        reward_frequency_seconds: 604800
                        auto_compound: enabled
                        user_min_allocation: '0.01'
                        user_cap: '100'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
              examples:
                invalid-request:
                  summary: Invalid request
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 400
                      code: bad_request
                      causes:
                        - field: account_id
                          message: must be a valid account identifier
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedError'
              examples:
                authentication-failed:
                  summary: Authentication failed
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 401
                      code: unauthenticated
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
              examples:
                caller-is-not-allowed:
                  summary: Caller is not allowed
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 403
                      code: forbidden
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EarnNotFoundErrorResponse'
              examples:
                not-found:
                  summary: Bonded earn not enabled
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 404
                      code: not_found
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceExhaustedError'
              examples:
                rate-limit-exceeded:
                  summary: Rate limit exceeded
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 429
                      code: resource_exhausted
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalError'
              examples:
                internal-error:
                  summary: Internal error
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 500
                      code: internal
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnavailableError'
              examples:
                service-unavailable:
                  summary: Service unavailable
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 503
                      code: unavailable
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
        '504':
          description: Deadline exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeadlineExceededError'
              examples:
                request-deadline-exceeded:
                  summary: Request deadline exceeded
                  value:
                    error:
                      type: earn_error
                      instance: req_01H00000000000000000000000
                      status: 504
                      code: deadline_exceeded
          headers:
            X-Trace-Id:
              $ref: '#/components/headers/TraceId'
            Strict-Transport-Security:
              $ref: '#/components/headers/StrictTransportSecurity'
            Cache-Control:
              $ref: '#/components/headers/CacheControl'
      security:
        - ApiKey: []
          ApiSign: []
          ApiNonce: []
components:
  schemas:
    BondedStrategyType:
      description: >-
        Whether the strategy has bonding and unbonding periods (`bonded`) or
        none (`instant`).
      type: string
      enum:
        - bonded
        - instant
    BondedStrategyPeriod:
      description: Length of one lock-up phase of a bonded strategy.
      type: object
      properties:
        type:
          description: Whether `seconds` is a guarantee or an estimate.
          type: string
          enum:
            - fixed
            - variable
        seconds:
          description: Length of the phase; zero for an instant strategy.
          type: integer
          format: int32
          minimum: 0
        rewards:
          description: Whether the funds earn rewards during the phase.
          type: string
          enum:
            - accruing
            - not_accruing
      required:
        - type
        - seconds
        - rewards
    BadRequestError:
      description: Request validation failed or the request could not be processed.
      allOf:
        - $ref: '#/components/schemas/PwsValidationErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsValidationError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 400
                    code:
                      type: string
                      enum:
                        - bad_request
    UnauthenticatedError:
      description: Authentication credentials are missing, invalid, or not accepted.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 401
                    code:
                      type: string
                      enum:
                        - unauthenticated
    ForbiddenError:
      description: The caller is not allowed to perform this operation.
      oneOf:
        - title: Forbidden
          allOf:
            - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
            - type: object
              required:
                - error
              properties:
                error:
                  allOf:
                    - $ref: '#/components/schemas/PwsGeneralError'
                    - type: object
                      required:
                        - status
                        - code
                      properties:
                        status:
                          type: integer
                          format: int32
                          enum:
                            - 403
                        code:
                          type: string
                          enum:
                            - forbidden
        - $ref: '#/components/schemas/GatewayError'
    EarnNotFoundErrorResponse:
      description: The requested resource was not found.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 404
                    code:
                      type: string
                      enum:
                        - not_found
    ResourceExhaustedError:
      description: The request was rate limited or a resource quota was exhausted.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 429
                    code:
                      type: string
                      enum:
                        - resource_exhausted
    InternalError:
      description: An unexpected server-side error occurred.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 500
                    code:
                      type: string
                      enum:
                        - internal
    UnavailableError:
      description: The service is temporarily unavailable.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 503
                    code:
                      type: string
                      enum:
                        - unavailable
    DeadlineExceededError:
      description: The upstream service did not complete the request before the deadline.
      allOf:
        - $ref: '#/components/schemas/PwsGeneralErrorEnvelope'
        - type: object
          required:
            - error
          properties:
            error:
              allOf:
                - $ref: '#/components/schemas/PwsGeneralError'
                - type: object
                  required:
                    - status
                    - code
                  properties:
                    status:
                      type: integer
                      format: int32
                      enum:
                        - 504
                    code:
                      type: string
                      enum:
                        - deadline_exceeded
    PwsValidationErrorEnvelope:
      description: Error envelope for request validation failures.
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/PwsValidationError'
          description: Validation error details.
    PwsValidationError:
      description: Standard PWS API error object for request validation failures.
      type: object
      required:
        - type
        - status
        - instance
        - code
      properties:
        type:
          description: Machine-readable error class.
          type: string
        status:
          description: HTTP status code returned for this error.
          type: integer
          format: int32
        instance:
          description: Request identifier for this specific error occurrence.
          type: string
        code:
          description: Stable machine-readable error code.
          type: string
        doc_url:
          description: Optional link to documentation for this error.
          type: string
          format: uri
        causes:
          description: Validation failures that contributed to the error.
          type: array
          items:
            $ref: '#/components/schemas/PwsErrorCause'
    PwsGeneralErrorEnvelope:
      description: Error envelope for operational or domain failures.
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/PwsGeneralError'
          description: General error details.
    PwsGeneralError:
      description: Standard PWS API error object for non-validation failures.
      allOf:
        - $ref: '#/components/schemas/PwsErrorBase'
        - type: object
          properties:
            causes:
              description: Additional error details, when present.
              type: array
              items:
                type: object
                additionalProperties: true
    GatewayError:
      title: Gateway
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - status
            - code
          properties:
            type:
              type: string
              const: service_error
            status:
              type: integer
              format: int32
              const: 403
            code:
              type: string
              const: gateway
    PwsErrorCause:
      description: A single request validation failure.
      type: object
      required:
        - field
        - message
      properties:
        field:
          description: Dot-notation path to the offending request field.
          type: string
        message:
          description: Human-readable explanation of the failed validation rule.
          type: string
    PwsErrorBase:
      description: Common fields present on every PWS API error object.
      type: object
      required:
        - type
        - status
        - instance
        - code
      properties:
        type:
          description: Machine-readable error class.
          type: string
        status:
          description: HTTP status code returned for this error.
          type: integer
          format: int32
        instance:
          description: Request identifier for this specific error occurrence.
          type: string
        code:
          description: Stable machine-readable error code.
          type: string
        doc_url:
          description: Optional link to documentation for this error.
          type: string
          format: uri
  headers:
    TraceId:
      description: Trace identifier for the request. Include it when contacting support.
      schema:
        type: string
        example: 4bf92f3577b34da6a3ce929d0e0e4736
    StrictTransportSecurity:
      description: >-
        Enforces HTTPS for the configured period. Always `max-age=63072000;
        includeSubDomains; preload`.
      schema:
        type: string
        example: max-age=63072000; includeSubDomains; preload
    CacheControl:
      description: Prevents caching of sensitive financial data. Always `no-store`.
      schema:
        type: string
        enum:
          - no-store
        example: no-store
  securitySchemes:
    ApiKey:
      type: apiKey
      name: API-Key
      in: header
      description: Your public API key. Identifies the partner making the request.
    ApiSign:
      type: apiKey
      name: API-Sign
      in: header
      description: HMAC signature over the request, computed with your private key.
    ApiNonce:
      type: apiKey
      name: API-Nonce
      in: header
      description: Monotonically increasing nonce included in the request signature.

````