---
title: "Pay appointment with welfare voucher"
method: POST
path: "/api/welfare/vouchers/pay-appointment"
tags: ["welfare"]
---

# Pay appointment with welfare voucher

`POST /api/welfare/vouchers/pay-appointment`

## Request body

- WelfarePayAppointmentRequest — Request welfare voucher payment authorization for an appointment.
  - `appointment_id` string, uuid, required — Appointment to pay
  - `voucher_id` string, uuid, nullable — Approved voucher to reserve for payment authorization
  - `voucher` WelfareVoucherUploadData — Patient-provided voucher data.
    - `provider_id` string, uuid, required — Welfare voucher provider (convention) the code belongs to.
    - `code` string, required — Voucher code/reference

## Response `200`

Successful Response

- WelfareAppointmentPaymentResponse — Result of a voucher payment authorization flow.
  - `appointment_id` string, uuid, required
  - `payment_id` string, uuid, nullable
  - `voucher` WelfareVoucherResponse, required — Voucher row returned to patient and CRM.
    - `id` string, uuid, required
    - `provider_id` string, uuid, required
    - `patient_id` string, uuid, required
    - `appointment_id` string, uuid, nullable
    - `payment_id` string, uuid, nullable
    - `code` string, nullable
    - `status` 'pending_approval' | 'approved' | 'pending_payment_confirmation' | 'rejected' | 'used', required — Manual review lifecycle for patient-uploaded welfare vouchers.
    - `source` string, required
    - `admin_notes` string, nullable
    - `rejection_reason` string, nullable
    - `submitted_at` string, date-time, required
    - `reviewed_at` string, date-time, nullable
    - `used_at` string, date-time, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `provider_name` string, nullable
    - `provider_receipt_label` string, nullable
    - `patient_first_name` string, nullable
    - `patient_last_name` string, nullable
    - `appointment_datetime` string, date-time, nullable
    - `appointment_type_code` string, nullable
    - `appointment_type_name` string, nullable
    - `appointment_operator_first_name` string, nullable
    - `appointment_operator_last_name` string, nullable
  - `payment_status` string, required
  - `requires_admin_approval` boolean, required
  - `message` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/corabea/apis/corabea-api.md) · [All operations](https://skmtc.dev/corabea/apis/corabea-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/corabea/corabea-api/revisions/13c1bce1bdc4/schema)
