---
title: Payment Profiles
description: Manage customer payment profiles and methods.
---

# Payment Profiles

Manage customer payment profiles and methods.

## [GET /payment-profiles](/api-reference/payment-profiles#tag/payment-profiles/GET/payment-profiles)

List payment profiles for customer

List saved payment profiles for the customer.

Authentication: X-Api-Key, or Bearer JWT + X-Api-Key

### Query parameters

- `customerId` (`string`, required) — Filter profiles for a specific customer.

### Responses

#### 200

Payment profiles retrieved successfully.

Type: `object`

- `items` (`array of EmbeddedPaymentProfile`, required) — List of saved payment profiles.
  - `paymentProfileId` (`string`, required, example f6a7b8c9-d0e1-2345-6789-abcdef012345) — Unique identifier for this payment profile.
  - `paymentProvider` (`enum<string>`, optional, one of STRIPE, BILLOGRAM, example STRIPE) — Payment service provider that processes the transaction.
  - `type` (`string`, required, example CARD) — Type of payment method. — The kind of payment method, as reported by the payment provider. This is an open set of provider-defined values (for example "CARD", "SEPA_DEBIT", "SWISH", "VIPPS", "KLARNA", "PAYPAL") rather than a fixed enumeration, so new method types can appear without an API change.
  - `status` (`enum<string>`, required, one of ACTIVE, INACTIVE, EXPIRED, REQUIRES_ACTION, example ACTIVE) — Current status of the payment profile. — Whether a saved payment profile can currently be charged. - ACTIVE: The payment method is valid and can be used for payments. - INACTIVE: The payment method has been deactivated and cannot be charged. - EXPIRED: The payment method has expired (e.g., an expired card) and must be replaced. - REQUIRES_ACTION: The customer must take action (e.g., re-authentication) before the payment method can be used again.
  - `displayName` (`string`, optional, example Visa ending in 4242) — Human-readable name for the payment method, safe to show to the customer: - Card: "Visa ending in 4242" - SEPA: "Bank account ending in 3000" - Swish: "Swish +46701234567"
  - `isDefault` (`boolean`, optional, example true) — Whether this is the customer's default payment profile.
  - `expiresAt` (`string`, optional, date, example 2025-12-31) — When this payment profile expires (for cards).
  - `createdAt` (`string`, required, date-time, example 2024-01-15T10:00:00Z) — When this payment profile was created.

#### 400

The request was malformed or invalid.

Type: [Error](/api-reference/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/api-reference/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/api-reference/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/api-reference/models.md#models/Error)

### Example request

```bash
curl 'https://apiv2.example.com/api/v2/payment-profiles?customerId=d0e1f2a3-b4c5-6789-0123-ef0123456789' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'X-Api-Key: YOUR_API_KEY'
```

## [GET /payment-profiles/{paymentProfileId}](/api-reference/payment-profiles#tag/payment-profiles/GET/payment-profiles/{paymentProfileId})

Get payment profile

Retrieve details of a specific saved payment method by its identifier.

Authentication: X-Api-Key, or Bearer JWT + X-Api-Key

### Path parameters

- `paymentProfileId` (`string`, required) — The unique identifier of the payment profile to retrieve.

### Responses

#### 200

Payment profile retrieved successfully

Type: [PaymentProfile](/api-reference/models.md#models/PaymentProfile)

#### 400

The request was malformed or invalid.

Type: [Error](/api-reference/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/api-reference/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/api-reference/models.md#models/Error)

#### 404

The requested resource was not found.

Type: [Error](/api-reference/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/api-reference/models.md#models/Error)

### Example request

```bash
curl https://apiv2.example.com/api/v2/payment-profiles/e1f2a3b4-c5d6-7890-1234-f01234567890 \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'X-Api-Key: YOUR_API_KEY'
```

## [DELETE /payment-profiles/{paymentProfileId}](/api-reference/payment-profiles#tag/payment-profiles/DELETE/payment-profiles/{paymentProfileId})

Delete payment profile

Remove a saved payment method permanently. This action cannot be undone and will prevent future use of this payment profile.

If a payment profile is set as default for a customer, it must first be changed before deletion.

Authentication: X-Api-Key, or Bearer JWT + X-Api-Key

### Path parameters

- `paymentProfileId` (`string`, required) — The unique identifier of the payment profile to delete.

### Header parameters

- `X-Idempotency-Key` (`string`, optional, max length 256) — A unique key to ensure idempotency of requests. If a request with the same key has already been processed, the same result will be returned. The key must be unique for each distinct operation. Keys are expired after 24 hours, but we recommend using a new key for each request. Modified requests with the same idempotency keys are rejected with a `409 Conflict` status code.

### Responses

#### 204

Payment profile deleted successfully

#### 400

The request was malformed or invalid.

Type: [Error](/api-reference/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/api-reference/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/api-reference/models.md#models/Error)

#### 404

The requested resource was not found.

Type: [Error](/api-reference/models.md#models/Error)

#### 409

The request conflicts with the current state of the resource.

Type: [Error](/api-reference/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/api-reference/models.md#models/Error)

### Example request

```bash
curl https://apiv2.example.com/api/v2/payment-profiles/e1f2a3b4-c5d6-7890-1234-f01234567890 \
  --request DELETE \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'X-Api-Key: YOUR_API_KEY'
```
