Bootic Wallets API

Points and store-credit wallets, one per contact per program. A seller runs at most one active `PointsProgram` and one active `CreditProgram`, each covering every shop under the seller. Use `register_purchase` / `unregister_purchase` to award or reverse points for completed orders. Credit wallets carry a spending limit and accrue payments toward it.

Operations 10

GET /wallet_programs List wallet programs #
GET /wallet_programs/{id} Get a wallet program #
PUT /wallet_programs/{id} Update a wallet program's settings #
GET /wallets List wallets #
POST /wallets Create (or find) a wallet for a contact #
GET /wallets/{id} Get a wallet #
GET /wallets/{wallet_id}/transfers List transfers for a wallet #
POST /wallets/{wallet_id}/transfers Add a balance or payment transfer #
POST /wallets/{id}/register_purchase Register points earned from a completed purchase #
POST /wallets/{id}/unregister_purchase Reverse points earned from a purchase (e.g. on order cancellation) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bootic-wallets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bootic-wallets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bolder API v2 Wallets API
  version: '2.0'
  description: '## Getting Started


    The Bolder API provides programmatic access to your Bolder Shop data through a

    hypermedia-driven REST interface.'
  contact:
    name: Bolder API Support
    url: https://www.onbolder.com
servers:
- url: https://api.onbolder.com/v2
  description: Production
security:
- bearerAuth: []
tags:
- name: Wallets
  description: 'Points and store-credit wallets, one per contact per program. A seller runs

    at most one active `PointsProgram` and one active `CreditProgram`, each

    covering every shop under the seller. Use `register_purchase` /

    `unregister_purchase` to award or reverse points for completed orders.

    Credit wallets carry a spending limit and accrue payments toward it.'
