---
title: OOTB - Financial Services - Make Transfer Subflow
description: Learn about the OOTB - Financial Services - Make Transfer Subflow flow, including its purpose, structure, inputs, outputs, and variables.
component: pingone-solutions
page_id: pingone-solutions:financial-services:flow-reference/financial-services-make-transfer-subflow
canonical_url: https://docs.pingidentity.com/pingone-solutions/financial-services/flow-reference/financial-services-make-transfer-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 Transfer Subflow

The **OOTB - Financial Services - Make Transfer Subflow** lets users make a transfer.

## Purpose

The **OOTB - Financial Services - Make Transfer Subflow** presents users with a form for making transfers. 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 transfer 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`, a PingOne node verifies that the user exists. Function nodes verify that the user has sufficient funds and calculate the balance after the transfer, 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 Transfer 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                                            |
| ------------- | -------- | ------------------------------------------------------ |
| `p1UserId`    | 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.  |
