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

# Issue the customer's singleton PPV payment address.

> Issue or return the customer's singleton PPV payment address for your authenticated platform. This customer-scoped action has no request body, issues under the configured `ppvDomain`, and returns the existing active address idempotently instead of creating a second one.



## OpenAPI

````yaml /openapi/blips-public-reference.yaml post /customers/{customerId}/payment-address
openapi: 3.1.0
info:
  title: BLIPS Public Reference API
  version: '2026-04-08'
  description: >-
    Public OpenAPI 3.1 subset for the first BLIPS Mintlify API Reference and
    Playground release. This document is bound to the confirmed Public Test
    Backend at https://public-test.blips.network, includes only the approved
    first-release public endpoints, uses only internal `$ref` values, and
    excludes callback-only webhook documentation and operator-only surfaces.
servers:
  - url: https://public-test.blips.network
    description: >-
      Confirmed Public Test Backend ingress target for public BLIPS API
      Reference, Playground, and internet-testable Try It flows.
security:
  - BasicAuth: []
tags:
  - name: Platform Setup
    description: >-
      Bootstrap and platform configuration surfaces for establishing the public
      BLIPS integration context.
  - name: Sandbox API
    description: >-
      Sandbox-only externally displayed helper surfaces. These routes either
      adjust quote inputs or create incoming-payment review cases, but they
      always feed the existing quote or transaction families and never become
      second outward API families.
  - name: Tokens
    description: >-
      Platform-scoped API credential create, list, detail, and revoke
      operations.
  - name: Customers
    description: >-
      Customer onboarding, profile lifecycle, and PPV payment-address issuance
      surfaces.
  - name: Accounts
    description: >-
      Customer-bound internal-account and external-account surfaces kept in the
      first-layer public contract.
  - name: Same-Currency Transfers
    description: >-
      Same-currency receiver lookup plus incoming and outgoing transfer
      primitives.
  - name: Cross-Currency Transfers
    description: >-
      PPV-first receiver lookup, quote creation/readback, and quote execution
      for cross-currency flows.
  - name: Transactions
    description: Transaction readback plus bounded incoming-review decision operations.
  - name: Webhooks
    description: >-
      Webhook connectivity verification surface for the public BLIPS
      integration.
paths:
  /customers/{customerId}/payment-address:
    post:
      tags:
        - Customers
      summary: Issue the customer's singleton PPV payment address.
      description: >-
        Issue or return the customer's singleton PPV payment address for your
        authenticated platform. This customer-scoped action has no request body,
        issues under the configured `ppvDomain`, and returns the existing active
        address idempotently instead of creating a second one.
      operationId: createCustomerPaymentAddress
      parameters:
        - name: customerId
          in: path
          required: true
          description: >-
            System-generated customer UUID for the existing customer that owns
            or will receive the issued PPV payment address.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Customer payment address returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentAddressResponse'
              examples:
                created:
                  value:
                    customerId: 019542f5-b3e7-1d02-0000-000000000001
                    platformCustomerId: partner_cust_001
                    addressId: addr_123
                    ppvAddress: demo-customer@pay.example.blips
                    status: ACTIVE
                    isDefault: true
                    createdAt: '2026-04-05T12:00:00Z'
                    updatedAt: '2026-04-05T12:00:00Z'
        '400':
          description: Invalid customerId path value or PPV domain not configured.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPaymentAddressMvpErrorResponse'
              examples:
                ppvDomainMissing:
                  value:
                    status: 400
                    code: PPV_DOMAIN_NOT_CONFIGURED
                    message: PPV domain not configured
                    details: {}
                invalidCustomerId:
                  value:
                    status: 400
                    code: INVALID_REQUEST
                    message: Invalid customerId path value
                    details:
                      customerId: must be a non-empty customer identifier
        '401':
          description: Invalid or missing API credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPaymentAddressMvpErrorResponse'
              examples:
                unauthorized:
                  value:
                    status: 401
                    code: UNAUTHORIZED
                    message: Invalid or missing API credentials
                    details: {}
        '404':
          description: Customer not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPaymentAddressMvpErrorResponse'
              examples:
                customerNotFound:
                  value:
                    status: 404
                    code: CUSTOMER_NOT_FOUND
                    message: Customer not found
                    details: {}
        '410':
          description: Customer already deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPaymentAddressMvpErrorResponse'
              examples:
                customerDeleted:
                  value:
                    status: 410
                    code: CUSTOMER_DELETED
                    message: Customer already deleted
                    details: {}
        '500':
          description: Internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPaymentAddressMvpErrorResponse'
              examples:
                internalError:
                  value:
                    status: 500
                    code: INTERNAL_ERROR
                    message: Internal service error
                    details: {}
      security:
        - BasicAuth: []
components:
  schemas:
    PaymentAddressResponse:
      type: object
      description: >-
        Frozen MVP public customer payment-address issuance response.
        `ppvAddress` is returned in plain `localPart@ppvDomain` form for public
        surfaces.
      properties:
        customerId:
          type: string
          format: uuid
          description: System-generated customer UUID that owns this issued PPV address.
        platformCustomerId:
          type: string
          description: >-
            Platform-side customer identifier bound to the customer that owns
            this issued PPV address.
        addressId:
          type: string
          description: Stable identifier for the issued customer payment-address record.
        ppvAddress:
          type: string
          description: Public PPV address in plain `localPart@ppvDomain` format.
        status:
          type: string
          enum:
            - ACTIVE
          description: Current lifecycle status for the issued customer payment address.
        isDefault:
          type: boolean
          description: Whether this is the active default PPV address for the customer.
        createdAt:
          type: string
          format: date-time
          description: Address issuance timestamp.
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp for this customer payment-address record.
      required:
        - customerId
        - platformCustomerId
        - addressId
        - ppvAddress
        - status
        - isDefault
        - createdAt
        - updatedAt
      additionalProperties: false
    CustomerPaymentAddressMvpErrorResponse:
      type: object
      description: Public error envelope for customer payment-address issuance failures.
      additionalProperties: false
      required:
        - status
        - code
        - message
        - details
      properties:
        status:
          type: integer
          description: >-
            HTTP status code returned for the failed customer payment-address
            request.
        code:
          type: string
          description: >-
            Stable public error code for the failed customer payment-address
            request.
        message:
          type: string
          description: Human-readable summary of the customer payment-address failure.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Additional structured error context when present.
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Integration-key Basic Auth (`clientId:clientSecret`) as documented in
        docs/public/AUTHENTICATION.md.

````