---
title: "Accept terms and/or confirm a prepaid agent-card PaymentIntent"
method: POST
path: "/api/v1/signup/sessions/{session_id}/pay"
tags: ["Signup"]
---

# Accept terms and/or confirm a prepaid agent-card PaymentIntent

`POST /api/v1/signup/sessions/{session_id}/pay`

## Request

- Base URL: `https://www.poster.ly`
- URL: `https://www.poster.ly/api/v1/signup/sessions/{session_id}/pay`
- Auth: none required

Only available when agent card pay is available for the signup session.
Record terms acceptance, confirm the prepaid first-period PaymentIntent with a Stripe payment method id, or both in one call.
tos_accepted must be true (here or on the original start_signup call) before this PaymentIntent can be confirmed. A call with tos_accepted and no payment_method records acceptance and returns the confirmable PaymentIntent state without confirming.
Never send card numbers to this endpoint. Create the payment method with Stripe, then POST only the pm_ id.
Confirm attempts are capped at 3 per signup session in a 24 hour window; exceeding that cancels the PaymentIntent.
Browser Checkout remains available at checkout_redirect_url if agent-card pay is not used.

## Path parameters

- `session_id` string, required

## Request body

- object
  - `tos_accepted` boolean: Set true only after the user has explicitly confirmed they accept the posterly terms at https://www.poster.ly/terms. Required (here or on the original start_signup call) before payment_method can be confirmed.
  - `payment_method` string: Optional Stripe payment method id. Must start with pm_. Omit to record terms acceptance or check status without confirming.

## Response `200`

PaymentIntent confirmation or confirmable state

- object
  - `status` string
  - `payment_intent_id` string
  - `payment_required` boolean
  - `client_secret` string, nullable
  - `publishable_key` string, nullable

## Other responses

- `400`: Validation error
- `402`: Stripe could not confirm the PaymentIntent
- `404`: Resource not found
- `409`: Session already paid via Checkout, or expired
- `429`: Too many confirmation attempts for this signup session

---

[API](https://skmtc.dev/poster/apis/posterly-api.md) · [All operations](https://skmtc.dev/poster/apis/posterly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/poster/apis/posterly-api/revisions/60be02a61f95?raw)
