---
title: "Save and pay for a quote (V2)"
method: POST
path: "/v2/purchase"
tags: ["Purchase", "Quote & Save V2"]
---

# Save and pay for a quote (V2)

`POST /v2/purchase`

Saves and pays for a policy. If tripCost or addons are provided, the quote will be recalculated first. This endpoint calls the backend /v2/quote/saveAndPay endpoint.

## Headers

- `Authorization` string

## Request body

- SaveAndPayDtoV2
  - `paymentInfo` PaymentInfoDtoV2, required
    - `quoteId` number
    - `paymentToken` string
    - `paymentIntent` string
    - `paymentMethod` string
    - `customer` string
    - `paymentIp` string
    - `paymentMethodNonce` string
    - `paymentService` 'stripe' | 'checkOut', required — Payment service - required field
    - `useVoucher` boolean — Whether to use voucher, defaults to false if not provided
    - `purchasePaymentType` 'full' | 'deposit'
    - `validateIntentAmount` boolean
    - `companyId` number
  - `policyCodeHash` string, required — Policy code hash (quote hash)
  - `osInfoDto` OsInfoDtoV2
    - `customerTZ` string, required
    - `operationSystem` string, required
    - `osVersion` string, required
  - `tripCost` number — Optional trip cost for recalculation
  - `addons` RequestCoverageDto[] — Optional coverage addons for recalculation
    - `type` 'always' | 'basePackage' | 'baggageBase' | 'medicalCoverage' | 'generalTrip' | 'tripInterruption' | 'tripCancellation' | 'tripCancellationAndInterruption' | 'extraCostForTripsOver20K' | 'car' | 'pet' | 'cancelForAnyReason' | 'baggageExtraCare' | 'travelDelay' | 'travelInconvenience' | 'baggageAndPersonalEffects' | 'baggageDelay' | 'missedTripConnection' | 'vacationRental' | 'sportsExtreme' | 'extraDaysCharge' | 'singleOccupancySupplement' | 'sportsEquipmentRental' | 'vehicleBreakdownAndDisablement' | 'rentalPropertyDamage' | 'rentalCarPackaged' | 'lostStolenOrDamagedLuggage' | 'rentalCarCollisionDamage' | 'flightDelayInconvenience', required — Type of coverage
    - `isSelected` boolean, required — Whether this coverage is selected
    - `dates` CarDateDto[] — Car rental dates - only used when type is "car"
      - `startDate` string, date-time, required — Start date of car rental
      - `endDate` string, date-time, required — End date of car rental
      - `noOfCars` number — Number of cars
    - `initialDepositDate` string, date-time — Initial deposit date for CFAR coverage - only used when type is "cancelForAnyReason"

## Response `201`

The purchase has been completed.

- PurchasePolicyDto
  - `purchaseId` string, required — Policy ID of all travelers
  - `plans` PolicyholderDto[] — An object of a policy ID for each traveler.
    - `name` string, required — Policyholder Name
    - `planId` string, required — Policy Number
  - `totalPrice` number, required — The price that was charged
  - `paymentIntent` string — Payment intent token of the purchase
  - `policyUrl` string — URL to download the policy
  - `receiptUrl` string — URL to download the receipt

## Other responses

- `400` — Purchase request cannot be processed
- `402` — Payment failed

## Changes

- **2026-07-09** `e95f3723e41f` — 1 info
  - added the new optional `header` request parameter `Authorization`

[Change history](https://skmtc.dev/withfaye/apis/faye-partner-sales-api/changes/v2/purchase/post.md)

---

[API](https://skmtc.dev/withfaye/apis/faye-partner-sales-api.md) · [All operations](https://skmtc.dev/withfaye/apis/faye-partner-sales-api/llms.txt) · [OpenAPI document](https://skmtc.dev/withfaye/apis/faye-partner-sales-api/revisions/e95f3723e41f?raw)
