---
updatedAt: 2026-05-01T13:14:07.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. Append .md to any documentation page URL to get its markdown version.

# Confirm payment

Confirm an existing payment operation.

NOTE:
- This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message.
This endpoint generates the following events:
- [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1)
- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1)
- [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1)

See [Data and reporting](doc:data-reporting-overview) for more information on events and setting up event notifications.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Banking - Transaction banking",
    "version": "0.9.0",
    "description": "Transaction banking API",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    }
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io",
      "description": "Sandbox API server for testing"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Payments",
      "description": "Payment endpoints supporting external accounts"
    }
  ],
  "components": {
    "schemas": {
      "BusinessDate": {
        "type": "string",
        "format": "date",
        "description": "Specifying a `business_date` value impacts the account balance history.<br>\n<b>Notes</b>:\n  - The business date is in ISO 8601 format.\n  - The business date allows users to designate the balance history cycle in which a payment is posted.\n  - You can specify a `business_date` within the current working day or up to one working day before or after.\n",
        "example": "2023-03-09"
      },
      "ConfirmPaymentMetadata": {
        "type": "object",
        "description": "Key-value pairs containing data intended for storage in the Pismo system.<br>\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).\n"
      },
      "ErrorCode": {
        "description": "Error code\n`minLength: 1`\n`maxLength: 12`\n",
        "type": "string",
        "minLength": 1,
        "maxLength": 12,
        "example": "WPMT0017"
      },
      "ErrorMessage": {
        "description": "Error message\n`minLength: 1`\n`maxLength: 1000`\n",
        "type": "string",
        "minLength": 1,
        "maxLength": 1000,
        "example": "Invalid JSON payload received: Error unmarshalling request"
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ErrorCode"
          },
          "message": {
            "$ref": "#/components/schemas/ErrorMessage"
          }
        }
      },
      "EventDatetime": {
        "type": "string",
        "format": "date-time",
        "minLength": 1,
        "maxLength": 30,
        "description": "Event date and time displayed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.<br>\n`minLength: 1`\n`maxLength: 30`\n",
        "example": "2023-04-27T12:01:24Z"
      },
      "OriginalTrackingID": {
        "type": "string",
        "description": "Tracking ID for the original operation.",
        "maxLength": 43,
        "example": "249fbd1c-cfcd-48aa-8bcb-1ffe3a5f7978"
      },
      "PaymentSettlementV2Request": {
        "title": "PaymentSettlementV2Request",
        "type": "object",
        "required": [
          "original_tracking_id",
          "tracking_id"
        ],
        "properties": {
          "original_tracking_id": {
            "$ref": "#/components/schemas/OriginalTrackingID"
          },
          "tracking_id": {
            "$ref": "#/components/schemas/TrackingID"
          },
          "business_date": {
            "$ref": "#/components/schemas/BusinessDate"
          },
          "skip_account_date_validation": {
            "$ref": "#/components/schemas/SkipAccountDateValidation"
          },
          "metadata": {
            "$ref": "#/components/schemas/ConfirmPaymentMetadata"
          }
        }
      },
      "SettlementV2Response": {
        "title": "SettlementV2Response",
        "type": "object",
        "properties": {
          "original_tracking_id": {
            "$ref": "#/components/schemas/OriginalTrackingID"
          },
          "tracking_id": {
            "$ref": "#/components/schemas/TrackingID"
          },
          "event_datetime": {
            "$ref": "#/components/schemas/EventDatetime"
          }
        }
      },
      "SkipAccountDateValidation": {
        "type": "boolean",
        "description": "If `FALSE`, the `payment_datetime` is validated against the account creation date and time. If `TRUE`, the validation is skipped.",
        "default": false,
        "example": false
      },
      "TrackingID": {
        "type": "string",
        "description": "A unique payment tracking number provided by the client. If an existing `tracking_id` is found on the Pismo platform, the API returns a `409` error.\n\nThis field is:\n  * Unique within the organization\n  * Immutable: It can't be updated\n  * Not recyclable: You can't reuse a `tracking_id`\n",
        "minLength": 1,
        "maxLength": 43,
        "example": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244"
      }
    },
    "responses": {
      "403Forbidden": {
        "description": "The request has been lost"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "paths": {
    "/corporate/v2/payments/confirm": {
      "post": {
        "summary": "Confirm payment",
        "description": "Confirm an existing payment operation.\n\nNOTE:\n- This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message.\nThis endpoint generates the following events:\n- [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1)\n- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1)\n- [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1)\n\nSee [Data and reporting](https://developers.pismo.io/pismo-docs/docs/data-reporting-overview) for more information on events and setting up event notifications.",
        "parameters": [],
        "operationId": "corporate-v2-post-confirm-payments",
        "tags": [
          "Payments"
        ],
        "requestBody": {
          "description": "Request body",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentSettlementV2Request"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SettlementV2Response"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Operations blocked for account": {
                    "description": "This error occurs when there's an operations block for this account",
                    "value": {
                      "code": "WOBK0007",
                      "message": "Operations blocked for account"
                    }
                  },
                  "Invalid JSON payload": {
                    "value": {
                      "code": "WPMT0017",
                      "message": "Invalid JSON payload received: Error unmarshalling request"
                    }
                  },
                  "Tracking ID exceed size": {
                    "value": {
                      "code": "WPMT0018",
                      "message": "tracking_id must be a maximum of 43 characters in length"
                    }
                  },
                  "Original Tracking ID exceed size": {
                    "value": {
                      "code": "WPMT0018",
                      "message": "original_tracking_id must be a maximum of 43 characters in length"
                    }
                  },
                  "Tracking ID required": {
                    "value": {
                      "code": "WPMT0018",
                      "message": "tracking_id is a required field"
                    }
                  },
                  "Original Tracking ID required": {
                    "value": {
                      "code": "WPMT0018",
                      "message": "original_tracking_id is a required field"
                    }
                  },
                  "Payment date before account creation date": {
                    "value": {
                      "code": "WPMT0001",
                      "message": "The payment date cannot be earlier than the account creation date"
                    }
                  },
                  "Payment date before account migration date": {
                    "value": {
                      "code": "WPMT0061",
                      "message": "The payment date cannot be earlier than the account migration date"
                    }
                  },
                  "Holiday error": {
                    "value": {
                      "code": "WPMT0003",
                      "message": "Cannot post transaction on holidays"
                    }
                  },
                  "Weekend error": {
                    "value": {
                      "code": "WPMT0004",
                      "message": "Cannot post transaction on weekends"
                    }
                  },
                  "Invalid business date for the current business day cycle": {
                    "value": {
                      "code": "WPMT0028",
                      "message": "Invalid business date for the current business day cycle"
                    }
                  },
                  "Transaction owned by another account": {
                    "value": {
                      "code": "WPMT0038",
                      "message": "transaction is owned by another account"
                    }
                  },
                  "Transaction cannot be confirmed": {
                    "value": {
                      "code": "WPMT0039",
                      "message": "transaction cannot be confirmed"
                    }
                  },
                  "Back business dating disabled": {
                    "description": "This error occurs when the back‑business‑date payment feature is disabled through [Past business date toggle](https://developers.pismo.io/pismo-docs/reference/put-back-business-toggle).",
                    "value": {
                      "code": "WPMT0044",
                      "message": "Back business dating is disabled"
                    }
                  },
                  "Transfer must be sent by debit account": {
                    "description": "This error occurs when the transfer confirmation request originates from a credit leg account.",
                    "value": {
                      "code": "WPMT0049",
                      "message": "Transfer operations must be sent by the debit account"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Unauthorized account": {
                    "value": {
                      "code": "WCAC0001",
                      "message": "Account not authorized"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "$ref": "#/components/responses/403Forbidden"
          },
          "404": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Original Tracking ID not found": {
                    "value": {
                      "code": "WPMT0037",
                      "message": "original_tracking_id not found"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Tracking ID already in use": {
                    "description": "This error occurs when the client sends a duplicate tracking ID for the payment",
                    "value": {
                      "code": "WPMT0007",
                      "message": "tracking_id is already in use",
                      "data": {
                        "tracking_id": "10027506-171f-b1e1-8412-67f5f5145a3b",
                        "event_datetime": "2025-02-05T21:46:06Z"
                      }
                    }
                  },
                  "Tracking ID already in use by another account": {
                    "description": "This error occurs when the client sends a duplicate tracking ID that is already used by another account.",
                    "value": {
                      "code": "WPMT0052",
                      "message": "tracking_id is already in use"
                    }
                  }
                }
              }
            }
          },
          "423": {
            "description": "Locked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Transaction using this tracking ID in progress": {
                    "description": "This error occurs when multiple payment requests with the same `tracking_id` are made simultaneously",
                    "value": {
                      "code": "WPMT0047",
                      "message": "transaction using this tracking_id is in progress, please try again later"
                    }
                  },
                  "Transaction using this original tracking ID in progress": {
                    "description": "This error occurs when multiple payment requests with the same `original_tracking_id` are made simultaneously.",
                    "value": {
                      "code": "WPMT0048",
                      "message": "transaction using this original_tracking_id is in progress, please try again later"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Errors",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Generic internal error": {
                    "value": {
                      "code": "ECMN9999",
                      "message": "Internal error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```