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

# Issue multiple wallet cards

> Issues wallet passes for multiple cardholders in one request. Each item uses the same `person` + `passdata` shape as single issue-wallet. Use when batching enrollment from your registration system.



## OpenAPI

````yaml /openapi/brand-api.json post /{brand_id}/issue-wallets
openapi: 3.0.0
info:
  title: Bambu Brand API
  description: >-
    Partner APIs for issuing and managing wallet cards, activations,
    transactions, SMS, and program configuration. Start with the Guides tab for
    authentication and your first issue-wallet call.
  version: 1.0.0
servers:
  - url: https://api.bambumeta.software/brands
    description: Production
  - url: https://api-sandbox.bambumeta.software/brands
    description: Sandbox
security: []
tags:
  - name: brand
    description: Brand setup and configuration
  - name: brand-activation
    description: Onboarding activations and issue-wallet for an activation
  - name: brands
    description: Custom brand attribute fields
  - name: link-activation
    description: Distribution link activation CRUD
  - name: onboarding
    description: >-
      Program onboarding metrics (internal tag, grouped under reporting in the
      portal)
  - name: program
    description: Program setup and transactions
  - name: reporting
    description: Pass and stage breakdown reports
  - name: sms
    description: Send outbound SMS messages
  - name: subscription
    description: SMS subscription enrollment and stage updates
  - name: template
    description: Wallet template management
  - name: transactions
    description: Transaction types, records, and program transactions
  - name: wallet
    description: Issue, retrieve, update, and delete wallet cards
  - name: wallet-bulk
    description: Bulk pass updates and scheduled changes
  - name: workflow
    description: Trigger workflows that issue or update passes
paths:
  /{brand_id}/issue-wallets:
    post:
      tags:
        - wallet
      summary: Issue multiple wallet cards
      description: >-
        Issues wallet passes for multiple cardholders in one request. Each item
        uses the same `person` + `passdata` shape as single issue-wallet. Use
        when batching enrollment from your registration system.
      parameters:
        - name: brand_id
          in: path
          description: Brand Identifier
          required: true
          style: simple
          explode: false
          schema:
            type: string
          example: '353'
      requestBody:
        description: Wallet Card Input
        content:
          application/json:
            schema:
              type: object
              properties:
                groupId:
                  type: string
                  description: The group identifier for the wallet pass
                passes:
                  type: array
                  description: The list of wallet passes to issue
                  items:
                    $ref: '#/components/schemas/WalletInput'
            example:
              groupId: enrollment-batch-001
              passes:
                - person:
                    firstName: Alex
                    lastName: Member
                    email: member@example.com
                    phone: '+15551234567'
                  passdata:
                    points: 0
                    metaData:
                      memberId: '1001'
                - person:
                    firstName: Alex
                    lastName: Member
                    email: member2@example.com
                    phone: '+15551234567'
                  passdata:
                    points: 0
                    metaData:
                      memberId: '1002'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletPass'
              example:
                - passId: 12345
                  serialNumber: 88faf0d9-196c-11f1-99ef-0e0d839580d9
                  templateId: 100
                  personId: 550e8400-e29b-41d4-a716-446655440000
                  passdata:
                    points: 0
                    metaData:
                      memberId: '1001'
                  downloadUrl: >-
                    https://wallet-pass.bambumeta.software/brand/353/88faf0d9-196c-11f1-99ef-0e0d839580d9
                  downloadUrlApple: >-
                    https://wallet-pass.bambumeta.software/brand/353/88faf0d9-196c-11f1-99ef-0e0d839580d9
                  downloadUrlGoogle: https://pay.google.com/gp/v/save/eyJhbGciOiJFUzI1NiJ9...
                  statusCode: ACTIVE
                  status: 200
        '400':
          description: Error Occurred
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Applicable Error Message
              example:
                message: >-
                  Validation failed. Check required fields and unique identifier
                  rules.
      security:
        - cognito-authorizer:
            - https://admin.bambumeta.software/ui
components:
  schemas:
    WalletInput:
      type: object
      properties:
        person:
          $ref: '#/components/schemas/PersonInput'
        geoLocation:
          $ref: '#/components/schemas/GeoLocation'
        ipAddress:
          type: string
          description: IP Address
        templateTierId:
          type: number
          description: The  wallet pass tier identifier.
        templateId:
          type: number
          description: The  wallet pass template identifier
        programId:
          type: number
          description: The  wallet pass program identifier
        brandId:
          type: number
          description: The  wallet pass brand identifier
        groupId:
          type: string
          description: >-
            If provided, this group identifier will be used to group the wallet
            passes together.
        currentMessage:
          type: string
          description: >-
            If provided, the current message for the wallet pass overriding the
            default message.
        passdata:
          $ref: '#/components/schemas/PassData'
    WalletPass:
      type: object
      required:
        - serialNumber
        - templateId
      properties:
        passId:
          type: number
        serialNumber:
          type: string
        templateId:
          type: number
        groupId:
          type: string
          description: >-
            If provided, this group identifier will be used to group the wallet
            passes together.
        personId:
          type: string
        templateTierId:
          type: number
          description: >-
            The optional wallet pass tier identifier for updating the tier on
            the wallet card.
        currentMessage:
          type: string
          description: The current message for the wallet pass
        passdata:
          $ref: '#/components/schemas/PassData'
        downloadUrl:
          type: string
          description: The download url for the pass
        downloadUrlApple:
          type: string
          description: The download url for the pass for Apple Wallet
        downloadUrlGoogle:
          type: string
          description: The download url for the pass for Google Wallet
        statusCode:
          type: string
          description: The status for the pass
        status:
          type: number
          description: The numeric representation of the status
    PersonInput:
      type: object
      properties:
        firstName:
          type: string
          description: The first name of the person for the account.
        lastName:
          type: string
          description: The last name of the person for the account.
        email:
          type: string
          description: >-
            The email address of the owner of the account, may be used as a
            unique identifier
        phone:
          type: string
          description: >-
            The phone number of the owner of the account, should contain
            +<country code> for sms purposes
        metadata:
          type: object
          description: Any additional metadata to be stored against the person record.
    GeoLocation:
      type: object
      properties:
        latitude:
          type: number
          description: Latitude
        longitude:
          type: number
          description: Longitude
    PassData:
      type: object
      properties:
        optOut:
          type: boolean
        points:
          type: number
        seat:
          type: string
        row:
          type: string
        section:
          type: string
        gate:
          type: string
        expiryDate:
          type: string
        status:
          type: string
        profileImage:
          type: string
        metaData:
          type: object
          additionalProperties: true
  securitySchemes:
    cognito-authorizer:
      type: apiKey
      name: Authorization
      in: header

````