---
updatedAt: 2026-06-25T22:44:00.000Z
---

Fetch the complete documentation index at: https://developers.pismo.io/pismo-docs/llms.txt. Use this file to discover all available pages before exploring further.

# Create transfer schedule

Create a transfer schedule, which represents a transfer operation from a parent (main) account to one or more associated child accounts. Configure the schedule's execution frequency and other details in the `schedule_details` field.

Transfer amounts can be set as follows.
- If you fill out the `strategy` field, the platform uses the strategy logic to determine transfer amounts.
- If you don't fill out the `strategy` field, you must specify the `amount` field for each transfer in the `transfers` array.

In some cases, due to errors and retries, execution of the scheduled transaction might occur on the following day instead of the originally scheduled date. To address this, the `allow_execution_after_day_change` flag in `schedule_details` enables you to pre-authorize execution of the scheduled transaction on the next day. This flag must be set to `true` for schedules that are set to be executed at the end of the day (after 11:30pm UTC). If the schedule is not executed on the expected day for any reason, and this field isn't set to `true`, the schedule is not executed and is marked as `EXECUTED_WITH_ERROR_NEXT_DAY_NOT_ALLOWED`.

This endpoint generates the [Scheduled payment created or modified](https://developers.pismo.io/events/docs/scheduler-payments-scheduled-payments-1) event with the `status` field set to `CREATED`.

Each execution of the schedule also generates the [Scheduled payment executed](https://developers.pismo.io/events/docs/scheduler-payments-scheduled-payments-execution-1) event.

Refer to the [Payment scheduler](doc:payment-scheduler) guide for more information.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Core platform - Payment scheduler",
    "version": "1.0.0",
    "description": "Endpoints to enable scheduler creation and processing.",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/"
    },
    "license": {
      "name": "Copyright Pismo"
    }
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/scheduler-payments",
      "description": "Sandbox API server for testing"
    }
  ],
  "tags": [
    {
      "name": "Schedules",
      "description": "Endpoints to enable scheduler creation and processing"
    }
  ],
  "components": {
    "responses": {
      "400BadRequest": {
        "description": "Bad request"
      },
      "403Forbidden": {
        "description": "Operation forbidden"
      },
      "500InternalServer": {
        "description": "Internal server error"
      }
    },
    "schemas": {
      "AccountID": {
        "description": "Account ID",
        "type": "integer",
        "format": "int64",
        "example": 8675309
      },
      "AllowExecutionAfterDayChange": {
        "type": "boolean",
        "description": "Can the schedule be executed after the day changes? For single and transfer schedules that are scheduled for after 11:30pm UTC, this field is required to be `true`.",
        "example": false,
        "default": false
      },
      "Amount": {
        "type": "number",
        "format": "float",
        "description": "Credit or debit amount",
        "example": 100.23
      },
      "DayType": {
        "type": "string",
        "description": "`BUSINESS_DAY` type ignores weekends and holidays, `CALENDAR_DAY` includes all calendar days.",
        "enum": [
          "BUSINESS_DAY",
          "CALENDAR_DAY"
        ],
        "example": "CALENDAR_DAY"
      },
      "Description": {
        "type": "string",
        "description": "Optional text that describes the operation",
        "example": "Custom purchase",
        "maxLength": 100
      },
      "EndDate": {
        "type": "string",
        "format": "date-time",
        "description": "End date of schedule executions in the UTC-0 RFC3339 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.\n",
        "example": "2023-01-02T07:00:00.000Z"
      },
      "Interval": {
        "type": "string",
        "description": "Schedule execution frequency",
        "enum": [
          "DAILY",
          "WEEKLY",
          "MONTHLY",
          "YEARLY"
        ],
        "example": "DAILY"
      },
      "Metadata": {
        "type": "object",
        "description": "This optional user-defined key-value object field can be used with external operations to provide additional context or supplementary custom information for the operation. The Pismo platform does not perform any validation or processing on this field.\n\n**Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis#metadata).\n",
        "example": {
          "any-key": "any-value"
        }
      },
      "ProcessingCode": {
        "type": "string",
        "description": "Processing code that identifies the credit or debit operation",
        "example": "219803"
      },
      "ScheduleID": {
        "type": "string",
        "description": "Schedule ID (idempotency field for this operation)",
        "minLength": 36,
        "maxLength": 50,
        "example": "eec3df75-629d-43dc-8eb7-e3b186188341"
      },
      "StartDateTime": {
        "type": "string",
        "format": "date-time",
        "description": "Start date of executions in the UTC-0 RFC3339 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.\n",
        "example": "2023-01-02T07:00:00.000Z"
      },
      "Strategy": {
        "type": "string",
        "description": "If the `strategy` field is not specified, you must provide the `amount` field for each transfer in the `transfers` array. The following strategy types determine the transfer amounts when a strategy is specified.\n\n- `SWEEP`: Transfers the entire balance from the child account to the parent account. The terms \"parent\" and \"child\" refer to account roles, but no relationship validation is performed.\n\n   Child → Parent\n\n- `OVERDRAFT_SWEEEP`: Follows the same logic as `SWEEP`, except when a child account is negative, in which case the main account sends enough money to zero out the child account.\n\n   Parent → Child\n",
        "enum": [
          "OVERDRAFT_SWEEP",
          "SWEEP"
        ],
        "example": "SWEEP"
      },
      "Transfers": {
        "type": "array",
        "description": "List of transfers, including their origin and destination accounts.\nThe `amount` field must be provided if the `strategy` is not specified.\n",
        "items": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "description": "Transfer description",
              "example": "Transfer to savings account"
            },
            "amount": {
              "$ref": "#/components/schemas/Amount"
            },
            "metadata": {
              "$ref": "#/components/schemas/Metadata"
            },
            "to": {
              "type": "object",
              "description": "Information about the destination account for the transfer",
              "properties": {
                "account_id": {
                  "$ref": "#/components/schemas/AccountID"
                },
                "processing_code": {
                  "$ref": "#/components/schemas/ProcessingCode"
                }
              }
            },
            "from": {
              "type": "object",
              "description": "Information about the source account for the transfer",
              "properties": {
                "account_id": {
                  "$ref": "#/components/schemas/AccountID"
                },
                "processing_code": {
                  "$ref": "#/components/schemas/ProcessingCode"
                }
              }
            }
          }
        }
      },
      "TransferScheduleDetails": {
        "type": "object",
        "description": "Transfer schedule details",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Type"
          },
          "interval": {
            "$ref": "#/components/schemas/Interval"
          },
          "day_type": {
            "$ref": "#/components/schemas/DayType"
          },
          "end_date": {
            "$ref": "#/components/schemas/EndDate"
          },
          "start_date": {
            "$ref": "#/components/schemas/StartDateTime"
          },
          "allow_execution_after_day_change": {
            "$ref": "#/components/schemas/AllowExecutionAfterDayChange"
          }
        }
      },
      "TransferScheduleRequest": {
        "type": "object",
        "description": "Request to create a new transfer schedule",
        "required": [
          "schedule_id",
          "schedule_details",
          "transfers"
        ],
        "properties": {
          "schedule_id": {
            "$ref": "#/components/schemas/ScheduleID"
          },
          "schedule_details": {
            "$ref": "#/components/schemas/TransferScheduleDetails"
          },
          "description": {
            "$ref": "#/components/schemas/Description"
          },
          "strategy": {
            "$ref": "#/components/schemas/Strategy"
          },
          "transfers": {
            "$ref": "#/components/schemas/Transfers"
          }
        }
      },
      "TransferScheduleResponse": {
        "type": "object",
        "description": "Response from the creation of a new transfer schedule",
        "properties": {
          "schedule_id": {
            "$ref": "#/components/schemas/ScheduleID"
          }
        }
      },
      "Type": {
        "type": "string",
        "description": "Should a schedule be executed once or in a recurring fashion?\n- `ONCE`: Executed only once on the date specified in `start_date`.\n- `RECURRING`: Executed repeatedly according to the interval defined in `interval`, within the period between `start_date` and `end_date`. A recurring schedule can run daily, weekly, monthly, or yearly, which is set in the `interval` field.\n",
        "enum": [
          "ONCE",
          "RECURRING"
        ],
        "example": "RECURRING"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Account access token. Tokens can expire quickly, which can result in an \"Unauthorized\" error.",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/v1/transfers": {
      "post": {
        "summary": "Create transfer schedule",
        "operationId": "post-v1-create-transfer-schedules",
        "description": "Create a transfer schedule, which represents a transfer operation from a parent (main) account to one or more associated child accounts. Configure the schedule's execution frequency and other details in the `schedule_details` field.\n\nTransfer amounts can be set as follows.\n- If you fill out the `strategy` field, the platform uses the strategy logic to determine transfer amounts.\n- If you don't fill out the `strategy` field, you must specify the `amount` field for each transfer in the `transfers` array.\n\nIn some cases, due to errors and retries, execution of the scheduled transaction might occur on the following day instead of the originally scheduled date. To address this, the `allow_execution_after_day_change` flag in `schedule_details` enables you to pre-authorize execution of the scheduled transaction on the next day. This flag must be set to `true` for schedules that are set to be executed at the end of the day (after 11:30pm UTC). If the schedule is not executed on the expected day for any reason, and this field isn't set to `true`, the schedule is not executed and is marked as `EXECUTED_WITH_ERROR_NEXT_DAY_NOT_ALLOWED`.\n\nThis endpoint generates the [Scheduled payment created or modified](https://developers.pismo.io/events/docs/scheduler-payments-scheduled-payments-1) event with the `status` field set to `CREATED`.\n\nEach execution of the schedule also generates the [Scheduled payment executed](https://developers.pismo.io/events/docs/scheduler-payments-scheduled-payments-execution-1) event.\n\nRefer to the [Payment scheduler](https://developers.pismo.io/pismo-docs/docs/payment-scheduler) guide for more information.\n",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "description": "Request processing body",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferScheduleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Request was processed successfully, existing schedule with the corresponding `schedule_id` returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferScheduleResponse"
                }
              }
            }
          },
          "201": {
            "description": "Request was processed successfully and new transfer schedule was created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferScheduleResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400BadRequest"
          },
          "403": {
            "$ref": "#/components/responses/403Forbidden"
          },
          "500": {
            "$ref": "#/components/responses/500InternalServer"
          }
        }
      }
    }
  }
}
```