---
title: "Single entry-point for payment submission. Creates a Pending Payment record, then confirms the PaymentIntent server-side with Stripe. The webpage is not responsible for completion — the Stripe webhook promotes the record to Completed."
method: POST
path: "/api/v1/ExternalPayment/{guid}/submit-payment"
tags: ["ExternalPayment"]
---

# Single entry-point for payment submission. Creates a Pending Payment record, then confirms the PaymentIntent server-side with Stripe. The webpage is not responsible for completion — the Stripe webhook promotes the record to Completed.

`POST /api/v1/ExternalPayment/{guid}/submit-payment`

## Request

- Base URL: `https://api.fireserviceusa.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.fireserviceusa.com/api/v1/ExternalPayment/{guid}/submit-payment`
- Auth: none declared

## Path parameters

- `guid` string, required

## Request body

- SubmitPaymentRequest
  - `PaymentMethodId` string, nullable: Stripe PaymentMethod ID created client-side via stripe.createPaymentMethod({ elements })
  - `CustomerEmail` string, nullable
  - `Amount` number, double: Gross amount (invoice net + fee). Server validates against PaymentIntent amount.
  - `InvoiceAmount` number, double, nullable: Net invoice amount (excluding processing fee). Used as fallback when PaymentIntent metadata is unavailable (e.g. dev mode).
  - `SelectedPaymentMethod` string, nullable: Payment method the user selected in the UI: creditcard / debitcard / ach
  - `ReturnUrl` string, nullable: Return URL used for 3DS / bank redirect flows

## Response `200`

Success

---

[API](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api.md) - [All operations](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/revisions/96ea2ea68d87?raw)
