Schedule payment overview

The Schedule payment feature of the Pismo platform enables you to postdate payments; that is, to schedule a payment for a specific future date. The most common scenario is to schedule a recurring monthly payment for a later date. The Pismo platform validates that the scheduled date does not occur on a holiday.

Initial considerations

Consider the following before using scheduled payments:

  • There is no endpoint you can use to update scheduled payments once you have submitted them to Pismo, as these scheduled payments are considered active.
  • If you want to update an active scheduled payment request; for example, to postdate it, you must cancel the existing payment request and schedule a new one with the desired date.
  • You must schedule your payment for at least one minute in the future. There are no restrictions on the maximum date or time you can schedule it.
  • Only the debtor can schedule a payment for a fund transfer.
  • You can reuse a tracking ID when scheduling a new payment, provided that there are no active or processed payments using that same tracking ID. If there are active or processed payments, the endpoint throws an error and scheduling is denied.
  • You cannot schedule payments using a different currency for both credit and debit accounts.
  • Schedule payment does not support multi-leg payments.

Tracking ID

When using this endpoint, you must provide a unique tracking ID (tracking_id) that identifies your scheduled payment request. This ID you provide must satisfy the following criteria:

  • Unique: The tracking ID must be unique within the organization.
  • Immutable: It cannot be updated.
  • Non-reusable: You cannot reuse the same tracking_id for existing scheduled payments, and the tracking ID must be unique for both scheduled and regular transactions. However, you can reuse the tracking ID of a canceled schedule payment when creating a new one.

The tracking ID must be unique for both scheduled and regular transactions.

Status

The following table lists the possible result statuses for a scheduled payment request:

StatusDescription
ActiveThe scheduled payment was successfully created, but has not yet been executed.
CompletedThe scheduled payment was successfully posted.
FailedThe scheduled payment was not successfully posted.
AbortedThe scheduled payment was canceled before its scheduled time.

Example

Sample request

For example, you schedule a $200 payment for March 10th, 2023 using Schedule payment.

curl --location 'https://sandbox.pismolabs.io/corporate/v1/scheduled-payments' \
--header 'Content-Type: application/json' \
--header 'Cookie: <cookie_data>' \
--data '{
    "debit": {
        "external_account_id": "973f4c7c-ac1e-4da2-9ac6-2724a2a8f79e",
        "processing_code": "220037"
    },
    "amount": {
        "value": 200,
        "currency": "USD"
    },
    "soft_descriptor": "Debit operation",
    "tracking_id": "99208f24-6318-4c19-8700-8b9ccf8ee25a",
    "schedule_datetime": "2024-03-10T19:05:56.743Z"
}'

Sample response

If the request is successful, it should return a schedule ID similar to the following:

{
    "id": "5476ddac-351a-4bf0-94d0-169490824d57"
}

You can use the returned schedule ID with the Get scheduled payment by ID endpoint to retrieve details about the scheduled payment:

{
    "id": "5476ddac-351a-4bf0-94d0-169490824d57",
    "status": "ACTIVE",
    "payment": {
        "debit": {
            "external_account_id": "973f4c7c-ac1e-4da2-9ac6-2724a2a8f79e",
            "processing_code": "220037",
            "earmark_id": ""
        },
        "amount": {
            "value": 200,
            "currency": "USD"
        },
        "soft_descriptor": "Debit operation",
        "tracking_id": "cc895998-7b76-447f-bf08-8d973f883f05",
        "metadata": {
            "corporate_metadata": {
                "debit_external_account_id": "973f4c7c-ac1e-4da2-9ac6-2724a2a8f79e",
                "payment_datetime": "2024-03-10T19:05:56.743Z"
            }
        },
        "allow_suspense_posting": false,
        "skip_account_date_validation": false,
        "force_post": false,
        "payment_datetime": "2024-03-10T19:05:56.743Z",
        "schedule_datetime": "2024-03-10T19:05:56.743Z"
    }
}