{
  "openapi": "3.0.1",
  "info": {
    "title": "The Payment API",
    "version": "v1"
  },
  "paths": {
    "/api/ClientSession": {
      "post": {
        "tags": [
          "Authenticate"
        ],
        "summary": "This will create an API AccessToken for an Application",
        "description": "Return  HTTP Status Code 200 (OK) with AccessToken\r\nReturns HTTP Status Code 400 if could not authenticate",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientSessionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationClientSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/fee": {
      "get": {
        "tags": [
          "Fees"
        ],
        "summary": "Calculates Fees based on Amount and Transaction Source Grouping",
        "description": "Used in our Non-Profit space to help cover any fees on Donations giving the option for all of a donation to go to a Charity.",
        "parameters": [
          {
            "name": "ProcessorGuid",
            "in": "query",
            "description": "optional - Identifies Processor being used by an API Partner",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "CharityId",
            "in": "query",
            "description": "optional - Valid CharityId from Charity Search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrganizationGuid",
            "in": "query",
            "description": "internal use - Valid Panorama Organization Guid",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "IntegrationSourceGuid",
            "in": "query",
            "description": "internal use - Identifies integrated Product",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "TokenGuid",
            "in": "query",
            "description": "Payment API Token GUID. Card Type of Token will be used in Fee Calculation. If using TokenGuid then do not set CreditCardTypeId parameter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Amount",
            "in": "query",
            "description": "required - transaction amount",
            "required": true,
            "schema": {
              "maxLength": 7,
              "type": "string"
            }
          },
          {
            "name": "TransactionSourceGroupId",
            "in": "query",
            "description": "required - API Partners should set to 10 if API Partner fees configured - possible values -\r\n        1 - Donation Fee,\r\n        2 - Peer-to-Peer Fee,\r\n        3 - Auction Performance Fee,\r\n        4 - Ticket Fee,\r\n        5 - Registration Fee,\r\n        6 - Quick Sales Fee,\r\n        7 - Online Store Fee,\r\n        8 - Campaign Fee,\r\n        9 - 0% Auction Performance Fee,\r\n        10 - ApiPartnerFee,\r\n        11 - ExpressPayrollFee;\r\n        12 - PaymentNoFee;",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "PayFee",
            "in": "query",
            "description": "required - cover the fees flag for the transaction. Indicates if the donor intends to cover the processing fees for the donation",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "CommissionRateOverride",
            "in": "query",
            "description": "optional - The percentage value that you want to set for your commission on the transaction. Minimum value that will be used is the FrontStream Commission Rate as set in your contract, maximum value is the maximum commission rate set in your contract. Passing values outside of the min/max range will not result in a validation error, but will instead default to the min/max value (i.e. if your maximum commission rate in your contract is 10%, and you pass \"15.0\" for this value, the Payment API will simply use 10%). Not including this field or passing null also defaults to using the maximum commission rate from your contract.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "CardProcessingFeeOverride",
            "in": "query",
            "description": "optional - Overrides the default percentage processing fee",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "Tip",
            "in": "query",
            "description": "optional - An amount taken up front for the API Partner if Donor decides to apply a tip. Added to the total amount to charge on the donor’s card . Card fee calculations are performed using this value; all commission and credit card fees still apply as normal.",
            "schema": {
              "maxLength": 7,
              "type": "string"
            }
          },
          {
            "name": "Tax",
            "in": "query",
            "description": "optional - A tax amount taken up front. Added to the total amount to charge on the donor’s card. Card fee calculations are performed using this value; all commission and credit card fees still apply as normal.",
            "schema": {
              "maxLength": 7,
              "type": "string"
            }
          },
          {
            "name": "CreditCardTypeId",
            "in": "query",
            "description": "Used for API Partner's per card type fee calculation based on contract, For example - $0.30 per transaction for Visa, MasterCard and Discover cards and $0.50 per transaction for American Express.\r\npossible values -\r\n        1 - AMEX,\r\n        2 - MC,\r\n        3 - VISA,\r\n        4 - DISCOVER,\r\n        5 - DINERSCLUB,\r\n        7 - MAESTRO;",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the calculated fees",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeResponse"
                }
              }
            }
          },
          "400": {
            "description": "If fees calculation throws exception",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the fees are not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/fees": {
      "post": {
        "tags": [
          "Fees"
        ],
        "summary": "Calculates Fees based on an array of Transaction Line items - Amount and Transaction Source Groupings",
        "description": "Used in our Non-Profit space to help cover any fees on Donations giving the option for all of a donation to go to a Charity.",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/FeeListRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeListRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeListRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeeListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the calculated fees",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "If fees calculation throws exception",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the fees are not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get Notifications History per Integration Source by PaymentId or PaymentExternalId",
        "description": "",
        "parameters": [
          {
            "name": "paymentId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paymentExternalId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns all Notifications history by PaymentId or PaymentExternalId",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the Notifications are not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/notificationTest": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Used to test sending over a transaction notification payload to the notification url endpoint configured per an Integration Source",
        "description": " Parameters:\r\n \r\n Url - Integration Source endpoint to post payload to. Example: https://{yourenvironment.yourdomain}.com/api/yourNotification endpoint\r\n\r\n AccessToken - optional if access token needed to hit notification url\r\n \r\n Payload - test payload posting over to Url\r\n\r\n\r\n Example notification test with payload sent out for transaction status:\r\n\r\n\tPOST /api/notificationTest\r\n\t{\r\n\t  ?Url = \"\", // your URL to post notification to.\r\n\t  AccessToken=testToken, // optional if required to hit notification URL.\r\n\t  Payload = {\r\n\t  \"PaymentId\": 55514,\r\n\t  \"PaymentGuid\": \"4f2835cb-1afe-482b-aea6-bf6ea7061828\",\r\n\t  \"PaymentDate\": \"2026-01-20T15:20:07.948\",\r\n\t  \"PaymentExternalId\": \"19498411\",\r\n\t  \"OriginalExternalID\": \"19498411\",\r\n\t  \"RecurringProfileId\": null,\r\n\t  \"RecurringProfileGuid\": null,\r\n\t  \"NextBillDate\": null,\r\n\t  \"ProcessStatus\": 2, // possible values: NotProcessed = 1 \"Not Processed\", Authorized = 2 \"Awaiting Authorization\", Settled = 4 \"Authorized\", Rejected = 5 \"Rejected\", RefundRequired = 6 \"Refund Required\", AwaitingRefund = 7 \"Awaiting Refund\", Refunded = 8 \"Refunded\", Cancelled = 9 \"Cancelled\", Chargeback = 10 \"Chargeback\", RefundRejected = 11 \"Refund Rejected\"\r\n\t  \"ProcessStatusValue\": \"Awaiting Authorization\",\r\n\t  \"PaymentResult\": 3, // possible values: Pending = 1, Processing = 2, Successful = 3, Failed = 4, Refunded = 5, Cancelled = 6\r\n\t  \"PaymentResultValue\": \"Successful\",\r\n\t  \"Amount\": 105.53,\r\n\t  \"DistributionType\": null, // possible values: null, or \"Direct Deposit\" or \"Check\"\r\n\t  \"DistributionTypeValue\": null, // possible values: null, or 1 - Direct Deposit or 2 - Check\r\n\t  \"DistributionStatus\": \"Processing\", possible values: null, or \"Processing\", \"Settled\", \"Refunded\", \"Voided\"\r\n\t  \"DistributionId\": null,\r\n\t  \"SourceGuid\": \"12345678-9012-1234-5678-123456789012\",\r\n\t  \"SourceName\": \"DonationForm\",\r\n\t  \"CharityId\": null,\r\n\t  \"OrganizationGuid\": \"12345678-9012-1234-5678-123456789012\",\r\n\t  \"OrganizationName\": \"TEST SOCIETY\",\r\n\t  \"Ein\": \"00-0000000\",\r\n\t  \"SalesforceAccountId\": null,\r\n\t  \"FgExternalId\": null,\r\n\t  \"BfgExternalId\": null,\r\n\t  \"ArtezExternalId\": null,\r\n\t  \"ArtezInstanceGuid\": null,\r\n\t  \"ExternalConstituentId\": null,\r\n\t  \"FirstName\": \"TEST\",\r\n\t  \"LastName\": \"NAME\",\r\n\t  \"Email\": \"test@testemail.com\",\r\n\t  \"CardHolderName\": \"Test name\",\r\n\t  \"CCLastDigits\": \"2222\",\r\n\t  \"CCType\": \"Visa\",\r\n\t  \"IpAddress\": \"127.0.0.1\",\r\n\t  \"ExternalEventId\": \"9922\",\r\n\t  \"ExternalEventGuid\": null,\r\n\t  \"ExternalEventName\": null,\r\n\t  \"ShippingFee\": 0,\r\n\t  \"TaxableBenefit\": 0,\r\n\t  \"TranId\": \"885ecade-735c-4b8c-9cfd-2870ebca049f\",\r\n\t  \"Tip\": 0,\r\n\t  \"VoidRequestDate\": null,\r\n\t  \"VoidReason\": null,\r\n\t  \"RefundRequestDate\": null,\r\n\t  \"RefundReason\": null,\r\n\t  \"ProcessorId\": 1,\r\n\t  \"ProcessorGuid\": \"12345678-9012-1234-5678-123456789012\",\r\n\t  \"PaymentMethodTypeId\": 3,\r\n\t  \"Surcharge\": null,\r\n\t  \"IsSurchargeEligible\": false,\r\n\t  \"CheckLastDigits\": null,\r\n\t  \"CheckNumber\": null,\r\n\t  \"CheckTypeId\": null,\r\n\t  \"CheckAccountTypeId\": null,\r\n\t  \"FsApplicationFee\": null,\r\n\t  \"EpfSessionId\": \"c2bdd62b-0f22-45fe-83f6-119a24e54f82\",\r\n\t  \"PaymentLines\": [\r\n\t    {\r\n\t      \"PaymentLineId\": 50256,\r\n\t      \"PaymentId\": 55514,\r\n\t      \"CreatedDate\": \"2026-01-20T15:20:09.5520567Z\",\r\n\t      \"ModifiedDate\": \"2026-01-20T15:20:09.45\",\r\n\t      \"IsDeleted\": false,\r\n\t      \"Amount\": 100,\r\n\t      \"CardFeeAmount\": 3.49,\r\n\t      \"CardTypeFeeAmount\": 0,\r\n\t      \"CommissionAmount\": 1.5,\r\n\t      \"PayFee\": true,\r\n\t      \"TransactionSourceGroupId\": 1,\r\n\t      \"CardFeeRate\": 3.49,\r\n\t      \"TotalCommissionRate\": 1.5,\r\n\t      \"TotalCommissionAmount\": 1.5,\r\n\t      \"PartnerCommissionRate\": 0,\r\n\t      \"PartnerCommissionAmount\": 0,\r\n\t      \"FsCommissionRate\": 1.5,\r\n\t      \"FsCommissionAmount\": 1.5,\r\n\t      \"TotalFees\": 5.53,\r\n\t      \"PerTransFee\": 0.35,\r\n\t      \"ExternalLineId\": null,\r\n\t      \"Tip\": 0,\r\n\t      \"CommissionRateOverride\": null,\r\n\t      \"CardFeeOnFeeAmount\": 0.19,\r\n\t      \"Tax\": 0\r\n\t    }\r\n\t  ]\r\n\t}\r\n\t}",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "payload",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accessToken",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/notificationConfig": {
      "put": {
        "tags": [
          "Notifications"
        ],
        "summary": "Save Notification Configurations per an Integration Source",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EditAllNotificationConfigSave"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditAllNotificationConfigSave"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EditAllNotificationConfigSave"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EditAllNotificationConfigSave"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns saved notification config",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationConfigurationDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "If the notification config are not saved",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/recurringProfile": {
      "delete": {
        "tags": [
          "Recurring Contracts"
        ],
        "summary": "Delete/Cancel a recurring profile",
        "description": "",
        "parameters": [
          {
            "name": "IntegrationSource",
            "in": "query",
            "description": "internal use - Identifies integrated Product",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "RecurringProfileGuid",
            "in": "query",
            "description": "required - Valid Recurring Profile Guid for delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecurringProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Recurring Contracts"
        ],
        "summary": "Add a recurring profile",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AddRecurringProfileRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddRecurringProfileRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddRecurringProfileRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddRecurringProfileRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecurringProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a profile",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Recurring Contracts"
        ],
        "summary": "Update a recurring profile",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRecurringProfileRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRecurringProfileRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRecurringProfileRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRecurringProfileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecurringProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/paylink": {
      "delete": {
        "tags": [
          "Pay Links"
        ],
        "summary": "Delete/Cancel a previous pay link url created from being used again",
        "description": "",
        "parameters": [
          {
            "name": "PayLinkId",
            "in": "query",
            "description": "required - Valid pay link identifier to be cancelled/deleted - the identifier is the last parameter of the pay link url returned in the original creation process",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "IntegrationSource",
            "in": "query",
            "description": "internal use - Identifies integrated Product",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayLinkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pay Links"
        ],
        "summary": "Returns a pay link - a unique URL that when clicked, directs users to our FrontStream secure online payment page",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PayLinkRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayLinkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PayLinkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PayLinkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a pay link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayLinkResponse"
                }
              }
            }
          },
          "400": {
            "description": "If pay link creation throws exception",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If pay link data is not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/nextBillDate": {
      "get": {
        "tags": [
          "Recurring Contracts"
        ],
        "summary": "Get a next bill date calculated using Date and Billing Frequency from request for your recurring contract",
        "description": "",
        "parameters": [
          {
            "name": "Date",
            "in": "query",
            "description": "required - format yyyy-MM-dd - Used to help calculate and return NextBillDate based on your Date provided.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "BillingFrequency",
            "in": "query",
            "description": "required - How often the recurrence should occur. Used to help calculate NextBillDate based on billing frequency provided. Possible values:\r\n    \"Daily\", (once per day)\r\n    \"Weekly\", (once per week)\r\n    \"Bi-Weekly\", (once per 2 weeks)\r\n    \"Monthly\", (once per month)\r\n    \"Bi-Monthly\", (Once every 2 months)\r\n    \"Semi-Monthly\", (twice per month)\r\n    \"Quarterly\", (four times per year)\r\n    \"Semi-Annually\", (twice per year)\r\n    \"Annually\" (once per year)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns next bill date",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NextBillDateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the next bill date not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/CharitySearch": {
      "get": {
        "tags": [
          "Charity Search"
        ],
        "summary": "Nonprofit Charity Search",
        "description": "",
        "parameters": [
          {
            "name": "Name",
            "in": "query",
            "description": "optional - Charity Name - partial or full name",
            "schema": {
              "maxLength": 70,
              "type": "string"
            }
          },
          {
            "name": "EIN",
            "in": "query",
            "description": "optional - Valid US/CA Nonprofit EIN/Tax ID. For US EINs, the dash proceeding the first two numbers is optional; the endpoint will handle it either way (i.e. 12-3456789 and 123456789 are both valid and will result in the same record being returned)",
            "schema": {
              "maxLength": 15,
              "minLength": 9,
              "type": "string"
            }
          },
          {
            "name": "CharitySource",
            "in": "query",
            "description": "optional - This should be either 1 (US) or 2 (Canada) - Default to US",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "City",
            "in": "query",
            "description": "optional - Searches the city name of charity addresses",
            "schema": {
              "maxLength": 30,
              "type": "string"
            }
          },
          {
            "name": "State",
            "in": "query",
            "description": "optional - Searches the state code of charity addresses - ISO Standard two digit State code. (VA, NY)",
            "schema": {
              "maxLength": 2,
              "type": "string"
            }
          },
          {
            "name": "PageIndex",
            "in": "query",
            "description": "Defaults to 1 - The page of results to display (i.e. if there are 100 overall results to your search and you provide this as 3 with a PageSize=10, this will return results #21 through #30)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Defaults to 10 - The number of results to display per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "SortColumn",
            "in": "query",
            "description": "Default SortColumn NpoName - Indicates which SearchResults field to sort by (see response example for valid values). Only supports sorting by one column.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SortDesc",
            "in": "query",
            "description": "true/false - Determine to order the results by descending values of the selected column (or NpoName if not selected).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Charity Search Data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CharitySearchResults"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If Charity Search Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/processorPaymentMethodTypes": {
      "get": {
        "tags": [
          "Get Processor Payment Methods"
        ],
        "summary": "Get Active processor supported Payment Method Types by ProcessorGuid",
        "description": "     GET /api/processorPaymentMethodTypes?processorGuid=12345678-9012-3456-7890-dc84772c0032\r\n     Response Example:\r\n\t\t[\r\n  \t\t{\r\n             \"PaymentMethodTypeId\": 1,\r\n             \"PaymentMethodTypeValue\": \"AMEX\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 2,\r\n             \"PaymentMethodTypeValue\": \"MASTERCARD\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 3,\r\n             \"PaymentMethodTypeValue\": \"VISA\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 4,\r\n             \"PaymentMethodTypeValue\": \"DISCOVER\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 5,\r\n             \"PaymentMethodTypeValue\": \"DINERSCLUB\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 6,\r\n             \"PaymentMethodTypeValue\": \"JCB\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 7,\r\n             \"PaymentMethodTypeValue\": \"ACH\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 8,\r\n             \"PaymentMethodTypeValue\": \"GOOGLEPAY\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 9,\r\n             \"PaymentMethodTypeValue\": \"APPLEPAY\"\r\n         },\r\n         {\r\n             \"PaymentMethodTypeId\": 10,\r\n             \"PaymentMethodTypeValue\": \"STRIPE\"\r\n         }\r\n\t\t]",
        "parameters": [
          {
            "name": "processorGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mKey",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns processor supported Payment Method Types data",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentMethodTypeResponse"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the processor payment method types not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/surchargeConfig": {
      "get": {
        "tags": [
          "Surcharge"
        ],
        "summary": "Get Configured Surcharge Merchant data: Is Surcharge enabled, Surcharge percentage, and Surcharge StartDate",
        "description": "",
        "parameters": [
          {
            "name": "processorGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "organizationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mKey",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Configured Surcharge Merchant data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SurchargeConfigResponse"
                }
              }
            }
          },
          "400": {
            "description": "If surcharge config throws exception",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the surcharge config is not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/surcharge": {
      "get": {
        "tags": [
          "Surcharge"
        ],
        "summary": "Returns Calculated Surcharge based on Amount, Configured Surcharge Merchant percentage, and CREDIT only Card Bin",
        "description": "",
        "parameters": [
          {
            "name": "ProcessorGuid",
            "in": "query",
            "description": "required if API Partner - Identifies Processor being used by an API Partner",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrganizationGuid",
            "in": "query",
            "description": "internal use - Valid Panorama Organization Guid",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MKey",
            "in": "query",
            "description": "internal use - Used by FrontStream only",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "CardBin",
            "in": "query",
            "description": "optional if TokenGuid or ExternalCardToken used - Valid card bin - 1st 6 to 8 digits",
            "schema": {
              "maxLength": 8,
              "minLength": 6,
              "type": "string"
            }
          },
          {
            "name": "TokenGuid",
            "in": "query",
            "description": "optional - Valid Token Guid from a Tokenized card through Payment API",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ExternalCardToken",
            "in": "query",
            "description": "internal use",
            "schema": {
              "maxLength": 200,
              "type": "string"
            }
          },
          {
            "name": "Amount",
            "in": "query",
            "description": "required - transaction amount used for surcharge calculation",
            "required": true,
            "schema": {
              "maxLength": 9,
              "type": "string"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the calculated surcharge",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SurchargeResponse"
                }
              }
            }
          },
          "400": {
            "description": "If surcharge calculation throws exception",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "404": {
            "description": "If the surcharge data is not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/paymentResponse": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Returns previous payment response data if available by a PaymentGuid or an EpfSessionId",
        "description": "",
        "parameters": [
          {
            "name": "paymentGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "epfSessionId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns payment response data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "404": {
            "description": "If payment response data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "If payment response data returns throws exception"
          }
        }
      }
    },
    "/api/payment": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Make a payment",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created payment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a payment",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/refund": {
      "post": {
        "tags": [
          "Returns"
        ],
        "summary": "Make a refund",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/void": {
      "post": {
        "tags": [
          "Returns"
        ],
        "summary": "Make a void",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VoidRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoidRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VoidRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VoidRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tokenize": {
      "post": {
        "tags": [
          "Tokenization"
        ],
        "summary": "Tokenize a credit card",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTokenResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/paymentToken": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Make a payment by credit card or ACH check token",
        "description": "    Request example:\r\n    POST /api/paymentToken\r\n\t{\r\n \t\t\"ProcessorGuid\": \"12345678-9012-3456-7890-dc84772c0032\",\r\n        \"TokenGuid\": \"87654321-9012-3456-7890-123456789012\",\r\n        \"Transactions\":\r\n        [\r\n            {\r\n                \"TransactionSourceGroupId\": \"12\",\r\n                \"Amount\": \"1.00\",                       \r\n            }\r\n        ]\r\n\t}",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTokenRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTokenRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTokenRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created payment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a payment",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/verifyCard": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Verify a credit card",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyCardRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyCardRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyCardRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyCardResponse"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/paymentAch": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Make an ach payment",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentAchRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentAchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentAchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentAchRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created payment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a payment",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tokenizeAch": {
      "post": {
        "tags": [
          "Tokenization"
        ],
        "summary": "Tokenize ACH/check account",
        "description": "",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenAchRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenAchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenAchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetTokenAchRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the newly created token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTokenResponse"
                }
              }
            }
          },
          "400": {
            "description": "If it fails to create a token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/organizationTransactionsReport": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Generate Organization Transactions Report by valid organizationGuid",
        "description": " Sample request to get transactions report filters by PaymentDate after (operation 7 = After)\r\n January 1st 2026 (2026-01-01) sorted by PaymentDate column desc, returning page index 1\r\n and page size 1000 records.\r\n\r\n Please see Filters and Operation parameters defined here for requests: https://developers.frontstream.com/welcome-to-our-payment-api/api-references/retrieve-transactions-report#body-parameter-definitions\r\n\r\n     POST /api/organizationTransactionsReport?organizationGuid=87654321-9012-3456-7890-123456789012\r\n\t\t{\r\n  \t\t\"Filters\": [\r\n    \t\t{\r\n      \t\t\"Name\": \"PaymentDate\",\r\n      \t\t\"Operation\": 7,\r\n      \t\t\"Values\": [\r\n       \t\t \"2026-01-01\"\r\n      \t\t]\r\n    \t\t}\r\n  \t\t],\r\n  \t\t\"SortColumns\": [\r\n    \t\t{\r\n      \t\t\"Name\": \"PaymentDate\",\r\n      \t\t\"Descending\": true,\r\n      \t\t\"Order\": 0\r\n    \t\t}\r\n  \t\t],\r\n  \t\t\"PageSize\": 1000,\r\n  \t\t\"PageIndex\": 1\r\n\t\t}",
        "parameters": [
          {
            "name": "organizationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionReportDetailPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/exportOrganizationTransactionsReport": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Export Organization Transactions Report by valid organizationGuid in specified format \"csv\" or \"excel\". Defaults to \"csv\" if not provided",
        "parameters": [
          {
            "name": "organizationGuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/sourceTransactionsReport": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Generate Source Transactions Report",
        "description": " Sample request to get transactions report filters by PaymentDate after (operation 7 = After)\r\n January 1st 2026 (2026-01-01) sorted by PaymentDate column desc, returning page index 1\r\n and page size 1000 records.\r\n\r\n Please see Filters and Operation parameters defined here for requests: https://developers.frontstream.com/welcome-to-our-payment-api/api-references/retrieve-transactions-report#body-parameter-definitions\r\n\r\n     POST /api/sourceTransactionsReport\r\n\t\t{\r\n  \t\t\"Filters\": [\r\n    \t\t{\r\n      \t\t\"Name\": \"PaymentDate\",\r\n      \t\t\"Operation\": 7,\r\n      \t\t\"Values\": [\r\n       \t\t \"2026-01-01\"\r\n      \t\t]\r\n    \t\t}\r\n  \t\t],\r\n  \t\t\"SortColumns\": [\r\n    \t\t{\r\n      \t\t\"Name\": \"PaymentDate\",\r\n      \t\t\"Descending\": true,\r\n      \t\t\"Order\": 0\r\n    \t\t}\r\n  \t\t],\r\n  \t\t\"PageSize\": 1000,\r\n  \t\t\"PageIndex\": 1\r\n\t\t}",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionReportDetailPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/exportSourceTransactionsReport": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Export Source Transactions Report in specified format \"csv\" or \"excel\". Defaults to \"csv\" if not provided",
        "parameters": [
          {
            "name": "AccessToken",
            "in": "header",
            "description": "access token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentExportReportRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BrokenRule"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Success"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddRecurringProfileRequest": {
        "required": [
          "Amount",
          "BillingFrequency",
          "StartDate",
          "TokenGuid"
        ],
        "type": "object",
        "properties": {
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "required - Valid token guid of created tokenized account"
          },
          "Amount": {
            "maxLength": 7,
            "type": "string",
            "description": "required - Amount to be charged per billing frequency"
          },
          "StartDate": {
            "type": "string",
            "description": "required - format yyyy-MM-dd - start date of contract"
          },
          "EndDate": {
            "type": "string",
            "description": "optional - format yyyy-MM-dd - end date of contract (must be after StartDate) if you wish a contract to stop recurring at certain date",
            "nullable": true
          },
          "NextBillDate": {
            "type": "string",
            "description": "optional - format yyyy-MM-dd - We will calculate if not provided. The date when the first recurrence should begin charging the donor's card. Must be after StartDate. Use our GET api/nextBillDate API to help calculate.",
            "nullable": true
          },
          "BillingFrequency": {
            "type": "string",
            "description": "required - How often the recurrence should occur. Possible values:\r\n    \"Daily\", (once per day)\r\n    \"Weekly\", (once per week)\r\n    \"Bi-Weekly\", (once per 2 weeks)\r\n    \"Monthly\", (once per month)\r\n    \"Bi-Monthly\", (Once every 2 months)\r\n    \"Semi-Monthly\", (twice per month)\r\n    \"Quarterly\", (four times per year)\r\n    \"Semi-Annually\", (twice per year)\r\n    \"Annually\" (once per year)"
          },
          "PreFeeAmount": {
            "maxLength": 7,
            "type": "string",
            "description": "optional - Pre Fee Amount with the fees not included if using PayFee flag (primary used for Non Profit transactions like Donations)",
            "nullable": true
          },
          "PayFee": {
            "type": "boolean",
            "description": "optional - cover the fees flag for the transaction (primary used for Non Profit transactions like a donation), if used see Amount and PreFeeAmount info",
            "nullable": true
          },
          "TransactionSourceGroupId": {
            "type": "string",
            "description": "optional - For Direct Merchant (For Profit) Api Partners should set to PaymentNoFee (12), other values are for Non Profit transactions - possible values -\r\n        1 - Donation Fee,\r\n        2 - Peer-to-Peer Fee,\r\n        3 - Auction Performance Fee,\r\n        4 - Ticket Fee,\r\n        5 - Registration Fee,\r\n        6 - Quick Sales Fee,\r\n        7 - Online Store Fee,\r\n        8 - Campaign Fee,\r\n        9 - 0% Auction Performance Fee,\r\n        10 - ApiPartnerFee,\r\n        11 - ExpressPayrollFee;\r\n        12 - PaymentNoFee;",
            "nullable": true
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional - Event Id per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "optional - Event Guid per Product",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional - Event Name per Product",
            "nullable": true
          },
          "Surcharge": {
            "maxLength": 7,
            "type": "string",
            "description": "optional - calculated surcharge amount",
            "nullable": true
          },
          "CommissionRateOverride": {
            "type": "string",
            "description": "optional - The percentage value that you want to set for your commission on the transaction. Minimum value that will be used is the FrontStream Commission Rate as set in your contract, maximum value is the maximum commission rate set in your contract. Passing values outside of the min/max range will not result in a validation error, but will instead default to the min/max value (i.e. if your maximum commission rate in your contract is 10%, and you pass \"15.0\" for this value, the Payment API will simply use 10%). Not including this field or passing null also defaults to using the maximum commission rate from your contract. Primary used for Non Profit transactions.",
            "nullable": true
          },
          "CardProcessingFeeOverride": {
            "type": "string",
            "description": "optional - Overrides the default percentage processing fee. Primary used for Non Profit transactions.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "AFShieldPaymentRequest": {
        "type": "object",
        "properties": {
          "ProductDescription": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ProductItem": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ProductType": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ProductQuantity": {
            "maxLength": 3,
            "type": "string",
            "nullable": true
          },
          "SessionId": {
            "maxLength": 32,
            "type": "string",
            "nullable": true
          },
          "BillToPhoneNumber": {
            "maxLength": 32,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressStreet1": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressStreet2": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressCountry": {
            "maxLength": 2,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressCity": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressEmail": {
            "maxLength": 64,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "ShippingAddressName": {
            "maxLength": 64,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressZip": {
            "maxLength": 10,
            "type": "string",
            "nullable": true
          },
          "ShippingAddressState": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "ShipToPhoneNumber": {
            "maxLength": 32,
            "type": "string",
            "nullable": true
          },
          "ShipToPremiseForUK": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "ShipToStreetForUK": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "BillToPremiseForUK": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          },
          "BillToStreetForUK": {
            "maxLength": 256,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "AuthenticationClientSessionResponse": {
        "type": "object",
        "properties": {
          "Token": {
            "type": "string",
            "description": "This is the AccessToken you will use for any other API call",
            "nullable": true
          },
          "ClientId": {
            "type": "string",
            "description": "Unique identifier for the API Partner; provided by FrontStream",
            "format": "uuid"
          },
          "ExpirationDate": {
            "type": "string",
            "description": "The date and time at which the AccessToken will no longer be valid if not used first. Will always be 5 hours from when the response is sent.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "BrokenRule": {
        "type": "object",
        "properties": {
          "ErrorCode": {
            "type": "integer",
            "format": "int32"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "LoggerMessage": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CharitySearchResults": {
        "type": "object",
        "properties": {
          "TotalResultCount": {
            "type": "integer",
            "description": "How many total possible results there are for your search.",
            "format": "int32"
          },
          "TotalPages": {
            "type": "integer",
            "description": "How many pages of data exist based on your selected PageSize.",
            "format": "int32"
          },
          "PageIndex": {
            "type": "integer",
            "description": "Confirms what you passed in the querystring.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Confirms what you passed in the querystring.",
            "format": "int32"
          },
          "SearchResults": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CharitySearchResultsList"
            },
            "description": "Each record in the array represents a full Charity Record.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "CharitySearchResultsList": {
        "type": "object",
        "properties": {
          "CharityId": {
            "type": "string",
            "description": "Unique Identifier for the Charity in the Payment API.",
            "nullable": true
          },
          "NpoName": {
            "type": "string",
            "description": "Name of the Charity in the Payment API database.",
            "nullable": true
          },
          "EIN": {
            "type": "string",
            "description": "The United States EIN or Canadian Tax ID of the Charity.",
            "nullable": true
          },
          "Address1": {
            "type": "string",
            "description": "Address Line 1 of the Charity's address.",
            "nullable": true
          },
          "Address2": {
            "type": "string",
            "description": "Address Line 2 of the Charity's address.",
            "nullable": true
          },
          "City": {
            "type": "string",
            "description": "City of the Charity's address.",
            "nullable": true
          },
          "State": {
            "type": "string",
            "description": "State of the Charity's address.",
            "nullable": true
          },
          "Zip": {
            "type": "string",
            "description": "Postal Code of the Charity's address.",
            "nullable": true
          },
          "Country": {
            "type": "string",
            "description": "Country of the Charity's address.",
            "nullable": true
          },
          "NpoEligibilityFlag": {
            "type": "boolean",
            "description": "Indicates whether or not the organization is currently able to receive tax-deductible donations based on United States IRS filings."
          },
          "ParentOrgName": {
            "type": "string",
            "description": "This will return the same value as NpoName if the Charity has no Parent organization, but if a particular organization has indicated that it is a child organization of a larger Charity (such as a regional chapter of a nationwide charity), the Parent Charity name will appear here.",
            "nullable": true
          },
          "NTEEcode": {
            "type": "string",
            "description": "The Charity's NTEE code as defined by United States IRS filings. This is not a required classification, and thus may not exist for all records (and will not exist for Canadian charity records).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "ClientSessionRequest": {
        "required": [
          "ClientId",
          "ClientSecret"
        ],
        "type": "object",
        "properties": {
          "ClientId": {
            "type": "string",
            "description": "Unique identifier for the API Partner; provided by FrontStream"
          },
          "ClientSecret": {
            "maxLength": 500,
            "type": "string",
            "description": "Key specifically paired to the clientId"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "ConstraintOperation": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23
        ],
        "type": "integer",
        "format": "int32"
      },
      "DistributionType": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32"
      },
      "EditAllNotificationConfigSave": {
        "required": [
          "NotificationConfigs"
        ],
        "type": "object",
        "properties": {
          "IntegrationSourceGuid": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "NotificationConfigs": {
            "maxItems": 20,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EditNotificationConfigSave"
            },
            "description": "NotificationConfigs: 1 - n notification configs for an Integration Source"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "EditNotificationConfigSave": {
        "required": [
          "NotificationConfigurationTypeId",
          "NotificationProtocolTypeId",
          "NotificationUrl",
          "Retries"
        ],
        "type": "object",
        "properties": {
          "NotificationConfigurationTypeId": {
            "type": "string",
            "description": "required - NotificationConfigurationTypeId: possible values -\r\n        1 - General"
          },
          "NotificationProtocolTypeId": {
            "type": "string",
            "description": "required - NotificationProtocolTypeId: possible values -\r\n        1 - Web,\r\n        2 - Email - (Email currently not in use)"
          },
          "NotificationUrl": {
            "maxLength": 250,
            "type": "string",
            "description": "required - NotificationUrl - Url to post notification to. Integration Source endpoint to post payload to. Example: https://{yourenvironment.yourdomain}.com/api/yourNotification endpoint. Make sure to include Https://"
          },
          "NotificationEmailFrom": {
            "maxLength": 250,
            "type": "string",
            "description": "Not in use - NotificationEmailFrom – optional Notification Email from",
            "format": "email",
            "nullable": true
          },
          "NotificationEmailTo": {
            "maxLength": 250,
            "type": "string",
            "description": "Not in use - NotificationEmailTo – optional Notification Email to",
            "format": "email",
            "nullable": true
          },
          "Retries": {
            "type": "integer",
            "description": "required - number of retries to try again failed notifications - currently retries 10 times by default or set to 0",
            "format": "int32"
          },
          "AccessToken": {
            "maxLength": 250,
            "type": "string",
            "description": "optional (max: 250) - if access token needed to hit notification url",
            "nullable": true
          },
          "IsDeleted": {
            "type": "boolean",
            "description": "set to true if you wish to deactivate configuration, otherwise set to false"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "FeeListRequest": {
        "required": [
          "Transactions"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSourceGuid": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "Payment API Token GUID. Card Type of Token will be used in Fee Calculation. If using TokenGuid then do not set CreditCardTypeId parameter",
            "nullable": true
          },
          "Transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransTypeRequest"
            },
            "description": "required - 1 to n transactions to break down transaction line items"
          }
        },
        "additionalProperties": false
      },
      "FeeListResponse": {
        "type": "object",
        "properties": {
          "TotalPaymentAmount": {
            "type": "number",
            "description": "The total payment amount processed toward the cardholder's account.",
            "format": "double"
          },
          "TotalFeesAmount": {
            "type": "number",
            "description": "The calculated total fees amount of the list of transactions.",
            "format": "double"
          },
          "TotalTaxAmount": {
            "type": "number",
            "description": "The calculated total tax amount of the list of transactions.",
            "format": "double"
          },
          "TransactionFees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeResponse"
            },
            "description": "List of Transaction Fee Responses",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FeeResponse": {
        "type": "object",
        "properties": {
          "TransactionSourceGroupId": {
            "type": "string",
            "nullable": true
          },
          "PaymentAmount": {
            "type": "number",
            "description": "This is the amount charged to the donor. Will be equal to the sum of the Amount parameters if payFee=false, but if payFee=true, then this will be the amount that will be charged to the donor in order to have the net post-disbursement donation be equal to the Amount parameters.",
            "format": "double",
            "nullable": true
          },
          "CardFeeRate": {
            "type": "number",
            "description": "example 2.5% - applied to EVERY donation. This is the FrontStream card processing fee. The percentage of the PaymentAmount that will be taken for credit card fees. Expressed as a human-readable percentage rather than a decimal value, it is intended to be able to be displayed directly on a page without needing to be converted.",
            "format": "double",
            "nullable": true
          },
          "CardFeeAmount": {
            "type": "number",
            "description": "This is the amount that is owed to the gateway for the example 2.5% that FrontStream collects from the transaction.\r\n 2.5% of transaction amount if donor is not paying the fee, otherwise 2.5% of the transaction + card fee.",
            "format": "double",
            "nullable": true
          },
          "CardTypeFeeAmount": {
            "type": "number",
            "description": "A per transaction fee configured by card type (VI, MC, DI, AMEX, etc.) per API Partner's Contract other wise 0 (zero)",
            "format": "double",
            "nullable": true
          },
          "TotalCommissionRate": {
            "type": "number",
            "description": "The Total percentage of Commissions that FrontStream takes from a given transaction.\r\nThis rate = Partner CommissionRate + FS CommissionRate",
            "format": "double",
            "nullable": true
          },
          "TotalCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the Total commission rate.",
            "format": "double",
            "nullable": true
          },
          "PartnerCommissionRate": {
            "type": "number",
            "description": "The Partner Commission percentage taken on behalf of the Partner from a given transaction.",
            "format": "double",
            "nullable": true
          },
          "PartnerCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the Partner commission rate.",
            "format": "double",
            "nullable": true
          },
          "FsCommissionRate": {
            "type": "number",
            "description": "The FrontStream Commission percentage that FrontStream takes from a given transaction.",
            "format": "double",
            "nullable": true
          },
          "FsCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the FrontStream commission rate.",
            "format": "double",
            "nullable": true
          },
          "TotalFees": {
            "type": "number",
            "description": "The sum of all fees applied to a transaction amount. (TotalCommission + CardFee + FlatFee + CardFeeOnFee)",
            "format": "double",
            "nullable": true
          },
          "MaxOverridePartnerCommissionRate": {
            "type": "number",
            "description": "The derived minimum partner override rate and maximum partner override rate\r\n\r\nMaxOverridePartnerCommissionRate = TotalFees = (PartnerCommission rate) + (Card Fee Rate) + (Fs Commission Rate)\r\nMinOverridePartnerCommissionRate = (Card Fee rate) + (Fs Commission rate)",
            "format": "double"
          },
          "MinOverridePartnerCommissionRate": {
            "type": "number",
            "format": "double"
          },
          "PerTransFee": {
            "type": "number",
            "description": "The flat amount that will be taken from the PaymentAmount for any Per-Transaction Fees as configured in your contract.",
            "format": "double",
            "nullable": true
          },
          "Tip": {
            "type": "number",
            "description": "The flat amount that will be paid out to the API Partner if Donor decides to add a tip regardless of payFee true or false.",
            "format": "double"
          },
          "CardFeeOnFeeAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "Tax": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "GetTokenAchRequest": {
        "required": [
          "CheckAccountNumber",
          "CheckAccountTypeId",
          "CheckRoutingNumber",
          "CheckTypeId",
          "City",
          "Country",
          "Email",
          "NameOnCheck",
          "Street"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "CheckRoutingNumber": {
            "maxLength": 9,
            "type": "string",
            "description": "required - Valid Check Bank Routing Number - formats -\r\nUS: Enter 9-digits,\r\nCA: Enter 9-digits (Format: 0YYYXXXXX: A mandatory leading zero. YYY: The 3-digit institution number. XXXXX: The 5-digit transit number),\r\nAU: Enter 6-digits - BSB Number (Bank State Branch) without hyphen"
          },
          "CheckAccountNumber": {
            "maxLength": 20,
            "type": "string",
            "description": "required - Valid Check Account Number - formats -\r\nUS: Enter 8-12 digits,\r\nCA: Enter 7-12 digits,\r\nAU: Enter 3-9 digits"
          },
          "CheckNumber": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Valid Check Number",
            "nullable": true
          },
          "CheckAccountTypeId": {
            "type": "string",
            "description": "required for Check ACH transactions - possible values -\r\n        1 - Checking,\r\n        2 - Saving"
          },
          "CheckTypeId": {
            "type": "string",
            "description": "required for Check ACH transactions - possible values -\r\n        1 - Personal,\r\n        2 - Corporate,\r\n        3 - Government"
          },
          "NameOnCheck": {
            "maxLength": 25,
            "type": "string",
            "description": "required - Name on ACH Check Account"
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "required - valid contact email",
            "format": "email"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing street"
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing city"
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional - 2 char US state code, 3 char may be used for other non-US",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "optional - 2 char country code"
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional - 3 char currency code - Example for US - \"USD\", for CA - \"CAD\"",
            "nullable": true
          },
          "ExternalConstituentId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - ConstituentId per Product",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing First Name",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing Last Name",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "client ip address (max: 40) where transaction originates",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetTokenRequest": {
        "required": [
          "CardNum",
          "City",
          "Country",
          "Email",
          "ExpMonth",
          "ExpYear",
          "NameOnCard",
          "Street"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use",
            "nullable": true
          },
          "CardNum": {
            "maxLength": 30,
            "type": "string",
            "description": "Valid Credit card number"
          },
          "CardType": {
            "maxLength": 20,
            "type": "string",
            "description": "optional (max: 20) - \"American Express\", \"Mastercard\", \"Visa\", \"Discover\", \"Diners Club\" - will be set internally based on cardNum",
            "nullable": true
          },
          "ExpMonth": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "example: \"01\" for January - required"
          },
          "ExpYear": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "example: \"29\" for 2029 - required"
          },
          "CVNum": {
            "maxLength": 4,
            "type": "string",
            "description": "optional (max: 4) - valid CVV - please provide for CVV checks",
            "nullable": true
          },
          "NameOnCard": {
            "maxLength": 25,
            "type": "string",
            "description": "required - Name on Card"
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "required - valid contact email",
            "format": "email"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - please provide for best interchange and avs checks - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "required - please provide for best interchange and avs checks"
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "required - please provide for best interchange and avs checks"
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional - 2 char US state code, 3 char may be used for other non-US",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "required - 2 char country code"
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional - 3 char currency code - Example for US - \"USD\", for CA - \"CAD\"",
            "nullable": true
          },
          "ExternalConstituentId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - ConstituentId per Product",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing First Name",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing Last Name",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "client ip address (max: 40) where transaction originates",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "GetTokenResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "This is \"true\" tokenization process was successful, and \"false\" if unsuccessful."
          },
          "Message": {
            "type": "string",
            "description": "Get Token response message",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "description": "Get Token Processor response message",
            "nullable": true
          },
          "TransactionId": {
            "type": "string",
            "description": "Not currently used and may be null",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "The unique GUID associated with the credit card or bank token you created that is used with the api/paymentToken endpoint",
            "format": "uuid"
          },
          "ExternalCardToken": {
            "type": "string",
            "description": "ExternalCardToken if available to return - represents 3rd party gateway card token",
            "nullable": true
          },
          "ExternalCheckToken": {
            "type": "string",
            "description": "ExternalCheckToken if available to return - represents 3rd party gateway check token",
            "nullable": true
          },
          "ExternalCustomerId": {
            "type": "string",
            "description": "ExternalCustomerId if available to return - represents 3rd party gateway customer id tied to gateway token",
            "nullable": true
          },
          "ResponseCode": {
            "type": "string",
            "description": "Response Code - Successful = \"OK\" or \"0\", any other response code unsuccessful",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "NextBillDateResponse": {
        "type": "object",
        "properties": {
          "NextBillDate": {
            "type": "string",
            "description": "Response Format Example:\r\n\"NextBillDate\": \"2029-07-23TT00:00:00\"",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "NotificationConfigurationDto": {
        "type": "object",
        "properties": {
          "NotificationConfigId": {
            "type": "integer",
            "format": "int32"
          },
          "NotificationConfigType": {
            "$ref": "#/components/schemas/NotificationConfigurationTypeDto"
          },
          "NotificationProtocolType": {
            "$ref": "#/components/schemas/NotificationProtocolTypeDto"
          },
          "IntegrationSourceId": {
            "type": "integer",
            "format": "int32"
          },
          "NotificationUrl": {
            "type": "string",
            "nullable": true
          },
          "NotificationEmailTo": {
            "type": "string",
            "nullable": true
          },
          "NotificationEmailFrom": {
            "type": "string",
            "nullable": true
          },
          "AccessToken": {
            "type": "string",
            "nullable": true
          },
          "Retries": {
            "type": "integer",
            "format": "int32"
          },
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          },
          "ModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "IsDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NotificationConfigurationTypeDto": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "type": "integer",
        "format": "int32"
      },
      "NotificationProtocolTypeDto": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32"
      },
      "NotificationsResponse": {
        "type": "object",
        "properties": {
          "NotificationId": {
            "type": "integer",
            "description": "Notification Id",
            "format": "int32"
          },
          "NotificationGuid": {
            "type": "string",
            "description": "Unique Notification identifier",
            "format": "uuid"
          },
          "NotificationConfigId": {
            "type": "integer",
            "description": "Notification Configuration Id set up per Integration Source",
            "format": "int32"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Notification Created date",
            "format": "date-time"
          },
          "ModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Payload": {
            "type": "string",
            "description": "Notification payload sent out for transaction status",
            "nullable": true
          },
          "RetryCount": {
            "type": "integer",
            "description": "Number of retry attempts to send Notification payload to configured Notification URL",
            "format": "int32",
            "nullable": true
          },
          "Postdate": {
            "type": "string",
            "description": "if available - the date the Notification was posted to configured Notification URL successfully",
            "format": "date-time",
            "nullable": true
          },
          "NotificationStatus": {
            "$ref": "#/components/schemas/NotificationStatus"
          },
          "NotificationUrl": {
            "type": "string",
            "description": "Url configure to post notifications to. The Integration Source endpoint to post notification payload to.",
            "nullable": true
          },
          "PaymentId": {
            "type": "integer",
            "description": "Payment API PaymentId associated with the Notification",
            "format": "int32",
            "nullable": true
          },
          "PaymentExternalId": {
            "type": "string",
            "description": "Payment API PaymentExternalId associated with the Notification",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NotificationStatus": {
        "enum": [
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "format": "int32"
      },
      "PayLinkPaymentLine": {
        "required": [
          "Amount",
          "Recurring",
          "Type"
        ],
        "type": "object",
        "properties": {
          "Amount": {
            "maxLength": 7,
            "type": "string",
            "description": "required - transaction amount"
          },
          "Type": {
            "type": "integer",
            "description": "required - Payment type identifier - possible values -\r\n        1 - Donation Fee,\r\n        3 - Auction Performance Fee,\r\n        4 - Ticket Fee,\r\n        5 - Registration Fee,\r\n        12 - PaymentNoFee;",
            "format": "int32"
          },
          "Recurring": {
            "type": "integer",
            "description": "required - Indicates if the payment is recurring and billing frequency - possible values -\r\n        0 - Not recurring,\r\n        1 - Daily,\r\n        2 - Weekly,\r\n        3 - Bi-Weekly,\r\n        4 - Monthly,\r\n        5 - Bi-Monthly,\r\n        6 - Quarterly,\r\n        7 - Semi-Annually,\r\n        8 - Annually\r\n        9 - Semi-Monthly",
            "format": "int32"
          },
          "ExternalLineId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - use this to track individual line item IDs if necessary.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayLinkRequest": {
        "required": [
          "ApiKey",
          "IpAddress",
          "PaymentLines",
          "RedirectUrl"
        ],
        "type": "object",
        "properties": {
          "ApiKey": {
            "type": "string",
            "description": "required - Your API key for pay link authentication."
          },
          "ProcessorGuid": {
            "type": "string",
            "description": "optional - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "optional and internal use - Identifies integrated Product",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "required - client ip address where transaction originates"
          },
          "RedirectUrl": {
            "maxLength": 500,
            "type": "string",
            "description": "required - The URL to which the user will be redirected after payment."
          },
          "PaymentLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayLinkPaymentLine"
            },
            "description": "required - An array of payment line objects specifying amounts and types."
          },
          "TranId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) for API Partner Reference or Invoice number and Dup Checking - unique id per Integration Source transaction (where integration source has DupCheckEnabled) that will be checked against successfully processed prior TranIds for Duplicates",
            "nullable": true
          },
          "ShowTransactionId": {
            "type": "boolean",
            "description": "optional - 'True' will display the TranId on the checkout form",
            "nullable": true
          },
          "TransactionIdText": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - The text to display in front of the TranId. Example: Invoice#:",
            "nullable": true
          },
          "PoweredByText": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - Text to display for branding purposes (e.g., \"Powered by Your Company\").",
            "nullable": true
          },
          "PoweredByUrl": {
            "maxLength": 500,
            "type": "string",
            "description": "optional (max: 500) - The URL users will be directed to when clicking the PoweredByText.",
            "nullable": true
          },
          "DonateButtonText": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - Text displayed on the submit payment button. Default is \"Submit Payment\".",
            "nullable": true
          },
          "Language": {
            "maxLength": 35,
            "type": "string",
            "description": "optional (max: 35) - The language of the pay link session. Default is \"en\" for english.",
            "nullable": true
          },
          "DefaultCountryCode": {
            "maxLength": 2,
            "type": "string",
            "description": "optional - 2 char country code. The default country code for user input. Example: \"US\".",
            "nullable": true
          },
          "Theme": {
            "maxLength": 5000,
            "type": "string",
            "description": "optional (max: 5000) - CSS string for custom styling of the embedded session. Example: \".p-card-title{ color: rgb(255, 255, 255) !important; font-family: Open Sans !important}.EPF__body{ background-color: rgb(0, 0, 0); } .card {background: transparent !important;} .p-card{background: transparent !important;} .surface-card{background: transparent !important;}.p-card-title{ color: rgb(255, 255, 255) !important; font-family: Open Sans !important}.EPF__subheading__text{ color: rgb(255, 255, 255) !important; font-family: Open Sans !important}.EPF__body__text,.p-field-checkbox,.p-steps .p-steps-item .p-steps-title{ color: rgb(255, 255, 255) !important; font-family: Montserrat !important}.p-button-label{color:rgb(19, 5, 5) !important; font-family:Roboto;}.p-button{background-color:rgb(34, 136, 231) !important;border-radius:25px;border-color: transparent !important;}.p-button:hover{background-color:rgb(21, 110, 193) !important;}.p-button-label:hover{color:rgb(44, 30, 30) !important}.gpay-card-info-container{border-radius:25px!important;}.EPF__link__text{ color: rgb(216, 243, 255) !important; font-family: Montserrat !important}.EPF__form-element, .p-dropdown{ border:none !important; -webkit-box-shadow: none; box-shadow:none;  background-color: transparent; border-bottom: 0.055rem solid gray !important; }.p-steps .p-steps-item.p-highlight .p-steps-number{background: rgb(34, 136, 231) !important;}.epf-cc {color: rgb(255, 255, 255);}.epf-cc-selected {color: rgb(34, 136, 231);}.p-button {color: rgb(19, 5, 5) !important;}.EPF__form-element:focus{color: #495057; -webkit-box-shadow: none !important; box-shadow:none !important; background-color: #FFFFFF !important; border-color: #4A4A4A !important;}.EPF_form-element--error{ -webkit-box-shadow: none !important; box-shadow:none !important;  background-color: #F6CCD1 !important; border-color: #DC143C !important;}.EPF_form-element--error:focus{background-color: #F6CCD1 !important;}.has-error .input-group-addon { background-color: #F6CCD1 !important }.select--error { background: #F6CCD1 }.select--error ~ .fa-angle-down { display:none }.select--error:focus ~ .fa-angle-down { display: inline }.select--error:focus ~ .fa-exclamation-circle { display: none}.select--error:focus { background-color: #F6CCD1 }.exclamation-textArea { padding-top: 3.75rem }.form-field--invalid {border-color: #d0021b !important;}.form-field--invalid .p-dropdown {border-color: #d0021b !important;}.EPF__form-element, .p-dropdown{border-radius: 0 !important; }.EPF_form-element:focus{ -webkit-box-shadow: none !important; box-shadow:none !important;  background-color: transparent !important; border-color: #4A4A4A !important;}.EPF_form-element--error{ -webkit-box-shadow: none !important; box-shadow:none !important;  background-color: transparent !important; border-color: #DC143C !important;}.EPF_form-element--error:focus{background-color: #F6CCD1 !important; }.has-error .form-control{ -webkit-box-shadow: none !important; box-shadow:none !important;  background-color: transparent !important;}.has-error .form-control:focus{ -webkit-box-shadow: none !important; box-shadow:none !important;  background-color: transparent !important;}.EPF__form-element{color: rgb(255, 255, 255); }.p-inputtext{color: rgb(255, 255, 255)}.EPF__form-element::placeholder{color: rgb(255, 255, 255)}\"",
            "nullable": true
          },
          "ThemeFonts": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "optional - Array of fonts to be used in the session. example: \"\"Open Sans:400,500,600,700 \",\"Montserrat:400, 700 \",\"Roboto:400, 700 \".",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - if set, this FirstName will display in payment form",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - if set, this LastName will display in payment form",
            "nullable": true
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "option (max: 100) - valid contact email - - if set, this Email will display in payment form",
            "format": "email",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - if set, this Street will display in payment form",
            "nullable": true
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - if set, this City will display in payment form",
            "nullable": true
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000 - if set, this Zip will display in payment form",
            "nullable": true
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional - 2 char US state code, 3 char may be used for other non-US - if set, this State will display in payment form",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "optional - 2 char country code - if set, this Country will display in payment form",
            "nullable": true
          },
          "Phone": {
            "maxLength": 20,
            "type": "string",
            "description": "optional (max: 20) - valid North America patterns currently supported: 123-456-7890, (123) 456-7890, 123.456.7890, +12025550123, 1234567890",
            "nullable": true
          },
          "TokenizeCard": {
            "type": "boolean",
            "description": "optional - set to true to tokenize card or check at time of purchase",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "optional - TokenGuid to use to process transaction in payment form. If using ExternalCardToken or ExternalCheckToken instead of TokenGuid - Valid Token Guid from a Tokenized card through Embedded Payment Form/Payment API",
            "nullable": true
          },
          "ExternalCardToken": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - Customer credit card token generated outside the Embedded Form (e.g. ArgoFire). ExternalCardToken to use to process transaction in payment form.",
            "nullable": true
          },
          "ExternalCheckToken": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - Customer check token generated outside the Embedded Form (e.g. ArgoFire). ExternalCheckToken to use to process transaction in payment form.",
            "nullable": true
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Customer Event Id",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional (max: 500) - Customer Event Name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayLinkResponse": {
        "type": "object",
        "properties": {
          "PayLinkUrl": {
            "type": "string",
            "description": "a unique URL that when clicked, direct users to our FrontStream secure online payment page",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentAchRequest": {
        "required": [
          "CheckAccountNumber",
          "CheckAccountTypeId",
          "CheckRoutingNumber",
          "CheckTypeId",
          "Email",
          "IpAddress",
          "NameOnCheck",
          "State",
          "Transactions"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "CheckRoutingNumber": {
            "maxLength": 9,
            "type": "string",
            "description": "required - Valid Check Bank Routing Number - formats -\r\nUS: Enter 9-digits,\r\nCA: Enter 9-digits (Format: 0YYYXXXXX: A mandatory leading zero. YYY: The 3-digit institution number. XXXXX: The 5-digit transit number),\r\nAU: Enter 6-digits - BSB Number (Bank State Branch) without hyphen"
          },
          "CheckAccountNumber": {
            "maxLength": 20,
            "type": "string",
            "description": "required - Valid Check Account Number - formats -\r\nUS: Enter 8-12 digits,\r\nCA: Enter 7-12 digits,\r\nAU: Enter 3-9 digits"
          },
          "CheckNumber": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Valid Check Number",
            "nullable": true
          },
          "CheckAccountTypeId": {
            "type": "string",
            "description": "required for Check ACH transactions - possible values -\r\n        1 - Checking,\r\n        2 - Savings"
          },
          "CheckTypeId": {
            "type": "string",
            "description": "required for Check ACH transactions - possible values -\r\n        1 - Personal,\r\n        2 - Corporate,\r\n        3 - Government"
          },
          "NameOnCheck": {
            "maxLength": 25,
            "type": "string",
            "description": "required - Name on ACH Check Account"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing street",
            "nullable": true
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "required - valid contact email",
            "format": "email"
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing city",
            "nullable": true
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "required - 2 char US state code, 3 char may be used for other non-US"
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "optional - 2 char country code",
            "nullable": true
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional - 3 char currency code - Example for US - \"USD\", for CA - \"CAD\"",
            "nullable": true
          },
          "ExternalConstituentId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - Donor Identifier per Product",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing First Name",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing Last Name",
            "nullable": true
          },
          "BillingDescriptor": {
            "maxLength": 22,
            "type": "string",
            "description": "optional (max: 22) - descriptor to show on bank statement",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "required - client ip address where transaction originates"
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Event Identifier per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "optional - Event Guid per Product",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional (max: 500) - Event Name per Product",
            "nullable": true
          },
          "ShippingFee": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - fee for shipping that will be added to the total amount",
            "nullable": true
          },
          "TaxableBenefit": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - If part of the donation being passed in is taxable, include that amount here. No calculations are performed using this value, it is simply a placeholder to be used for your own reporting; all commission and credit card fees still apply as normal.",
            "nullable": true
          },
          "TranId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - system unique id for Dup Checking per Integration Source transaction (where integration source has DupCheckEnabled) that will be checked against successfully processed prior TranIds for Duplicates",
            "nullable": true
          },
          "EpfSessionId": {
            "type": "string",
            "description": "internal use - FrontStream unique Embedded Payment Form Session Id if available",
            "nullable": true
          },
          "Transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransTypeRequest"
            },
            "description": "required - 1 to n transactions to break down transaction line items"
          },
          "PaymentMethodTypeId": {
            "type": "string",
            "description": "optional - if used please set to 7 for ACH  or will be set internally",
            "nullable": true
          },
          "Tokenize": {
            "type": "boolean",
            "description": "optional - set to true to tokenize check at time of purchase",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentExportReportRequest": {
        "type": "object",
        "properties": {
          "Filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SelectedConstraintDto"
            },
            "description": "Report Filters",
            "nullable": true
          },
          "SortColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SortColumnDto"
            },
            "description": "Sort Columns",
            "nullable": true
          },
          "PageSize": {
            "type": "integer",
            "description": "How many records to return per page.",
            "format": "int32"
          },
          "PageIndex": {
            "type": "integer",
            "description": "Which page of results to return. Starts at 1 (0 will also return the first page)",
            "format": "int32"
          },
          "Format": {
            "type": "string",
            "description": "Determines which file type the report will be exported to. Valid values: \"csv\" or \"excel\"",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "PaymentMethodTypeEnum": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
        ],
        "type": "integer",
        "format": "int32"
      },
      "PaymentMethodTypeResponse": {
        "type": "object",
        "properties": {
          "PaymentMethodTypeId": {
            "$ref": "#/components/schemas/PaymentMethodTypeEnum"
          },
          "PaymentMethodTypeValue": {
            "type": "string",
            "description": "possible values :\r\n\"NONE\" = 0,\r\n\"AMEX\" = 1,\r\n\"MASTERCARD\" = 2,\r\n\"VISA\" = 3,\r\n\"DISCOVER\" = 4,\r\n\"DINERSCLUB\" = 5,\r\n\"JCB\" = 6,\r\n\"ACH\" = 7,\r\n\"GOOGLEPAY\" = 8,\r\n\"APPLEPAY\" = 9\r\n\"STRIPE\" = 10",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentReportRequest": {
        "type": "object",
        "properties": {
          "Filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SelectedConstraintDto"
            },
            "description": "Report Filters",
            "nullable": true
          },
          "SortColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SortColumnDto"
            },
            "description": "Sort Columns",
            "nullable": true
          },
          "PageSize": {
            "type": "integer",
            "description": "How many records to return per page.",
            "format": "int32"
          },
          "PageIndex": {
            "type": "integer",
            "description": "Which page of results to return. Starts at 1 (0 will also return the first page)",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "PaymentRequest": {
        "required": [
          "Email",
          "IpAddress",
          "NameOnCard",
          "Transactions"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "CardNum": {
            "maxLength": 30,
            "type": "string",
            "description": "optional - Valid Credit card number - required for non-Wallet transaction",
            "nullable": true
          },
          "CardType": {
            "maxLength": 20,
            "type": "string",
            "description": "optional (max: 20) - \"American Express\", \"Mastercard\", \"Visa\", \"Discover\", \"Diners Club\" - will be set internally based on cardNum",
            "nullable": true
          },
          "ExpMonth": {
            "maxLength": 2,
            "type": "string",
            "description": "optional (max: 2) - example: \"01\" for January - required for non-Wallet transaction",
            "nullable": true
          },
          "ExpYear": {
            "maxLength": 2,
            "type": "string",
            "description": "optional (max: 2) - example: \"29\" for 2029 - required for non-Wallet transaction",
            "nullable": true
          },
          "CVNum": {
            "maxLength": 4,
            "type": "string",
            "description": "optional (max: 4) - valid CVV - please provide for CVV checks",
            "nullable": true
          },
          "NameOnCard": {
            "maxLength": 25,
            "type": "string",
            "description": "required - Name on Card"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - please provide for best interchange and avs checks - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - please provide for best interchange and avs checks",
            "nullable": true
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "required - valid contact email",
            "format": "email"
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - please provide for best interchange and avs checks",
            "nullable": true
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional - 2 char US state code, 3 char may be used for other non-US",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "optional (max: 2) - 2 char country code",
            "nullable": true
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional (max: 3) - 3 char currency code - Example for US - \"USD\", for CA - \"CAD\"",
            "nullable": true
          },
          "ExternalConstituentId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - Donor Identifier per Product",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing First Name",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing Last Name",
            "nullable": true
          },
          "BillingDescriptor": {
            "maxLength": 22,
            "type": "string",
            "description": "optional (max: 22) - descriptor to show on bank statement",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "required - client ip address where transaction originates"
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Event Identifier per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "optional - Event Guid per Product",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional (max: 500) - Event Name per Product",
            "nullable": true
          },
          "ShippingFee": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - fee for shipping that will be added to the total amount",
            "nullable": true
          },
          "TaxableBenefit": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - If part of the donation being passed in is taxable, include that amount here. No calculations are performed using this value, it is simply a placeholder to be used for your own reporting; all commission and credit card fees still apply as normal.",
            "nullable": true
          },
          "TranId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - system unique id for Dup Checking per Integration Source transaction (where integration source has DupCheckEnabled) that will be checked against successfully processed prior TranIds for Duplicates",
            "nullable": true
          },
          "EpfSessionId": {
            "type": "string",
            "description": "internal use - FrontStream unique Embedded Payment Form Session Id if available",
            "nullable": true
          },
          "Transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransTypeRequest"
            },
            "description": "required - 1 to n transactions to break down transaction line items"
          },
          "AFShieldAdditional": {
            "$ref": "#/components/schemas/AFShieldPaymentRequest"
          },
          "PaymentMethodTypeId": {
            "type": "string",
            "description": "internal use - GooglePay (8) or Apple Pay (9) - possible values -\r\n        \"8\" - GOOGLEPAY,\r\n        \"9\" - APPLEPAY",
            "nullable": true
          },
          "ExternalPaymentData": {
            "maxLength": 5000,
            "type": "string",
            "description": "internal use for Wallet transactions",
            "nullable": true
          },
          "Surcharge": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - calculated surcharge amount that will be added to the total amount",
            "nullable": true
          },
          "Tokenize": {
            "type": "boolean",
            "description": "optional - set to true to tokenize card at time of purchase",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "PaymentResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "As one would guess, this is \"true\" if the transaction was processed successfully, and \"false\" if the transaction was not processed successfully."
          },
          "Message": {
            "type": "string",
            "description": "Payment Gateway response message",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "description": "Response from the processing bank.",
            "nullable": true
          },
          "AuthCode": {
            "type": "string",
            "description": "AuthCode from the processor.",
            "nullable": true
          },
          "TransactionId": {
            "type": "string",
            "description": "Payment Gateway TransactionId",
            "nullable": true
          },
          "PaymentGuid": {
            "type": "string",
            "description": "Payment API Payment GUID",
            "format": "uuid"
          },
          "PaymentId": {
            "type": "integer",
            "description": "Payment API Payment Id",
            "format": "int32"
          },
          "ResponseCode": {
            "type": "string",
            "description": "Response Code - Approved = 0, Not processed = -100 with more possible values - https://developers.frontstream.com/argofire/full-endpoint-reference-and-tools/general-info-and-utilities#argofire-response-codes",
            "nullable": true
          },
          "PaymentResult": {
            "$ref": "#/components/schemas/PaymentResult"
          },
          "ProcessStatus": {
            "$ref": "#/components/schemas/ProcessStatus"
          },
          "TotalAmount": {
            "type": "number",
            "description": "The total amount processed toward the cardholder's account.",
            "format": "double"
          },
          "TotalSurcharge": {
            "type": "number",
            "description": "The total surcharge amount if available.",
            "format": "double",
            "nullable": true
          },
          "AVSStreetStatus": {
            "type": "string",
            "description": "Address Verification Street Status if available.",
            "nullable": true
          },
          "AVSZipStatus": {
            "type": "string",
            "description": "Address Verification Zip Status if available.",
            "nullable": true
          },
          "AVSResponse": {
            "type": "string",
            "description": "Address Verification Response if available. AVS and CVV response values covered more here - https://developers.frontstream.com/argofire/full-endpoint-reference-and-tools/general-info-and-utilities#argofire-response-codes",
            "nullable": true
          },
          "CVVResponse": {
            "type": "string",
            "description": "Card Verification Response if available. AVS and CVV response values covered more here - https://developers.frontstream.com/argofire/full-endpoint-reference-and-tools/general-info-and-utilities#argofire-response-codes",
            "nullable": true
          },
          "ExternalCardToken": {
            "type": "string",
            "description": "ExternalCardToken if available to return - represents 3rd party gateway card token",
            "nullable": true
          },
          "ExternalCheckToken": {
            "type": "string",
            "description": "ExternalCheckToken if available to return - represents 3rd party gateway check token",
            "nullable": true
          },
          "ExternalCustomerId": {
            "type": "string",
            "description": "ExternalCustomerId if available to return - represents 3rd party gateway customer id tied to gateway token",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "Payment API Token GUID if available to return",
            "format": "uuid",
            "nullable": true
          },
          "TransactionFees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeResponse"
            },
            "description": "Fee Response",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use",
            "format": "uuid"
          },
          "ProcessorGuid": {
            "type": "string",
            "description": "ProcessorGuid used",
            "format": "uuid",
            "nullable": true
          },
          "FirstName": {
            "type": "string",
            "nullable": true
          },
          "LastName": {
            "type": "string",
            "nullable": true
          },
          "EmailAddress": {
            "type": "string",
            "nullable": true
          },
          "PostalCode": {
            "type": "string",
            "nullable": true
          },
          "AddressLine1": {
            "type": "string",
            "nullable": true
          },
          "City": {
            "type": "string",
            "nullable": true
          },
          "ProvinceCode": {
            "type": "string",
            "nullable": true
          },
          "CountryCode": {
            "type": "string",
            "nullable": true
          },
          "CardNum": {
            "type": "string",
            "description": "last 4 digits of card",
            "nullable": true
          },
          "CardType": {
            "type": "string",
            "description": "possible values if available: American Express, Mastercard, Visa, Discover, Diners Club, Undefined",
            "nullable": true
          },
          "ExpMonth": {
            "type": "string",
            "nullable": true
          },
          "ExpYear": {
            "type": "string",
            "nullable": true
          },
          "Currency": {
            "type": "string",
            "nullable": true
          },
          "PaymentMethodTypeId": {
            "type": "integer",
            "description": "possible values if available:\r\nNone = 0,\r\nAmericanExpress = 1,\r\nMasterCard = 2,\r\nVisa = 3,\r\nDiscover = 4,\r\nDinersClub = 5,\r\nACH = 7,\r\nGOOGLEPAY = 8,\r\nAPPLEPAY = 9",
            "format": "int32",
            "nullable": true
          },
          "IsSurchargeEligible": {
            "type": "boolean",
            "description": "Was card used Surcharge eligible",
            "nullable": true
          },
          "CheckAccountNum": {
            "type": "string",
            "description": "last 4 digits of check account",
            "nullable": true
          },
          "TranId": {
            "type": "string",
            "description": "unique tran id per Integration Source if available",
            "nullable": true
          },
          "EpfSessionId": {
            "type": "string",
            "description": "FrontStream unique Embedded Payment Form Session Id if available",
            "nullable": true
          },
          "PaymentDate": {
            "type": "string",
            "description": "Payment Date of transaction",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "See more response code definitions here: https://developers.frontstream.com/welcome-to-our-payment-api/api-references/test-payment-api-features/response-codes"
      },
      "PaymentResult": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "format": "int32"
      },
      "PaymentTokenRequest": {
        "required": [
          "Transactions"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "TokenGuid": {
            "type": "string",
            "description": "optional if using ExternalCardToken or ExternalCheckToken instead of TokenGuid - Valid Token Guid from a Tokenized card through Payment API",
            "nullable": true
          },
          "ExternalCardToken": {
            "maxLength": 200,
            "type": "string",
            "description": "internal use",
            "nullable": true
          },
          "ExternalCheckToken": {
            "maxLength": 200,
            "type": "string",
            "description": "internal use",
            "nullable": true
          },
          "TranId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - system unique id for Dup Checking per Integration Source transaction (where integration source has DupCheckEnabled) that will be checked against successfully processed prior TranIds for Duplicates",
            "nullable": true
          },
          "EpfSessionId": {
            "type": "string",
            "description": "internal use - FrontStream unique Embedded Payment Form Session Id if available",
            "nullable": true
          },
          "BillingDescriptor": {
            "maxLength": 22,
            "type": "string",
            "description": "optional (max: 22) - descriptor to show on bank statement",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "client ip address (max: 40) where transaction originates",
            "nullable": true
          },
          "ShippingFee": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - fee for shipping that will be added to the total amount",
            "nullable": true
          },
          "TaxableBenefit": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - If part of the donation being passed in is taxable, include that amount here. No calculations are performed using this value, it is simply a placeholder to be used for your own reporting; all commission and credit card fees still apply as normal.",
            "nullable": true
          },
          "Transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransTypeRequest"
            },
            "description": "required - 1 to n transactions to break down transaction line items"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) to override zip created during token creation - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) to override street created during token creation",
            "nullable": true
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) to override city created during token creation",
            "nullable": true
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) to override state created during token creation",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "optional (max: 2) to override country created during token creation",
            "nullable": true
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional (max: 3) to override currency created during token creation",
            "nullable": true
          },
          "ExternalConstituentId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - Donor Identifier per Product",
            "nullable": true
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - Event Identifier per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "optional - Event Guid per Product",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional (max: 500) - Event Name per Product",
            "nullable": true
          },
          "AFShieldAdditional": {
            "$ref": "#/components/schemas/AFShieldPaymentRequest"
          },
          "Surcharge": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - calculated surcharge amount",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "PaymentTransTypeRequest": {
        "required": [
          "Amount",
          "TransactionSourceGroupId"
        ],
        "type": "object",
        "properties": {
          "TransactionSourceGroupId": {
            "type": "string",
            "description": "required - For Direct Merchant (For Profit) Api Partners should set to PaymentNoFee (12), other values are for Non Profit transactions - possible values -\r\n        1 - Donation Fee,\r\n        2 - Peer-to-Peer Fee,\r\n        3 - Auction Performance Fee,\r\n        4 - Ticket Fee,\r\n        5 - Registration Fee,\r\n        6 - Quick Sales Fee,\r\n        7 - Online Store Fee,\r\n        8 - Campaign Fee,\r\n        9 - 0% Auction Performance Fee,\r\n        10 - ApiPartnerFee,\r\n        11 - ExpressPayrollFee;\r\n        12 - PaymentNoFee;\r\n        13 - EventDonationFee;\r\n        14 - SponsorshipFee\r\n        15 - MembershipFee"
          },
          "Amount": {
            "maxLength": 7,
            "type": "string",
            "description": "required - Amount of line item without the fees included, Payment api will calculate fees for you"
          },
          "PayFee": {
            "type": "boolean",
            "description": "optional - cover the fees flag for the transaction. Indicates if the donor intends to cover the processing fees for the donation (primary used for Non Profit transactions like a donation)"
          },
          "CommissionRateOverride": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - The percentage value that you want to set for your commission on the transaction. Minimum value that will be used is the FrontStream Commission Rate as set in your contract, maximum value is the maximum commission rate set in your contract. Passing values outside of the min/max range will not result in a validation error, but will instead default to the min/max value (i.e. if your maximum commission rate in your contract is 10%, and you pass \"15.0\" for this value, the Payment API will simply use 10%). Not including this field or passing null also defaults to using the maximum commission rate from your contract.",
            "nullable": true
          },
          "CardProcessingFeeOverride": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - Overrides the default percentage processing fee",
            "nullable": true
          },
          "ExternalLineId": {
            "maxLength": 100,
            "type": "string",
            "description": "optional (max: 100) - use this to track individual line item IDs if necessary.",
            "nullable": true
          },
          "Tip": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - An amount taken up front for the API Partner if Donor decides to apply a tip. Added to the total amount to charge on the donor’s card . Card fee calculations are performed using this value; all commission and credit card fees still apply as normal.",
            "nullable": true
          },
          "Tax": {
            "maxLength": 7,
            "type": "string",
            "description": "optional (max: 7) - A tax amount taken up front. Added to the total amount to charge on the donor’s card. Card fee calculations are performed using this value; all commission and credit card fees still apply as normal.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProcessStatus": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12
        ],
        "type": "integer",
        "format": "int32"
      },
      "RecurringProfileResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "For all success responses, this will be True."
          },
          "Message": {
            "type": "string",
            "description": "Recurring Profile response message",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "description": "Recurring Profile processor response message",
            "nullable": true
          },
          "TransactionId": {
            "type": "string",
            "description": "Not currently used and will be null",
            "nullable": true
          },
          "RecurringProfileGuid": {
            "type": "string",
            "description": "GUID that identifies this particular recurring billing contract. This value is used for both the Update Recurring Profile and Cancel Recurring Profile endpoints.",
            "format": "uuid"
          },
          "RecurringProfileId": {
            "type": "integer",
            "description": "An integer identifier for this particular recurring billing contract. Is not used elsewhere in the API.",
            "format": "int32"
          },
          "ResponseCode": {
            "type": "string",
            "description": "Response Code - Successful = \"OK\" or \"0\", any other response code unsuccessful",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "RefundRequest": {
        "required": [
          "Reason"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "PaymentGuid": {
            "type": "string",
            "description": "optional if not using PaymentExternalId - Payment API PaymentGuid to be refunded",
            "nullable": true
          },
          "PaymentExternalId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) if not using PaymentGuid - 3rd Party Payment External Id to be refunded",
            "nullable": true
          },
          "Reason": {
            "maxLength": 500,
            "type": "string",
            "description": "required - reason for refund request"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "RefundResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "\"true\" if the transaction was processed successfully, and \"false\" if the transaction was not processed successfully."
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "nullable": true
          },
          "TransactionId": {
            "type": "string",
            "nullable": true
          },
          "OriginalTransactionId": {
            "type": "string",
            "nullable": true
          },
          "PaymentGuid": {
            "type": "string",
            "format": "uuid"
          },
          "PaymentId": {
            "type": "integer",
            "format": "int32"
          },
          "ResponseCode": {
            "type": "string",
            "nullable": true
          },
          "PaymentResult": {
            "$ref": "#/components/schemas/PaymentResult"
          },
          "ProcessStatus": {
            "$ref": "#/components/schemas/ProcessStatus"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "SelectedConstraintDto": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Operation": {
            "$ref": "#/components/schemas/ConstraintOperation"
          },
          "Values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SortColumnDto": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Descending": {
            "type": "boolean"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SurchargeConfigResponse": {
        "type": "object",
        "properties": {
          "SurchargeEnabled": {
            "type": "boolean",
            "description": "Is Surcharging enabled - true/false returned based on configured Merchant Surcharge."
          },
          "SurchargeRate": {
            "type": "string",
            "description": "example 2.9900 in d.dddd format - configured Merchant Surcharge Percentage Rate.",
            "nullable": true
          },
          "SurchargeStartDate": {
            "type": "string",
            "description": "Surcharge Start Date based on configured Merchant Surcharge.\r\nDate Format - yyyy-MM-dd\r\nResponse Example:\r\n\"SurchargeStartDate\": \"2025-01-31\"",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SurchargeResponse": {
        "type": "object",
        "properties": {
          "Amount": {
            "type": "string",
            "description": "This is the original amount submitted for Surcharge calculation.",
            "nullable": true
          },
          "SurchargeAmount": {
            "type": "string",
            "description": "This is the calculated surcharge amount based on configured Merchant Surcharge Percentage Rate and submitted amount.\r\nd.dd format",
            "nullable": true
          },
          "SurchargeRate": {
            "type": "string",
            "description": "example 2.9900 in d.dddd format - configured Merchant Surcharge Percentage Rate.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionLinesDetail": {
        "type": "object",
        "properties": {
          "PaymentGuid": {
            "type": "string",
            "description": "Payment API Payment GUID for reference",
            "format": "uuid"
          },
          "PaymentLineId": {
            "type": "integer",
            "description": "Payment API Payment Line Identifier for reference",
            "format": "int32"
          },
          "PaymentId": {
            "type": "integer",
            "description": "Payment API Payment Identifier for reference",
            "format": "int32"
          },
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          },
          "ModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Amount": {
            "type": "number",
            "description": "Transaction Line Amount",
            "format": "double"
          },
          "CommissionAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "PayFee": {
            "type": "boolean",
            "description": "optional - cover the fees flag for the transaction. Indicates if the donor intended to cover the processing fees for the donation (primary used for Non Profit transactions like a donation)",
            "nullable": true
          },
          "TransactionSourceGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CardFeeRate": {
            "type": "number",
            "description": "example 2.5% - applied to EVERY donation. This is the FrontStream card processing fee. The percentage of the PaymentAmount that will be taken for credit card fees. Expressed as a human-readable percentage rather than a decimal value, it is intended to be able to be displayed directly on a page without needing to be converted.",
            "format": "double",
            "nullable": true
          },
          "CardFeeAmount": {
            "type": "number",
            "description": "This is the amount that is owed to the gateway for the example 2.5% that FrontStream collects from the transaction.\r\n 2.5% of transaction amount if donor is not paying the fee, otherwise 2.5% of the transaction + card fee.",
            "format": "double",
            "nullable": true
          },
          "CardTypeFeeAmount": {
            "type": "number",
            "description": "A per-transaction fee configured by card type (VI, MC, DI, AMEX, etc.) per API Partner's Contract other wise 0 (zero)",
            "format": "double",
            "nullable": true
          },
          "TotalCommissionRate": {
            "type": "number",
            "description": "The Total percentage of Commissions that FrontStream takes from a given transaction.\r\nThis rate = Partner CommissionRate + FS CommissionRate",
            "format": "double",
            "nullable": true
          },
          "TotalCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the Total commission rate.",
            "format": "double",
            "nullable": true
          },
          "PartnerCommissionRate": {
            "type": "number",
            "description": "The Partner Commission percentage taken on behalf of the Partner from a given transaction.",
            "format": "double",
            "nullable": true
          },
          "PartnerCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the Partner commission rate.",
            "format": "double",
            "nullable": true
          },
          "FsCommissionRate": {
            "type": "number",
            "description": "The FrontStream Commission percentage that FrontStream takes from a given transaction.",
            "format": "double",
            "nullable": true
          },
          "FsCommissionAmount": {
            "type": "number",
            "description": "The product of the transaction times the FrontStream commission rate.",
            "format": "double",
            "nullable": true
          },
          "TotalFees": {
            "type": "number",
            "description": "The sum of all fees applied to a transaction amount. (TotalCommission + CardFee + FlatFee + CardFeeOnFee)",
            "format": "double",
            "nullable": true
          },
          "PerTransFee": {
            "type": "number",
            "description": "The flat amount that will be taken from the PaymentAmount for any Per-Transaction Fees as configured in your contract.",
            "format": "double",
            "nullable": true
          },
          "ExternalLineId": {
            "type": "string",
            "description": "optional - used to track individual line item IDs if necessary.",
            "nullable": true
          },
          "Tip": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "CommissionRateOverride": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "Tax": {
            "type": "number",
            "description": "Transaction Line Tax",
            "format": "double",
            "nullable": true
          },
          "CardFeeOnFeeAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Transaction Line Details"
      },
      "TransactionReportDetail": {
        "type": "object",
        "properties": {
          "PaymentDate": {
            "type": "string",
            "description": "Payment Date of transaction",
            "format": "date-time"
          },
          "PaymentGuid": {
            "type": "string",
            "description": "Payment API Payment GUID",
            "format": "uuid"
          },
          "PaymentId": {
            "type": "integer",
            "description": "Payment API Payment Id",
            "format": "int32"
          },
          "PaymentExternalId": {
            "type": "string",
            "description": "Payment Gateway TransactionId - is the TransactionId of a Payment Response object",
            "nullable": true
          },
          "OriginalExternalID": {
            "type": "string",
            "description": "Original Payment Gateway TransactionId - is the Original TransactionId of a Payment Response object",
            "nullable": true
          },
          "ProcessStatus": {
            "$ref": "#/components/schemas/ProcessStatus"
          },
          "ProcessStatusValue": {
            "type": "string",
            "description": "Process Status value - possible values: NotProcessed = 1 \"Not Processed\", Authorized = 2 \"Awaiting Authorization\", Settled = 4 \"Authorized\", Rejected = 5 \"Rejected\", RefundRequired = 6 \"Refund Required\", AwaitingRefund = 7 \"Awaiting Refund\", Refunded = 8 \"Refunded\", Cancelled = 9 \"Cancelled\", Chargeback = 10 \"Chargeback\", RefundRejected = 11 \"Refund Rejected\"",
            "nullable": true
          },
          "PaymentResult": {
            "$ref": "#/components/schemas/PaymentResult"
          },
          "PaymentResultValue": {
            "type": "string",
            "description": "Payment Result value - possible values: \"Pending\" = 1, \"Processing\" = 2, \"Successful\" = 3, \"Failed\" = 4, \"Refunded\" = 5, \"Cancelled\" = 6",
            "nullable": true
          },
          "ExternalConstituentId": {
            "type": "string",
            "description": "Donor Identifier",
            "nullable": true
          },
          "FirstName": {
            "type": "string",
            "description": "billing First Name",
            "nullable": true
          },
          "LastName": {
            "type": "string",
            "description": "billing Last Name",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "description": "contact email",
            "nullable": true
          },
          "CardHolderName": {
            "type": "string",
            "description": "Name on Card",
            "nullable": true
          },
          "CCLastDigits": {
            "type": "string",
            "description": "if available - last 4 digits of card",
            "nullable": true
          },
          "ExpirationDate": {
            "type": "string",
            "description": "MM/YY format",
            "nullable": true
          },
          "CCType": {
            "type": "string",
            "description": "possible values if available: \"American Express\", \"Mastercard\", \"Visa\", \"Discover\", \"Diners Club\", Undefined",
            "nullable": true
          },
          "CoverTheFee": {
            "type": "string",
            "description": "YES/NO - did donor Cover the Fees on Donation.",
            "nullable": true
          },
          "DonationAmount": {
            "type": "number",
            "description": "The total donation amount requested.",
            "format": "double"
          },
          "CoverTheFeeAmount": {
            "type": "number",
            "description": "The total donation amount requested.",
            "format": "double"
          },
          "TransactionAmount": {
            "type": "number",
            "description": "The total transaction amount processed toward the cardholder's account.",
            "format": "double"
          },
          "ServiceFees": {
            "type": "number",
            "description": "The calculated total fees amount of the list of transaction lines.",
            "format": "double"
          },
          "AmountPaid": {
            "type": "number",
            "description": "The total transaction amount minus processing Fees",
            "format": "double"
          },
          "Taxes": {
            "type": "number",
            "description": "The calculated total tax amount of the list of transaction lines if any.",
            "format": "double"
          },
          "Recurring": {
            "type": "string",
            "description": "if available - YES/NO - if recurring billing contract used for transaction",
            "nullable": true
          },
          "RecurringFrequency": {
            "type": "string",
            "description": "if available - if recurring billing contract used for transaction\r\nPossible values:\r\n    \"Daily\", (once per day)\r\n    \"Weekly\", (once per week)\r\n    \"Bi-Weekly\", (once per 2 weeks)\r\n    \"Monthly\", (once per month)\r\n    \"Bi-Monthly\", (Once every 2 months)\r\n    \"Semi-Monthly\", (twice per month)\r\n    \"Quarterly\", (four times per year)\r\n    \"Semi-Annually\", (twice per year)\r\n    \"Annually\" (once per year)",
            "nullable": true
          },
          "RecurringProfileGuid": {
            "type": "string",
            "description": "if available - GUID that identifies the recurring billing contract used for transaction",
            "format": "uuid",
            "nullable": true
          },
          "NextBillDate": {
            "type": "string",
            "description": "if available - Next Billing date of the recurring billing contract used for transaction",
            "format": "date-time",
            "nullable": true
          },
          "DistributionType": {
            "$ref": "#/components/schemas/DistributionType"
          },
          "DistributionTypeValue": {
            "type": "string",
            "description": "if available for Non-Profit Charity data - Distribution Type value - possible values: \"Direct Deposit\" = 1, \"Check\" = 2. Indicates the payment method that was used to disburse the funds to the Charity.",
            "nullable": true
          },
          "DistributionStatus": {
            "type": "string",
            "description": "if available for Non-Profit Charity data - possible values: \"Processing\", \"Settled\", \"Refunded\", \"Voided\"",
            "nullable": true
          },
          "DistributionId": {
            "type": "integer",
            "description": "if available for Non-Profit Charity data - Unique identifier for the distribution.",
            "format": "int32",
            "nullable": true
          },
          "SourceGuid": {
            "type": "string",
            "description": "Source used",
            "format": "uuid"
          },
          "SourceName": {
            "type": "string",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "if available for Non-Profit Charity data - CharityId used",
            "nullable": true
          },
          "OrganizationName": {
            "type": "string",
            "description": "if available Non-Profit Charity data - Organization Name",
            "nullable": true
          },
          "Ein": {
            "type": "string",
            "description": "if available for Non-Profit Charity data - Charity EIN",
            "nullable": true
          },
          "ExternalEventId": {
            "type": "string",
            "description": "Event Identifier per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "Event Guid per Product",
            "format": "uuid"
          },
          "ExternalEventName": {
            "type": "string",
            "description": "Event Name per Product",
            "nullable": true
          },
          "TaxableBenefit": {
            "type": "number",
            "description": "optional - If part of the original donation transaction, amount passed in that was taxable. No calculations were performed using this value, it is simply a placeholder to be used for your own reporting;",
            "format": "double"
          },
          "TranId": {
            "type": "string",
            "description": "unique tran id per Integration Source if available",
            "nullable": true
          },
          "VoidRequestDate": {
            "type": "string",
            "description": "Date of Void Request if available",
            "format": "date-time",
            "nullable": true
          },
          "VoidReason": {
            "type": "string",
            "description": "Void Reason submitted if available",
            "nullable": true
          },
          "RefundRequestDate": {
            "type": "string",
            "description": "Date of Refund Request if available",
            "format": "date-time",
            "nullable": true
          },
          "RefundReason": {
            "type": "string",
            "description": "Refund Reason submitted if available",
            "nullable": true
          },
          "ProcessorId": {
            "type": "integer",
            "description": "ProcessorId used",
            "format": "int32",
            "nullable": true
          },
          "ProcessorGuid": {
            "type": "string",
            "description": "ProcessorGuid used",
            "format": "uuid",
            "nullable": true
          },
          "PaymentMethodTypeId": {
            "type": "integer",
            "description": "possible values if available:\r\nNONE = 0,\r\nAMEX = 1,\r\nMASTERCARD = 2,\r\nVISA = 3,\r\nDISCOVER = 4,\r\nDINERSCLUB = 5,\r\nACH = 7,\r\nGOOGLEPAY = 8,\r\nAPPLEPAY = 9",
            "format": "int32",
            "nullable": true
          },
          "PaymentMethodTypeIdValue": {
            "type": "string",
            "description": "\"NONE\" = 0,\r\n\"AMEX\" = 1,\r\n\"MASTERCARD\" = 2,\r\n\"VISA\" = 3,\r\n\"DISCOVER\" = 4,\r\n\"DINERSCLUB\" = 5,\r\n\"ACH\" = 7,\r\n\"GOOGLEPAY\" = 8,\r\n\"APPLEPAY\" = 9",
            "nullable": true
          },
          "Surcharge": {
            "type": "number",
            "description": "if available - The total surcharge amount.",
            "format": "double",
            "nullable": true
          },
          "IsSurchargeEligible": {
            "type": "boolean",
            "description": "if available - Was card used Surcharge eligible",
            "nullable": true
          },
          "CheckLastDigits": {
            "type": "string",
            "description": "if available - last 4 digits of check account used",
            "nullable": true
          },
          "CheckNumber": {
            "type": "string",
            "description": "if available - Valid Check Number used",
            "nullable": true
          },
          "CheckTypeId": {
            "type": "integer",
            "description": "if available for Check transactions - possible values -\r\n        1 = Personal,\r\n        2 = Corporate,\r\n        3 = Government",
            "format": "int32",
            "nullable": true
          },
          "CheckTypeIdValue": {
            "type": "string",
            "description": "if available for Check transactions - possible values -\r\n        \"Personal\" = 1,\r\n        \"Corporate\" = 2,\r\n        \"Government\" = 3",
            "nullable": true
          },
          "CheckAccountTypeId": {
            "type": "integer",
            "description": "if available for Check transactions - possible values -\r\n        1 = Checking,\r\n        2 = Savings",
            "format": "int32",
            "nullable": true
          },
          "CheckAccountTypeIdValue": {
            "type": "string",
            "description": "if available for Check transactions - possible values -\r\n        \"Checking\" = 1,\r\n        \"Savings\" = 2",
            "nullable": true
          },
          "EpfSessionId": {
            "type": "string",
            "description": "FrontStream unique Embedded Payment Form Session Id if available",
            "format": "uuid",
            "nullable": true
          },
          "TransactionLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionLinesDetail"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Transaction Report Details"
      },
      "TransactionReportDetailPagedResults": {
        "type": "object",
        "properties": {
          "CurrentPage": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "Results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionReportDetail"
            },
            "nullable": true
          },
          "TotalPages": {
            "type": "integer",
            "format": "int32"
          },
          "TotalRows": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UpdateRecurringProfileRequest": {
        "required": [
          "RecurringProfileGuid"
        ],
        "type": "object",
        "properties": {
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "RecurringProfileGuid": {
            "type": "string",
            "description": "required - Valid Recurring Profile Guid for update"
          },
          "Amount": {
            "maxLength": 7,
            "type": "string",
            "description": "optional if updating existing recurring profile - Amount to be charged per billing frequency",
            "nullable": true
          },
          "StartDate": {
            "type": "string",
            "description": "optional if updating existing recurring profile - format yyyy-MM-dd - start date of contract to update",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "optional if updating existing recurring profile - format yyyy-MM-dd - end date of contract (must be after StartDate) if you wish a contract to stop recurring at certain date",
            "nullable": true
          },
          "NextBillDate": {
            "type": "string",
            "description": "optional if updating existing recurring profile - format yyyy-MM-dd - The date when the first recurrence should begin charging the donor's card. Must be after StartDate.",
            "nullable": true
          },
          "BillingFrequency": {
            "type": "string",
            "description": "optional if updating existing recurring profile - How often the recurrence should occur. Possible values:\r\n    \"Daily\", (once per day)\r\n    \"Weekly\", (once per week)\r\n    \"Bi-Weekly\", (once per 2 weeks)\r\n    \"Monthly\", (once per month)\r\n    \"Bi-Monthly\", (Once every 2 months)\r\n    \"Semi-Monthly\", (twice per month)\r\n    \"Quarterly\", (four times per year)\r\n    \"Semi-Annually\", (twice per year)\r\n    \"Annually\" (once per year)",
            "nullable": true
          },
          "PreFeeAmount": {
            "maxLength": 7,
            "type": "string",
            "description": "optional if updating existing recurring profile - Pre Fee Amount with the fees not included if using fee (used for Non Profit transactions like a donation)",
            "nullable": true
          },
          "PayFee": {
            "type": "boolean",
            "description": "optional if updating existing recurring profile - cover the fees flag for the transaction (primary used for Non Profit transactions like a donation), if used see Amount and PreFeeAmount info",
            "nullable": true
          },
          "TransactionSourceGroupId": {
            "type": "string",
            "description": "optional if updating existing recurring profile - For Direct Merchant (For Profit) Api Partners should set to PaymentNoFee (12), other values are for Non Profit transactions - possible values -\r\n        1 - Donation Fee,\r\n        2 - Peer-to-Peer Fee,\r\n        3 - Auction Performance Fee,\r\n        4 - Ticket Fee,\r\n        5 - Registration Fee,\r\n        6 - Quick Sales Fee,\r\n        7 - Online Store Fee,\r\n        8 - Campaign Fee,\r\n        9 - 0% Auction Performance Fee,\r\n        10 - ApiPartnerFee,\r\n        11 - ExpressPayrollFee;\r\n        12 - PaymentNoFee;",
            "nullable": true
          },
          "ExternalEventId": {
            "maxLength": 10,
            "type": "string",
            "description": "optional - Event Id per Product",
            "nullable": true
          },
          "ExternalEventGuid": {
            "type": "string",
            "description": "optional - Event Guid per Product",
            "nullable": true
          },
          "ExternalEventName": {
            "maxLength": 500,
            "type": "string",
            "description": "optional - Event Name per Product",
            "nullable": true
          },
          "UseOriginalFees": {
            "type": "boolean",
            "description": "optional - if a Non Profit organization has changed fees then UseOriginalFee = false will update recurring profile to use updated organization fees. Primary used for Non Profit transactions.",
            "nullable": true
          },
          "CommissionRateOverride": {
            "type": "string",
            "description": "optional - update the percentage value that you want to set for your commission on the transaction. Minimum value that will be used is the FrontStream Commission Rate as set in your contract, maximum value is the maximum commission rate set in your contract. Passing values outside of the min/max range will not result in a validation error, but will instead default to the min/max value (i.e. if your maximum commission rate in your contract is 10%, and you pass \"15.0\" for this value, the Payment API will simply use 10%). Not including this field or passing null also defaults to using the maximum commission rate from your contract. Primary used for Non Profit transactions.",
            "nullable": true
          },
          "CardProcessingFeeOverride": {
            "type": "string",
            "description": "optional - update the CardProcessingFeeOverride that Overrides the default percentage processing fee. Primary used for Non Profit transactions.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "VerifyCardRequest": {
        "required": [
          "CardNum",
          "City",
          "Country",
          "Email",
          "ExpMonth",
          "ExpYear",
          "IpAddress",
          "NameOnCard",
          "Street"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "required if API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "CardNum": {
            "maxLength": 30,
            "type": "string",
            "description": "required - Valid Credit card number"
          },
          "ExpMonth": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "required - example: \"01\" for January"
          },
          "ExpYear": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "required - example: \"29\" for 2029"
          },
          "CVNum": {
            "maxLength": 4,
            "type": "string",
            "description": "optional (max: 4) - valid CVV - please provide for CVV checks",
            "nullable": true
          },
          "NameOnCard": {
            "maxLength": 25,
            "type": "string",
            "description": "required - Name on Card"
          },
          "Email": {
            "maxLength": 100,
            "type": "string",
            "description": "required - valid contact email",
            "format": "email"
          },
          "Zip": {
            "maxLength": 10,
            "type": "string",
            "description": "optional (max: 10) - please provide for best interchange and avs checks - US, CA, AU formats are validated (example formats - US: 12345 or 12345-1234, CA: A1A 1A1, AU: 3000",
            "nullable": true
          },
          "Street": {
            "maxLength": 50,
            "type": "string",
            "description": "required - please provide for best interchange and avs checks"
          },
          "City": {
            "maxLength": 50,
            "type": "string",
            "description": "required - please provide for best interchange and avs checks"
          },
          "State": {
            "maxLength": 50,
            "type": "string",
            "description": "optional - 2 char US state code, 3 char may be used for other non-US",
            "nullable": true
          },
          "Country": {
            "maxLength": 2,
            "type": "string",
            "description": "required - 2 char country code"
          },
          "FirstName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing First Name",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "type": "string",
            "description": "optional (max: 50) - billing Last Name",
            "nullable": true
          },
          "Currency": {
            "maxLength": 3,
            "type": "string",
            "description": "optional - 3 char currency code - Example for US - \"USD\", for CA - \"CAD\"",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 40,
            "type": "string",
            "description": "required - client ip address where transaction originates"
          },
          "AFShieldAdditional": {
            "$ref": "#/components/schemas/AFShieldPaymentRequest"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "VerifyCardResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "As one would guess, this is \"true\" if the transaction was processed successfully, and \"false\" if the transaction was not processed successfully."
          },
          "Message": {
            "type": "string",
            "description": "Payment Gateway response message",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "description": "Response from the processing bank.",
            "nullable": true
          },
          "ResponseCode": {
            "type": "string",
            "description": "Response Code - Approved = 0, Not processed = -100 with more possible values - https://developers.frontstream.com/argofire/full-endpoint-reference-and-tools/general-info-and-utilities#argofire-response-codes",
            "nullable": true
          },
          "AVSStreetStatus": {
            "type": "string",
            "description": "Address Verification Street Status",
            "nullable": true
          },
          "AVSZipStatus": {
            "type": "string",
            "description": "Address Verification Zip Status",
            "nullable": true
          },
          "AVSResponse": {
            "type": "string",
            "description": "Address Verification Response",
            "nullable": true
          },
          "CVVResponse": {
            "type": "string",
            "description": "Card Verification Response",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "VoidRequest": {
        "required": [
          "Reason"
        ],
        "type": "object",
        "properties": {
          "ProcessorGuid": {
            "type": "string",
            "description": "optional for Non-Profit transactions like donations but required if For-Profit API Partner - Identifies Processor being used by an API Partner",
            "nullable": true
          },
          "CharityId": {
            "type": "string",
            "description": "optional - Valid CharityId Guid from Charity Search",
            "nullable": true
          },
          "OrganizationGuid": {
            "type": "string",
            "description": "internal use - Valid Panorama Organization Guid",
            "nullable": true
          },
          "IntegrationSource": {
            "type": "string",
            "description": "internal use - Identifies integrated Product",
            "nullable": true
          },
          "PaymentGuid": {
            "type": "string",
            "description": "optional - if not using PaymentExternalId - Payment API PaymentGuid to be refunded",
            "nullable": true
          },
          "PaymentExternalId": {
            "maxLength": 200,
            "type": "string",
            "description": "optional (max: 200) - if not using PaymentGuid - 3rd Party Payment External Id to be refunded",
            "nullable": true
          },
          "Reason": {
            "maxLength": 500,
            "type": "string",
            "description": "required - reason for void request"
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "VoidResponse": {
        "type": "object",
        "properties": {
          "Successful": {
            "type": "boolean",
            "description": "\"true\" if the transaction was processed successfully, and \"false\" if the transaction was not processed successfully."
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "ProcessorMessage": {
            "type": "string",
            "nullable": true
          },
          "TransactionId": {
            "type": "string",
            "nullable": true
          },
          "OriginalTransactionId": {
            "type": "string",
            "nullable": true
          },
          "PaymentGuid": {
            "type": "string",
            "format": "uuid"
          },
          "PaymentId": {
            "type": "integer",
            "format": "int32"
          },
          "ResponseCode": {
            "type": "string",
            "nullable": true
          },
          "PaymentResult": {
            "$ref": "#/components/schemas/PaymentResult"
          },
          "ProcessStatus": {
            "$ref": "#/components/schemas/ProcessStatus"
          }
        },
        "additionalProperties": false,
        "description": ""
      }
    }
  }
}