paths:
  /wallet_programs:
    get:
      tags:
      - Wallets
      summary: List wallet programs
      description: 'A seller has at most one active `PointsProgram` and one active

        `CreditProgram`. Each program automatically covers every shop under

        the seller.'
      operationId: listWalletPrograms
      parameters:
      - name: seller_id
        in: query
        required: true
        schema:
          type: integer
        example: 7
      - name: type
        in: query
        schema:
          type: string
          enum:
          - points
          - credit
      - name: status
        in: query
        schema:
          type: string
          enum:
          - active
          - deleted
      responses:
        '200':
          description: Paginated list of wallet programs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletProgramList'
              example:
                _class:
                - results
                - walletPrograms
                total_items: 1
                per_page: 30
                page: 1
                _links:
                  self:
                    href: https://api.onbolder.com/v2/wallet_programs
                _embedded:
                  items:
                  - id: 4
                    type: points
                    name: Loyalty
                    status: active
                    points_name: points
                    points_min: 500
                    points_duration: 1_year
                    points_divider: 100
                    points_divider_scope: cart_total
                    _links:
                      self:
                        href: https://api.onbolder.com/v2/wallet_programs/4
  /wallet_programs/{id}:
    get:
      tags:
      - Wallets
      summary: Get a wallet program
      operationId: getWalletProgram
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The wallet program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletProgram'
    put:
      tags:
      - Wallets
      summary: Update a wallet program's settings
      description: Only the fields matching the program's own `type` are applied — `points_*` fields for a `PointsProgram`, `credits_*` for a `CreditProgram`.
      operationId: updateWalletProgram
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                points_name:
                  type: string
                points_min:
                  type: integer
                points_duration:
                  type: string
                points_divider:
                  type: integer
                points_divider_scope:
                  type: string
                  enum:
                  - cart_total
                  - total
                credits_renewal:
                  type: string
                  enum:
                  - manual
                  - automatic
                credits_reserve:
                  type: boolean
            example:
              points_name: coins
              points_min: 1000
      responses:
        '200':
          description: Updated wallet program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletProgram'
  /wallets:
    get:
      tags:
      - Wallets
      summary: List wallets
      operationId: listWallets
      parameters:
      - name: seller_id
        in: query
        required: true
        schema:
          type: integer
        example: 7
      - name: contact_id
        in: query
        schema:
          type: integer
      - name: type
        in: query
        schema:
          type: string
          enum:
          - points
          - credit
      - name: state
        in: query
        schema:
          type: string
          enum:
          - active
          - inactive
      - name: q
        in: query
        schema:
          type: string
        description: Full text search on contact email or wallet name.
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        schema:
          type: integer
          default: 30
      responses:
        '200':
          description: Paginated list of wallets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletList'
              example:
                _class:
                - results
                - wallets
                total_items: 1
                per_page: 30
                page: 1
                _links:
                  self:
                    href: https://api.onbolder.com/v2/wallets
                _embedded:
                  items:
                  - id: 55
                    type: points
                    name: Personal wallet
                    state: active
                    balance: 500
                    contact_id: 3001
                    program_id: 4
                    consented: true
                    _links:
                      self:
                        href: https://api.onbolder.com/v2/wallets/55
                      wallets:transfers:
                        href: https://api.onbolder.com/v2/wallets/55/transfers
    post:
      tags:
      - Wallets
      summary: Create (or find) a wallet for a contact
      description: 'Idempotent per contact + program: if a wallet already exists for this contact and program, the existing wallet is returned rather than a duplicate created.'
      operationId: createWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - contact_id
              properties:
                contact_id:
                  type: integer
                program_id:
                  type: integer
                  description: Defaults to the seller's active program of the given `type`.
                type:
                  type: string
                  enum:
                  - points
                  - credit
                  default: points
            example:
              contact_id: 3001
      responses:
        '201':
          description: Wallet created (or found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
  /wallets/{id}:
    get:
      tags:
      - Wallets
      summary: Get a wallet
      operationId: getWallet
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The wallet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
  /wallets/{wallet_id}/transfers:
    get:
      tags:
      - Wallets
      summary: List transfers for a wallet
      operationId: listWalletTransfers
      parameters:
      - name: wallet_id
        in: path
        required: true
        schema:
          type: integer
      - name: state
        in: query
        schema:
          type: string
          enum:
          - pending
          - completed
          - reversed
          - deleted
          - expired
      - name: type
        in: query
        schema:
          type: string
          enum:
          - incoming
          - outgoing
      - name: shop_id
        in: query
        schema:
          type: string
      - name: from_date
        in: query
        schema:
          type: string
          format: date
      - name: to_date
        in: query
        schema:
          type: string
          format: date
      - name: q
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of transfers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletTransferList'
    post:
      tags:
      - Wallets
      summary: Add a balance or payment transfer
      description: 'Creates a completed incoming transfer by default — used both for adding points balance and for recording a credit-wallet payment. Pass `state: pending` for a credit payment awaiting confirmation.'
      operationId: addWalletTransfer
      parameters:
      - name: wallet_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - amount
              - description
              properties:
                amount:
                  type: integer
                  description: Positive integer amount to add.
                description:
                  type: string
                reference_code:
                  type: string
                payment_method:
                  type: string
                shop_id:
                  type: string
                state:
                  type: string
                  enum:
                  - pending
                  - completed
                  default: completed
            example:
              amount: 500
              description: Signup bonus
              reference_code: signup-3001
      responses:
        '201':
          description: Transfer created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletTransfer'
        '422':
          description: Invalid transfer (e.g. insufficient balance for an outgoing amount)
  /wallets/{id}/register_purchase:
    post:
      tags:
      - Wallets
      summary: Register points earned from a completed purchase
      description: Points wallets only.
      operationId: registerWalletPurchase
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - reference_code
              - order_amount
              - description
              properties:
                reference_code:
                  type: string
                order_amount:
                  type: integer
                description:
                  type: string
                campaign_id:
                  type: integer
                shop_id:
                  type: string
            example:
              reference_code: order-9001
              order_amount: 25000
              description: 'Points earned on order #9001'
      responses:
        '200':
          description: Points registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletTransfer'
        '422':
          description: A transfer for this reference_code already exists, or the program's points divider is misconfigured
  /wallets/{id}/unregister_purchase:
    post:
      tags:
      - Wallets
      summary: Reverse points earned from a purchase (e.g. on order cancellation)
      description: Points wallets only. Reverses the earning transfer outright when the full amount is still available; otherwise drains whatever remains so the points can't be spent again (a partial reversal).
      operationId: unregisterWalletPurchase
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - reference_code
              - order_amount
              properties:
                reference_code:
                  type: string
                order_amount:
                  type: integer
      responses:
        '200':
          description: Points reversed (fully or partially)
        '422':
          description: Unable to complete this action
components:
  schemas:
    WalletList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          _links:
            $ref: '#/components/schemas/HalLinks'
          _class:
            type: array
            items:
              type: string
            example:
            - results
            - wallets
          _embedded:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Wallet'
    WalletProgram:
      type: object
      description: '`type` is `points` or `credit`. Points-specific fields (`points_*`) are present only when `type` is `points`; credit-specific fields (`credits_*`) only when `type` is `credit`.

        '
      properties:
        _links:
          $ref: '#/components/schemas/HalLinks'
        id:
          type: integer
        type:
          type: string
          enum:
          - points
          - credit
        name:
          type: string
        status:
          type: string
          enum:
          - active
          - deleted
        points_name:
          type: string
          description: Display name for points (e.g. "points", "coins").
        points_min:
          type: integer
          description: Minimum points balance required to redeem.
        points_duration:
          type: string
          description: How long earned points remain valid, e.g. "1_year".
        points_divider:
          type: integer
          description: Amount of currency per point earned.
        points_divider_scope:
          type: string
          enum:
          - cart_total
          - total
        credits_renewal:
          type: string
          enum:
          - manual
          - automatic
        credits_reserve:
          type: boolean
        created_on:
          type: string
          format: date-time
        updated_on:
          type: string
          format: date-time
    Pagination:
      type: object
      properties:
        total_items:
          type: integer
          example: 42
        per_page:
          type: integer
          example: 20
        page:
          type: integer
          example: 1
    WalletTransfer:
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/HalLinks'
        id:
          type: integer
        direction:
          type: string
          enum:
          - incoming
          - outgoing
        state:
          type: string
          enum:
          - pending
          - completed
          - reversed
          - deleted
          - expired
        amount:
          type: integer
          description: Positive for incoming transfers, negative for outgoing.
        original_amount:
          type: integer
          description: Order total that earned this transfer, for points earned from a purchase.
        description:
          type: string
        reference_code:
          type: string
        payment_method:
          type: string
        shop_id:
          type: string
        wallet_id:
          type: integer
        balance_expires_at:
          type: string
          format: date-time
        created_on:
          type: string
          format: date-time
    Wallet:
      type: object
      description: '`type` is `points` or `credit`. `limit_amount`, `overdue_limit_amount` and `loan_term` are present only for credit wallets.

        '
      properties:
        _links:
          $ref: '#/components/schemas/HalLinks'
        id:
          type: integer
        type:
          type: string
          enum:
          - points
          - credit
        name:
          type: string
        state:
          type: string
          enum:
          - active
          - inactive
        balance:
          type: integer
        contact_id:
          type: integer
        program_id:
          type: integer
        consented:
          type: boolean
        limit_amount:
          type: integer
          description: Credit wallets only — maximum spendable balance.
        overdue_limit_amount:
          type: integer
          description: Credit wallets only — percentage of `limit_amount` allowed as overdue.
        loan_term:
          type: string
          description: Credit wallets only — e.g. "2.days", "3.months".
        created_on:
          type: string
          format: date-time
        updated_on:
          type: string
          format: date-time
    HalLinks:
      type: object
      additionalProperties:
        oneOf:
        - $ref: '#/components/schemas/HalLink'
        - type: array
          items:
            $ref: '#/components/schemas/HalLink'
    WalletTransferList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          _links:
            $ref: '#/components/schemas/HalLinks'
          _class:
            type: array
            items:
              type: string
            example:
            - results
            - walletTransfers
          _embedded:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/WalletTransfer'
    HalLink:
      type: object
      required:
      - href
      properties:
        href:
          type: string
        templated:
          type: boolean
        method:
          type: string
          enum:
          - get
          - post
          - put
          - patch
          - delete
        title:
          type: string
        type:
          type: string
    WalletProgramList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          _links:
            $ref: '#/components/schemas/HalLinks'
          _class:
            type: array
            items:
              type: string
            example:
            - results
            - walletPrograms
          _embedded:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/WalletProgram'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.onbolder.com/oauth/token
          scopes:
            products.read: View products, variants and collections
            products.write: Create and update products
            orders.read: View orders
            orders.write: Create and update orders
            customers.read: View customer profiles
            customers.write: Update customer profiles
            shops.read: View shop configuration
            shops.write: Update shop configuration
            hub.read: View content (posts, pages)
            hub.write: Create and update content
            store.read: View themes and assets
            store.write: Manage themes and assets
            sellers.read: View seller information
            batches.read: View batch job status
            batches.write: Create and run batch jobs
        authorizationCode:
          authorizationUrl: https://auth.onbolder.com/oauth/authorize
          tokenUrl: https://auth.onbolder.com/oauth/token
          scopes:
            products.read: View products, variants and collections
            products.write: Create and update products
            orders.read: View orders
            orders.write: Create and update orders
            customers.read: View customer profiles
            customers.write: Update customer profiles
            shops.read: View shop configuration
            shops.write: Update shop configuration
            hub.read: View content (posts, pages)
            hub.write: Create and update content
            store.read: View themes and assets
            store.write: Manage themes and assets
            sellers.read: View seller information
            batches.read: View batch job status
            batches.write: Create and run batch jobs