Skip to main content
PATCH
/
api
/
v3
/
store
/
customer
/
payment_setup_sessions
/
{id}
/
complete
Spree SDK
import { createSpreeClient } from '@spree/sdk'

const client = createSpreeClient({
  baseUrl: 'https://your-store.com',
  publishableKey: '<api-key>',
})

const session = await client.store.customer.paymentSetupSessions.complete('pss_abc123', {}, {
  bearerToken: '<token>',
})
{
  "id": "pss_UkLWZg9DAJ",
  "status": "completed",
  "external_id": "seti_test_7d1dd25955bf673e8c56a55d",
  "external_client_secret": "seti_secret_51a7a9cd79b93d50461063a3",
  "external_data": {
    "client_secret": "secret_123"
  },
  "created_at": "2026-03-04T21:02:35.948Z",
  "updated_at": "2026-03-04T21:02:35.962Z",
  "payment_method_id": "pm_UkLWZg9DAJ",
  "payment_source_id": "card_UkLWZg9DAJ",
  "payment_source_type": "Spree::CreditCard",
  "customer_id": "cus_UkLWZg9DAJ",
  "payment_method": {
    "id": "pm_UkLWZg9DAJ",
    "name": "Credit Card",
    "description": null,
    "type": "Spree::Gateway::Bogus",
    "session_required": true
  }
}

Authorizations

x-spree-api-key
string
header
required

Publishable API key for store access

Authorization
string
header
required

JWT token for authenticated customers

Headers

x-spree-api-key
string
required
Authorization
string
required

Path Parameters

id
string
required

Payment setup session ID

Body

application/json
external_data
object

Provider-specific completion data

Response

payment setup session completed

id
string
required
status
string
required
external_id
string | null
required
external_client_secret
string | null
required
external_data
object
required
created_at
string
required
updated_at
string
required
payment_method_id
string | null
required
payment_source_id
string | null
required
payment_source_type
string | null
required
customer_id
string | null
required
payment_method
object
required