---
title: OOTB - Financial Services - Make Payment Subflow
description: Learn about the OOTB - Financial Services - Make Payment Subflow flow, including its purpose, structure, inputs, outputs, and variables.
component: pingone-solutions
page_id: pingone-solutions:financial-services:flow-reference/financial-services-make-payment-subflow
canonical_url: https://docs.pingidentity.com/pingone-solutions/financial-services/flow-reference/financial-services-make-payment-subflow.html
revdate: July 1, 2025
section_ids:
  purpose: Purpose
  structure: Structure
  input-schema: Input schema
  output-schema: Output schema
  variables-and-parameters: Variables and parameters
---

# OOTB - Financial Services - Make Payment Subflow

The **OOTB - Financial Services - Make Payment Subflow** lets users make a payment.

## Purpose

The **OOTB - Financial Services - Make Payment Subflow** presents users with a form for making payments. It then uses PingOne Authorize to approve before using PingOne to update the user information. If additional approval is required, it invokes the **OOTB - Financial Services - Transfer Approval via Email - Subflow** subflow.

## Structure

This flow is divided into sections using teleport nodes:

* **OOTB - Financial Services - Make Payment Subflow**

  Uses a function node to set flow variables, then uses a PingOne node to verify that the user exists. An HTML node then presents the user with payment options. The flow then branches based on the user's selection:

  * If the user clicks **Submit**, a function node validates the data, then a PingOne Authorize node makes a decision request. The flow then branches based on the PingOne Authorize result:

    * If the result is `PERMIT`, function nodes verify that the user has sufficient funds and calculate the balance after the transaction, then a PingOne node updates the user's balance. A success page displays to the user, then the flow progresses to the **Return Success** section.

    * If the result is `DENY`, an error message displays, then the flow progresses to the **Return Success** section.

    * If the result is `NOT_APPLICABLE`, a PingOne node verifies that the user exists. If the user exists, a function node verifies that the user has sufficient funds. The **OOTB - Financial Services - Transfer Approval via Email - Subflow** is invoked. If the subflow result is `COMPLETE`, the flow proceeds as if the PingOne Authorize result was `PERMIT`. If the subflow result was `MANAGE_ACCOUNT`, the flow returns to the beginning of the **OOTB - Financial Services - Make Payment Subflow** section.

  * If the user clicks **Cancel**, the flow progresses to the \[.uicontrol]\*\*

* **Return Success**

  Sends a success JSON response, indicating that the flow has completed successfully.

* **Return Error**

  Uses a function node to enrich the error details, then sends an error JSON response indicating that the flow completed unsuccessfully.

## Input schema

This flow has the following inputs:

| Input name      | Required | Description                                            |
| --------------- | -------- | ------------------------------------------------------ |
| `pingOneUserId` | Yes      | The current user's PingOne user ID.                    |
| `companyLogo`   | No       | The company logo to display in user-facing HTML pages. |
| `flowMethod`    | No       | The flow method.                                       |

## Output schema

This flow has the following outputs:

| Output Name     | Description                                   |
| --------------- | --------------------------------------------- |
| `subflowResult` | The result status of the flow.                |
| `errorMessage`  | The error message to pass to the parent flow. |
| `errorDetails`  | The details of the error that occurred.       |

## Variables and parameters

This flow uses the following variable or parameter values:

| Parameter name      | Description                                                              |
| ------------------- | ------------------------------------------------------------------------ |
| `p1UserId`          | The current user's PingOne user ID.                                      |
| `currency`          | The currency symbol for the user's locale.                               |
| `checkingBalance`   | The balance in the user's checking account.                              |
| `savingsBalance`    | The balance in the user's savings account.                               |
| `mortgageAccount`   | An element containing the user's mortgage balance and account number.    |
| `creditCardAccount` | An element containing the user's credit card balance and account number. |
