---
title: "Create transfer schedule"
method: POST
path: "/v1/transfers"
tags: ["Schedules"]
---

# Create transfer schedule

`POST /v1/transfers`

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](https://developers.pismo.io/pismo-docs/docs/payment-scheduler) guide for more information.

## Request body

- TransferScheduleRequest — Request to create a new transfer schedule
  - `schedule_id` string, required — Schedule ID (idempotency field for this operation)
  - `schedule_details` TransferScheduleDetails, required — Transfer schedule details
    - `type` 'authentication' | 'challenge-request' — Evaluation intention
    - `interval` 'DAY' | 'WEEK' | 'MONTH' — Scheduler interval
    - `day_type` 'BUSINESS_DAY' | 'CALENDAR_DAY' — `BUSINESS_DAY` type ignores weekends and holidays, `CALENDAR_DAY` includes all calendar days.
    - `end_date` string, date-time — End date for link (GMT-3). When the final charge for a link is made, `end_date` gets populated.
    - `start_date` string, date-time — Start date of executions in the UTC-0 RFC3339 format. Format: YYYY-MM-DDTHH:mm:ss.sssZ.
    - `allow_execution_after_day_change` boolean — 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`.
  - `description` string — Challenge result
  - `strategy` 'OVERDRAFT_SWEEP' | 'SWEEP' — 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. - `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. Child → Parent - `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. Parent → Child
  - `transfers` object[], required — List of transfers, including their origin and destination accounts. The `amount` field must be provided if the `strategy` is not specified.
    - `description` string — Transfer description
    - `amount` number, double — Fee amount.
    - `metadata` string — Any data object with key/value pairs. No limit on length. **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).
    - `to` object — Information about the destination account for the transfer
      - `account_id` integer — Account ID
      - `processing_code` string — Processing code for the debit transaction. If `split_transaction` is `false` (the default), each installment payment is recorded as one debit transaction equal to the installment amount minus the discount, and `processing_code` is the processing code for that transaction. If `split_transaction` is `true`, each installment payment is recorded as two transactions: a debit transaction for the installment amount and a credit transaction for the discount. In this case, `processing_code` is the processsing code for the debit transaction, and `second_processing_code` is the processing code for the credit transaction.
    - `from` object — Information about the source account for the transfer
      - `account_id` integer — Account ID
      - `processing_code` string — Processing code for the debit transaction. If `split_transaction` is `false` (the default), each installment payment is recorded as one debit transaction equal to the installment amount minus the discount, and `processing_code` is the processing code for that transaction. If `split_transaction` is `true`, each installment payment is recorded as two transactions: a debit transaction for the installment amount and a credit transaction for the discount. In this case, `processing_code` is the processsing code for the debit transaction, and `second_processing_code` is the processing code for the credit transaction.

## Response `200`

Request was processed successfully, existing schedule with the corresponding `schedule_id` returned.

- TransferScheduleResponse — Response from the creation of a new transfer schedule
  - `schedule_id` string — Schedule ID (idempotency field for this operation)

## Other responses

- `201` — Request was processed successfully and new transfer schedule was created
- `400` — Bad request
- `403` — The request has been lost
- `500` — Internal server error

---

[API](https://skmtc.net/pismo/apis/platform-authentication.md) · [All operations](https://skmtc.net/pismo/apis/platform-authentication/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pismo/platform-authentication/versions/935b62e16de4/schema)
