Help
RSS
API
Feed
Maltego
Contact
Domain > afcoagentautopay.epay3qa.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2023-12-16
104.18.9.187
(
ClassC
)
2026-02-14
104.18.8.187
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Sat, 14 Feb 2026 08:27:51 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Sat, 14 Feb 2026 09:27:51 GMTLocation: https://afcoagentautopay.epay3qa.com/X-Content-Type-Options: nosniffServer: cloudflareCF-RAY: 9cdb304c7da06e09-PDXalt-svc: h3:443; ma86400 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>cloudflare/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sat, 14 Feb 2026 08:27:51 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveCF-RAY: 9cdb304cde783d49-PDXCache-Control: public, no-store, max-age0Expires: Sat, 14 Feb 2026 08:27:51 GMTLast-Modified: Sat, 14 Feb 2026 08:27:51 GMTSet-Cookie: __RequestVerificationTokenUfPTB3WfSd-uJ06R9K878o-zAPXf943FLk74MBzeW8ZxECshrMBem0k-HvPYOpJAmW7r9DjsjWb4YpTuhlBCOMT0Qb0HpZbG--m5aBaSKRw1; path/; secure; HttpOnlySet-Cookie: __RequestVerificationTokenUfPTB3WfSd-uJ06R9K878o-zAPXf943FLk74MBzeW8ZxECshrMBem0k-HvPYOpJAmW7r9DjsjWb4YpTuhlBCOMT0Qb0HpZbG--m5aBaSKRw1; path/; secure; HttpOnly; SameSiteNoneSet-Cookie: ARRAffinity52cf3177c45208b6e292eb0063ab7e030a91cbaba1bbe4d3cbaeab661882c51e;Path/;HttpOnly;Secure;Domainafcoagentautopay.epay3qa.comSet-Cookie: ARRAffinitySameSite52cf3177c45208b6e292eb0063ab7e030a91cbaba1bbe4d3cbaeab661882c51e;Path/;HttpOnly;SameSiteNone;Secure;Domainafcoagentautopay.epay3qa.comVary: *Strict-Transport-Security: max-age15552000; includeSubDomainsContent-Security-Policy: base-uri self; default-src blob: self; style-src self unsafe-inline https://cdnjs.cloudflare.com ; img-src * self data:; font-src self https://cdnjs.cloudflare.com; frame-src self blob: https://www.google.com; script-src self unsafe-inline unsafe-eval https://cdnjs.cloudflare.com https://www.google.com https://www.gstatic.com ; connect-src self blob: data: https://www.google-analytics.com https://www.google.com https://api-js.mixpanel.com https://cdnjs.cloudflare.com https://webhooks.epay3qa.com ; frame-ancestors self ; report-uri /report-csp;X-AspNetMvc-Version: 5.2X-AspNet-Version: 4.0.30319Request-Context: appIdcid-v1:3a5f4981-be86-4baa-ad89-c451b2695a02X-Powered-By: ASP.NETcf-cache-status: DYNAMICX-Content-Type-Options: nosniffServer: cloudflarealt-svc: h3:443; ma86400 !doctype html>html langen>head> title>AFCO Agent AutoPay/title> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> meta namerobots contentnoindex> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u crossoriginanonymous referrerpolicyno-referrer> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.1/css/bootstrap-datepicker.min.css integritysha384-tjXFs19utvO5kQjuOnxU5SV8L6RjLx49IiF3vVtFx/Rl0L7hB2DuW/t5V1I3HjHq crossoriginanonymous referrerpolicyno-referrer> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css integritysha384-fJH2gz4kcHl6LNRYI7TauVxjt5r/u+NfM+XpXDSSyHTCS7PMUXXW0Qo677Xr+bok crossoriginanonymous referrerpolicyno-referrer> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js integritysha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.3.2/jquery-migrate.min.js integritysha384-K4DXq6cnbcH6WemsoQDwSmAF+6spEE5W/rGMfBulBdu61Dxlr33bmPKzUCSJmE4c crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js integritysha384-leGYpHE9Tc4N9OwRd98xg6YFpB9shlc/RkilpFi0ljr3QD4tFoFptZvgnnzzwG4Q crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js integritysha384-pPttEvTHTuUJ9L2kCoMnNqCRcaMPMVMsWVO+RLaaaYDmfSP5//dP6eKRusbPcqhZ crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery-placeholder/2.3.1/jquery.placeholder.min.js integritysha384-Wm06BQNAf5f7PCD5lGnOu7aCq5R0GyVzAyaD9MCL1F2cXwnhv0r82xcBk7127dyE crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-latest.min.js integritysha384-PA7LgTHoYGwvEy2evWvC3sNOQlmK/vfk//sStiSk3QK3fUDO8oN3VKvHgSPyVKqx crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js integritysha384-5iaafnDCmIZLLNfCHYJwy/FQZf6AXVLgSx8wPvUvkOOOFk7ODxEXwdfxgHW3dv4a crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js integritysha384-PtTRqvDhycIBU6x1wwIqnbDo8adeWIWP3AHmnrvccafo35E7oIvW7HPXn2YimvWu crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.7/jquery.iframe-transport.js integritysha384-KaIVpbxdDf/z0pnZKLWbvRJi1LjOz/iEtIkMUHrcU3INkVoI9q1A7qiJ2U/O5pk1 crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.7/jquery.fileupload.min.js integritysha384-bvyDIPIJ8KCj4ujHT8iXQCBrPp/vokYDjeAPXR8VpR58GelVdL4pCR+MEamZDnAm crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js integritysha384-aEDtD4n2FLrMdE9psop0SHdNyy/W9cBjH22rSRp+3wPHd62Y32uijc0H2eLmgaSn crossoriginanonymous>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.1/js/bootstrap-datepicker.min.js integritysha384-w48xMCwgWQu0zb3PvQI/rK5lfN6G+lSWu+qI4ukKZg3I5Xx3/VWA8IiaQ8O7tZur crossoriginanonymous>/script> script srchttps://www.google.com/recaptcha/api.js async defer>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js integritysha384-3hgmRzlUcHmQydKeUIr2tGXvJZs5gK6VZ+LVpzUkHtkRo2A8fuCMdfN3vw2h9DPJ crossoriginanonymous>/script> link relstylesheet typetext/css href/Home/Styles /> script typetext/javascript> $(document).ready(function () { $(input, textarea).placeholder(); }); /script> script typetext/javascript src/Scripts/script.js>/script> script typetext/javascript src/Scripts/pdf-viewer/embed.js>/script>/head>body> header> div classmain-wrapper container hidden-sm hidden-xs> div classuser-actions-top-bar navbar-right> ul classnav navbar-nav> li>a href/SignIn>Sign In/a>/li> li>a href/SignUp>Sign Up/a>/li> /ul> /div> /div>div classlogo-top-bar> a idlogo-link href/> h1 idlogo-placeholder>AFCO Agent AutoPay/h1> /a>/div> div classmain-wrapper container visible-sm visible-xs> div classuser-actions-top-bar mobile navbar-right> ul classnav navbar-nav> li>a href/SignIn>Sign In/a>/li> li>a href/SignUp>Sign Up/a>/li> /ul> /div> /div>div iderror-area classcol-md-12 alerts styledisplay:none> div classalert alert-warning fade in red-alert> button typebutton classclose data-hidealerts onclickhideErrorMessage();>span aria-hiddentrue>×/span>span classsr-only>Close/span>/button> strong>span iderror-message>/span>/strong> /div>/div>div idconfirmation-area classcol-md-12 alerts styledisplay:none> div classalert alert-warning fade in green-alert> button typebutton classclose data-hidealerts onclickhideConfirmationMessage();>span aria-hiddentrue>×/span>span classsr-only>Close/span>/button> strong>span idconfirmation-message>/span>/strong> /div>/div>/header>div classmain-wrapper container> div idwarning-area classcol-md-12 alerts data-bindvisible: duplicateWarningActive styledisplay:none> div classalert alert-warning fade in> button typebutton classclose data-hidealerts data-bindclick: hideDuplicateWarning>span aria-hiddentrue>×/span>span classsr-only>Close/span>/button> strong> span idwarning-message> A a data-bindattr: {href: duplicateTransactionReceiptUrl} target_blank relnoopener noreferrer>duplicate transaction/a> was recently submitted. To submit this payment anyways, please re-enter the payment information. If there are questions or concerns, please reach out to your insurance provider. /span> /strong> /div>/div>div classpage-title text-center> h1>Make a Payment/h1> p>Please enter your payment information below/p>/div>form action/ enctypemultipart/form-data idpayment-form methodpost sessionId>input data-valtrue data-val-requiredThe MakeFieldsReadonly field is required. idMakeFieldsReadonly nameMakeFieldsReadonly typehidden valueFalse /> div classrow> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label forpayer>Payer/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span classfield-validation-valid data-valmsg-forPayer data-valmsg-replacetrue>/span> input classform-control data-bindvalue: payer data-valtrue data-val-maxlengthThe Payer has a maximum length of 150 characters. data-val-maxlength-max150 data-val-requiredThe Payer field is required. idPayer namePayer placeholderPayer required typetext value /> /div> /div> /div> div classcol-sm-12> div classform-group email> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label foremail>Email Address/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span classfield-validation-valid data-valmsg-forEmailAddress data-valmsg-replacetrue>/span> input classform-control data-bindvalue: emailAddress data-valtrue data-val-emailThe Email Address is not properly formatted data-val-maxlengthThe field Email Address must be a string or array type with a maximum length of '150'. data-val-maxlength-max150 data-val-requiredThe Email Address field is required. idEmailAddress nameEmailAddress placeholderEmail Address required typetext value /> /div> /div> /div> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Account Number/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span classfield-validation-error transaction-attribute-regex-error-msg styledisplay:none data-valmsg-forTransactionAttribute10808 data-valmsg-replacetrue>/span> span classfield-validation-error styledisplay:none data-valmsg-forTransactionAttribute10808 data-valmsg-replacetrue>The Account Number field is required./span>input NameTransactionAttribute10808 classform-control full data-bindtextInput: TransactionAttribute10808 data-togglepopover data-triggermanual focus idTransactionAttribute10808 nameTransactionAttributes0.Value onBlurvalidateCustomAttribute(event) pattern(.*?) placeholderAccount Number required typetext value /> /div> /div> /div> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Zip Code/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span classfield-validation-error transaction-attribute-regex-error-msg styledisplay:none data-valmsg-forTransactionAttribute10809 data-valmsg-replacetrue>/span> span classfield-validation-error styledisplay:none data-valmsg-forTransactionAttribute10809 data-valmsg-replacetrue>The Zip Code field is required./span>input NameTransactionAttribute10809 classform-control full data-bindtextInput: TransactionAttribute10809 data-togglepopover data-triggermanual focus idTransactionAttribute10809 nameTransactionAttributes1.Value onBlurvalidateCustomAttribute(event) pattern(.*?) placeholderZip Code required typetext value /> /div> /div> /div> /div> div classrow idinvoices> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Invoices/label> /div> div classcol-lg-9 col-md-9 col-sm-9 col-xs-12 right> div data-bindvisible: AreAnyAttributeValuesEmptyOrInvalid()> label>Please fill in the fields above correctly to view your open invoices./label> /div> div styledisplay:none data-bindvisible: !AreAnyAttributeValuesEmptyOrInvalid() && invoiceSearches() > 0 idsearching-invoices> i classfas fa-spinner fa-spin>/i> label>Searching for open invoices.../label> /div> div styledisplay:none data-bindvisible: invoiceSearches() 0 && !invoiceSearchFailed() && !AreAnyAttributeValuesEmptyOrInvalid() && fullInvoiceList().length 0 && invoices().length 0 idsearching-invoices> label>No invoices were foundspan data-bindvisible: hasAccount() && invoicesPayerName(), text: for + invoicesPayerName()>/span>./label> /div> div styledisplay:none data-bindvisible: !invoiceSearchFailed() && isFilteringAllInvoices()> label>No results found. Please adjust your search criteria./label> /div> div styledisplay:none data-bindvisible: invoiceSearches() 0 && invoices().length > 0 && invoicesPayerName() && hasAccount()> label>Displaying invoices for span data-bindtext: invoicesPayerName>/span>/label> /div> div styledisplay:none data-bindvisible: invoiceSearchFailed() && !AreAnyAttributeValuesEmptyOrInvalid() && invoiceSearches() 0 && fullInvoiceList().length 0 && invoices().length 0 idsearching-invoices> label data-bindtext: invoiceSearchResponseStatusCode() ! 429 ? Unable to retrieve invoices. : Requests have exceeded maximum allowed. Please try again in a moment.>/label> /div> !--ko if:model.enableAutopay--> div classautopay-options-block> div classdisable-option idautopay-disable-option styledisplay:none data-bindvisible: invoiceSearches() 0 && autoPaySubscriptionId() ! null && hasAccount()> p>AutoPay is currently enabled./p> a classdisable-btn data-bindvisible: autoPayCancelable(), click: CancelAutoPaySubscription>Disable/a> div classlearn-more>a href# data-bindclick: openAutopayModal>Learn more/a>/div> /div> /div> !--/ko--> div data-bindvisible: fullInvoiceList().length > 10> input typetext idinvoice-search nameinvoice-search classform-control placeholderSearch Invoices data-bindtextInput: invoiceSearchText /> /div> div classinvoice-list-wrapper data-bindvisible: invoiceSearches() 0 && fullInvoiceList().length > 0 styledisplay:none;> table classtable table-header> thead> tr> th>Invoice i classinvoiceSort fas data-bindcss: { fa-sort: (currentSort() ! Id && currentSort() ! DescendingId), fa-sort-down: (currentSort() DescendingId), fa-sort-up: (currentSort() Id)}, click: function(){sortInvoices(Id)}>/i>/th> th>Name i classinvoiceSort fas data-bindcss: { fa-sort: (currentSort() ! Name && currentSort() ! DescendingName), fa-sort-down: (currentSort() DescendingName), fa-sort-up: (currentSort() Name)}, click: function(){sortInvoices(Name)}>/i>/th> th>Due Date i classinvoiceSort fas data-bindcss: { fa-sort: (currentSort() ! DueDate && currentSort() ! DescendingDueDate), fa-sort-down: (currentSort() DescendingDueDate), fa-sort-up: (currentSort() DueDate)}, click: function(){sortInvoices(DueDate)}>/i>/th> th>Amount i classinvoiceSort fas data-bindcss: { fa-sort: (currentSort() ! Amount && currentSort() ! DescendingAmount), fa-sort-down: (currentSort() DescendingAmount), fa-sort-up: (currentSort() Amount)}, click: function(){sortInvoices(Amount)}>/i>/th> th> button typebutton classbtn btn-primary btn-block add-all-invoices-btn idinvoices-add-all data-bindclick: addAll, style: { background: addAllClicked() ? red : }, text: addAllText, visible: invoices().length > 0>/button> /th> /tr> /thead> /table> div> div classinvoices-list data-bindcss: { invoices-scrollable: invoices().length > 10 }> table classtable table-body> tbody data-bindforeach: invoices> !--ko if:LastPaidDate!null--> tr classwarning> td colspan5>a target_blank relnoopener noreferrer data-bindattr: { href:/receipts/ + PublicId + ?viewingModeweb}, text: This invoice was paid on: + LastPaidDateString>/a>/td> /tr> !--/ko--> tr classinvoice-row-header data-bindvisible: IsFinancingEligible, css: { warning: LastPaidDate }> td classfinance-message-td> div classfinance-message-div> span data-bindtext: financeQuoteText()>/span> /div> /td> td> button classbtn btn-primary btn-block typebutton data-bindvisible: FinanceDownPayment() 0, enable: isEnableFinanceButton(), click: $parent.refreshFinanceDownPayment>Finance/button> div classinput-group data-bindvisible: FinanceDownPayment() ! 0> input typetext classform-control data-bindnumeric, value: FinanceDownPayment(), visible: FinanceDownPayment() ! 0 && $parent.isAgreementValid() && isInvoiceFinanced(), attr: { id: FieldId + -financedDownAmt, name: FieldId + -financedDownAmt, readonly: true } /> input typetext classform-control readonlyreadonly valuePending data-bindvisible: !$parent.isAgreementValid() && isInvoiceFinanced() /> span classinput-group-btn> button classbtn btn-dark removed-invoice-btn typebutton data-bindvisible: FinanceDownPayment() ! 0, click: $parent.clickRemoveFinanced>X/button> /span> /div> /td> /tr> tr classinvoice-row-header data-bindcss: { warning: LastPaidDate }> td data-bindtext: Id, css: { pastDue: PastDue }>/td> td data-bindtext: Name, css: { pastDue: PastDue }>/td> td data-bindtext: DueDateString, css: { pastDue: PastDue }>/td> td data-bindcss: { pastDue: PastDue }> span data-bindtext: formatAmount(Amount, USD)>/span> span data-bindvisible: Amount ! null && Amount 0 classamount-due-header> credit/span> /td> td> button classbtn btn-primary btn-block typebutton data-bindvisible: PaidAmount() 0, enable: FinanceDownPayment() 0, click: $parent.refreshPaidAmount, text: $parent.anyFinancingEligible() ? Pay Now : + Add>/button> div classinput-group data-bindvisible: PaidAmount() ! 0> input typetext classform-control data-bindnumeric, value: PaidAmount, visible: PaidAmount() ! 0, attr: { id: FieldId + -paidAmount, name: FieldId + -paidAmount, readonly: !AllowPartialPayment }, click: $parent.clickInvoice /> span classinput-group-btn> button classbtn btn-dark removed-invoice-btn typebutton data-bindvisible: PaidAmount() ! 0, click: $parent.clickRemoveInvoice>X/button> /span> /div> input typehidden data-bindvalue: Id, attr: { id: FieldId + -id, name: FieldId + -id} /> input typehidden data-bindvalue: DataToken(), attr: { id: FieldId + -dataToken, name: FieldId + -dataToken} /> input typehidden data-bindvalue: DivisionId, attr: { id: FieldId + -divisionId, name: FieldId + -divisionId} /> input typehidden data-bindvalue: Name, attr: { id: FieldId + -name, name: FieldId + -name} /> input typehidden data-bindvalue: Amount, attr: { id: FieldId + -fullAmount, name: FieldId + -fullAmount} /> input typehidden data-bindvalue: (PaidAmount() 0 && FinanceDownPayment() 0) ? : Verification(), attr: { id: FieldId + -verification, name: FieldId + -verification} /> input typehidden data-bindvalue: FinanceEligibilityHash(), attr: { id: FieldId + -financeEligibilityHash, name: FieldId + -financeEligibilityHash} /> /td> /tr> tr classinvoice-row-details data-bindcss: { warning: LastPaidDate }> td colspan6> div classaccordion-invoice-details> div classcol-sm-6 data-bindforeach: AttributeValues> !--ko if:$index()%20 && Name ! null--> div classdetail-row clearfix> div classtitle data-bindtext: Name + :, visible: Value ! null>/div> div classinfo data-bindtext: Value>/div> /div> !--/ko--> /div> div classcol-sm-6 data-bindforeach: AttributeValues> !--ko if:$index()%2>0 && Name ! null--> div classdetail-row clearfix> div classtitle data-bindtext: Name + :, visible: Value ! null>/div> div classinfo data-bindtext: Value>/div> /div> !--/ko--> /div> div data-bindvisible: (Amount null || (PaidAmount() ! Amount && PaidAmount() ! MaximumAmount)) && PaidAmount() > 0 classrow pt-0 styledisplay:none;> div classcol-sm-12> div classdetail-row clearfix> !--ko if:Amount!null--> div classbtn-group> button typebutton data-bindattr: { id: FieldId + -commentReasonFinancingButton }, event: { click: function () { CommentReason(Financing); return false; } }, css: { active : CommentReason() Financing } classglow normal>Financing/button> button typebutton data-bindattr: { id: FieldId + -commentReasonIncorrectInvoiceAmtButton }, event: { click: function () { CommentReason(Incorrect Invoice Amount); return false; } }, css: { active : CommentReason() Incorrect Invoice Amount } classglow normal>Incorrect Invoice Amount/button> button typebutton data-bindattr: { id: FieldId + -commentReasonOtherButton }, event: { click: function () { CommentReason(Other); return false; } }, css: { active : CommentReason() Other } classglow normal>Other/button> /div> input typehidden data-bindvalue: CommentReason, attr: { id: FieldId + -commentReason, name: FieldId + -commentReason} /> !--/ko--> textarea data-bindvalue: Comment, attr: { id: FieldId + -comment, name: FieldId + -comment, placeholder: CommentPlaceholder, required: (((Amount null || (PaidAmount() ! Amount && PaidAmount() ! MaximumAmount)) && PaidAmount() > 0) ? required: null) } cols30 rows10>/textarea> /div> /div> /div> /div> /td> /tr> /tbody> /table> /div> /div> /div> /div> /div> /div> /div>div classrow styledisplay: none; data-bindvisible: model.invoices().some(i > i.FinanceDownPayment() > 0)> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Premium Finance Agreement/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span idshow-pfa-text classpfa-supporting-text data-bindvisible: !isAgreementValid(), style: {color: showInvalidAgreementMessage() ? red : }>i classfas fa-exclamation-circle pfa-invalid-exclamation>/i> Please go through the b>Premium Finance Agreement/b> before going ahead./span> div> button typebutton classbtn btn-primary pfa-btn idshow-pfa data-bindclick: showAgreement, class: pfaBtnStatus > span>View Premium Finance Agreement & Sign/span> span data-bindvisible: agreementButtonCheckDisplay() idpfa-check-display> i classfas fa-check-circle pfa-valid-check>/i> /span> /button> span data-bindvisible: premiumFinanceAgreementLoading() idloading-pfa> i classfas fa-spinner fa-spin>/i> label classpfa-supporting-text>Loading Premium Finance Agreement.../label> /span> /div> div classcol-lg-5 col-md-5 col-sm-5 left pfa-supporting-text text-danger data-bindvisible: premiumFinanceAgreementErrored()> span>Something has gone wrong when trying to retrieve your premium finance agreement. Please click the button to retry or pay your financed invoice in full./span> /div> /div> /div> /div>/div> div classmodal fade idtermsAndConditionsModalDialog tabindex-1 roledialog aria-hiddentrue styledisplay: none;> div classmodal-dialog max-size-modal> div classmodal-content> div classmodal-header> button typebutton classclose data-dismissmodal , aria-hiddentrue>×/button> h4 classmodel-title>Terms & Conditions/h4> /div> div classmodal-body> span class data-bindtext: autoPayTermsAndConditions()>/span> /div> div classmodal-footer> button typebutton classbtn btn-default data-dismissmodal>OK/button> /div> /div>!-- /.modal-content --> /div>!-- /.modal-dialog --> /div> div classrow styledisplay: none; data-bindvisible: showAgreementFinancialBreakdown()> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Financial Breakdown/label> div classbreakdown-payment-financing-logo> div> img height85% width85% data-bindattr:{src: premiumFinanceCompanyLogoUri, alt: premiumFinanceAgreementCompanyName} idpfc-logo /> /div> Financial Plan Provided by span data-bindtext: premiumFinanceAgreementCompanyName>/span> /div> /div> div classcol-lg-9 col-md-9 col-sm-9 right> div classbreakdown-wrapper> table> thead classbreakdown-header> tr> th classbreakdown-th>Down Payment Amount/th> th classbreakdown-th>Installment Amount/th> th classbreakdown-th>Number of Payments/th> th classbreakdown-th>Next Installment Due Date/th> /tr> /thead> tbody> tr> td classbreakdown-td data-celldown payment amount>span data-bindtext: formatAmount(totalDownPaymentAmount(), USD)>/span>/td> td classbreakdown-td data-cellinstallment amount> div> div> span classbreakdown-installment-fee data-bindtext: formatAmount(installmentAmount(), USD)>/span> /div> span classbreakdown-installment-autopay-fee data-bindvisible: premiumFinanceAgreementAutoPay()>+ additional fee/span> /div> /td> td classbreakdown-td data-cellnumber of payments>span data-bindtext: financeNumberOfPayments() + ( + financePaymentFrequency() + )>/span>/td> td classbreakdown-td data-cellnext installment due date>span data-bindtext: nextInstallmentDueDate()>/span>/td> /tr> /tbody> /table> /div> div classbreakdown-payment-message data-bindvisible: premiumFinanceAgreementAutoPay()> span data-bindtext: *Estimated additional autopay fee for ACH of + formatAmount(autoPayAchFee(), USD) + or Credit Card of + formatAmount(autoPayCreditCardFee(), USD) + assessed by ePayPolicy.>/span> /div> div classbreakdown-payment-message checkbox data-bindvisible: allowFinanceAutoPay()> input typecheckbox nameEnableFinancingAutoPay idEnableFinancingAutoPay data-bindchecked: premiumFinanceAgreementAutoPay, value: premiumFinanceAgreementAutoPay> label forEnableFinancingAutoPay>span idpfcName data-bindtext: autoPayDisclaimerText()>/span>/label> /div> div classterms-and-conditions data-bindvisible: showAutoPayTermsAndConditionsLink()>a href# data-bindclick: showTermsAndConditionsModal>Terms & Conditions/a>/div> /div> /div> /div> /div> div classpayment-amount row> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label foramount>Total of Selected Invoices/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> span classfield-validation-valid data-valmsg-forAmount data-valmsg-replacetrue>/span>input classform-control data-bindvalue: formatAmount(amount(), 'USD') idFormattedAmount nameFormattedAmount typetext value />input data-bindnumeric, value: amount data-valtrue data-val-numberThe field Amount must be a number. data-val-rangeThe Amount must be greater than 0. data-val-range-max9999999.99 data-val-range-min0.01 data-val-requiredThe Amount field is required. idAmount nameAmount required typehidden value /> /div> /div> /div> /div> !-- Payment Type --> div classrow payment-type> div classcol-sm-12> div classform-group clearfix> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label forpayment-type>Payment Type/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right clearfix> !-- Desktop/Tablet payment options --> div classlarge-device> label forpaymentType classpayment-ui-card clearfix> input typeradio classform-control payment-radio namepaymentType data-bindclick: function() {setPaymentType(CreditCard); return true;}, value: CreditCard, checked: paymentMethod> div classpayment-ui-card-wrapper> div classui-card-header > img src/images/credit-card-icon.png classimg-responsive altcredit-card-icon> h3 classtext-center>Credit Card/h3> /div> div classui-card-details> div classui-card-row> span classrow-label>Amount/span> span classinfo data-bindtext: formatAmount(amount(), USD)>/span> /div> div classui-card-row fees> span classrow-label> Fee /span> span classinfo data-bindtext: amount() > 0 ? formatAmount(payerCreditCardFee(), USD) : Add Invoices>/span> /div> div classui-card-row totals> span classrow-label data-bindtext: enableScheduledPayments() ? Each Payment : Total>/span> span classinfo data-bindtext: formatAmount(amount() > 0 ? creditCardTotal() : 0, USD)>/span> /div> div data-bindvisible:enableScheduledPayments> div classui-card-row data-bindvisible: startDate() ! null> span classrow-label>Starts/span> span classinfo data-bindtext: startDate() ! ? startDate : Immediately>/span> /div> div classui-card-row data-bindvisible: numberOfPayments() > 0 && scheduledPaymentsEndOption() NumberOfPayments> span classrow-label>Total Payments/span> span classinfo data-bindtext: numberOfPayments>/span> /div> div classui-card-row data-bindvisible: endDate() ! && scheduledPaymentsEndOption() EndDate> span classrow-label>Ends On or Before/span> span classinfo data-bindtext: endDate>/span> /div> div classui-card-row data-bindvisible: scheduledPaymentsEndOption() Never> span classrow-label>Ends/span> span classinfo>When Cancelled/span> /div> div classui-card-row data-bindvisible: intervalCount() > 0> span classrow-label>Frequency/span> span classinfo>Every span data-bindtext: intervalCount>/span> span data-bindtext: intervalDescription>/span>/span> /div> /div> /div> div classradio-button> span>/span> /div> /div> /label> label forpaymentType classpayment-ui-card clearfix> input typeradio classform-control payment-radio namepaymentType data-bindclick: function() {setPaymentType(Ach); return true;}, value: Ach, checked: paymentMethod> div classpayment-ui-card-wrapper> div classui-card-header > img src/images/echeck-icon.png classimg-responsive altcredit-card-icon> h3 classtext-center>ACH/h3> /div> div classui-card-details> div classui-card-row> span classrow-label>Amount/span> span classinfo data-bindtext: formatAmount(amount(), USD)>/span> /div> div classui-card-row fees> span classrow-label>Fee/span> span classinfo data-bindtext: amount() > 0 ? formatAmount(payerAchFee(), USD) : Add Invoices>/span> /div> div classui-card-row totals> span classrow-label data-bindtext: enableScheduledPayments() ? Each Payment : Total>/span> span classinfo data-bindtext: formatAmount(amount() > 0 ? achTotal() : 0, USD)>/span> /div> div data-bindvisible:enableScheduledPayments> div classui-card-row data-bindvisible: startDate() ! null> span classrow-label>Starts/span> span classinfo data-bindtext: startDate() ! ? startDate : Immediately>/span> /div> div classui-card-row data-bindvisible: numberOfPayments() > 0 && scheduledPaymentsEndOption() NumberOfPayments> span classrow-label>Total Payments/span> span classinfo data-bindtext: numberOfPayments>/span> /div> div classui-card-row data-bindvisible: endDate() ! && scheduledPaymentsEndOption() EndDate> span classrow-label>Ends On or Before/span> span classinfo data-bindtext: endDate>/span> /div> div classui-card-row data-bindvisible: scheduledPaymentsEndOption() Never> span classrow-label>Ends/span> span classinfo>When Cancelled/span> /div> div classui-card-row data-bindvisible: intervalCount() > 0> span classrow-label>Frequency/span> span classinfo>Every span data-bindtext: intervalCount>/span> span data-bindtext: intervalDescription>/span>/span> /div> /div> /div> div classradio-button> span>/span> /div> /div> /label> /div> !-- Mobile payment options --> div classsmall-device> div classoptions-row clearfix> label formobilePaymentType classpayment-ui-card clearfix> input typeradio classform-control payment-radio namemobilePaymentType data-bindclick: function() {setPaymentType(CreditCard); return true;}, value: CreditCard, checked: paymentMethod> div classradio-button> span>/span> /div> div classui-card-header> img src/images/credit-card-icon.png classimg-responsive altcredit-card-icon> h3 classtext-center>Credit Card/h3> /div> /label> label formobilePaymentType classpayment-ui-card clearfix> input typeradio classform-control payment-radio namemobilePaymentType data-bindclick: function() {setPaymentType(Ach); return true;}, value: Ach, checked: paymentMethod> div classradio-button> span>/span> /div> div classui-card-header> img src/images/echeck-icon.png classimg-responsive altach-icon> h3 classtext-center>ACH/h3> /div> /label> /div> div classpayment-ui-card-wrapper left-tab data-bindvisible: paymentMethod() CreditCard> div classui-card-details> div classui-card-row> span classrow-label>Amount/span> span classinfo data-bindtext: formatAmount(amount(), USD)>/span> /div> div classui-card-row fees> span classrow-label>Fee/span> span classinfo data-bindtext: amount() > 0 ? formatAmount(payerCreditCardFee(), USD) : Add Invoices>/span> /div> div classui-card-row totals> span classrow-label data-bindtext: enableScheduledPayments() ? Each Payment : Total>/span> span classinfo data-bindtext: formatAmount(amount() > 0 ? creditCardTotal() : 0, USD)>/span> /div> div data-bindvisible:enableScheduledPayments> div classui-card-row data-bindvisible: startDate() ! null> span classrow-label>Starts/span> span classinfo data-bindtext: startDate() ! ? startDate : Immediately>/span> /div> div classui-card-row data-bindvisible: numberOfPayments() > 0 && scheduledPaymentsEndOption() NumberOfPayments> span classrow-label>Total Payments/span> span classinfo data-bindtext: numberOfPayments>/span> /div> div classui-card-row data-bindvisible: endDate() ! && scheduledPaymentsEndOption() EndDate> span classrow-label>Ends On or Before/span> span classinfo data-bindtext: endDate>/span> /div> div classui-card-row data-bindvisible: scheduledPaymentsEndOption() Never> span classrow-label>Ends/span> span classinfo>When Cancelled/span> /div> div classui-card-row data-bindvisible: intervalCount() > 0> span classrow-label>Frequency/span> span classinfo>Every span data-bindtext: intervalCount>/span> span data-bindtext: intervalDescription>/span>/span> /div> /div> /div> /div> div classpayment-ui-card-wrapper right-tab data-bindvisible: paymentMethod() Ach> div classui-card-details> div classui-card-row> span classrow-label>Amount/span> span classinfo data-bindtext: formatAmount(amount(), USD)>/span> /div> div classui-card-row fees> span classrow-label> Fee /span> span classinfo data-bindtext: amount() > 0 ? formatAmount(payerAchFee(), USD) : Add Invoices>/span> /div> div classui-card-row totals> span classrow-label data-bindtext: enableScheduledPayments() ? Each Payment : Total>/span> span classinfo data-bindtext: formatAmount(amount() > 0 ? achTotal() : 0, USD)>/span> /div> div data-bindvisible:enableScheduledPayments> div classui-card-row data-bindvisible: startDate() ! null> span classrow-label>Starts/span> span classinfo data-bindtext: startDate() ! ? startDate : Immediately>/span> /div> div classui-card-row data-bindvisible: numberOfPayments() > 0 && scheduledPaymentsEndOption() NumberOfPayments> span classrow-label>Total Payments/span> span classinfo data-bindtext: numberOfPayments>/span> /div> div classui-card-row data-bindvisible: endDate() ! && scheduledPaymentsEndOption() EndDate> span classrow-label>Ends On or Before/span> span classinfo data-bindtext: endDate>/span> /div> div classui-card-row data-bindvisible: scheduledPaymentsEndOption() Never> span classrow-label>Ends/span> span classinfo>When Cancelled/span> /div> div classui-card-row data-bindvisible: intervalCount() > 0> span classrow-label>Frequency/span> span classinfo>Every span data-bindtext: intervalCount>/span> span data-bindtext: intervalDescription>/span>/span> /div> /div> /div> /div> /div> /div> /div> /div> /div> !-- Payment Type section ends--> div classpayment-info row> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label forpayment-info>Payment Information/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right data-bindvisible: paymentMethod() CreditCard> div classform-group> div data-bindvisible: tokenPublicId() newCreditCard || creditCardTokenCount() 0 || true styledisplay:none;> div classrow> div classcol-lg-12> span classfield-validation-valid data-valmsg-forCardAccountHolder data-valmsg-replacetrue>/span> input autocompleteoff classform-control data-valtrue data-val-maxlengthThe Name on Card has a maximum length of 40 characters. data-val-maxlength-max40 idCardAccountHolder nameCardAccountHolder placeholderName on Card typetext value /> /div> /div> div classrow> div classcol-lg-12> span classfield-validation-valid data-valmsg-forCardNumber data-valmsg-replacetrue>/span> span classccInput> input autocompleteoff classform-control data-bindtextInput: cardNumber data-valtrue data-val-maxlengthThe Card Number has a maximum length of 16 characters. data-val-maxlength-max16 idCardNumber maxlength16 nameCardNumber placeholderCredit Card Number typetext value /> !-- ko if: cardType() DISCOVER || cardType() undefined -->i classfab fa-2x fa-cc-discover>/i>!-- /ko --> !-- ko if: cardType() AMEX || cardType() undefined -->i classfab fa-2x fa-cc-amex>/i>!-- /ko --> !-- ko if: cardType() MASTERCARD || cardType() undefined -->i classfab fa-2x fa-cc-mastercard>/i>!-- /ko --> !-- ko if: cardType() VISA || cardType() undefined -->i classfab fa-2x fa-cc-visa>/i>!-- /ko --> /span> /div> /div> div classrow> div classcol-lg-6 col-md-6 col-sm-6> input autocompleteoff classform-control data-valtrue data-val-numberThe field Month must be a number. idMonth nameMonth placeholderMonth (MM) typetext value /> /div> div classcol-lg-6 col-md-6 col-sm-6> input autocompleteoff classform-control data-valtrue data-val-numberThe field Year must be a number. idYear nameYear placeholderYear (YYYY) typetext value /> /div> /div> div classrow> div classcol-lg-6 col-md-6 col-sm-6> input autocompleteoff classform-control data-valtrue data-val-maxlengthThe CVC has a maximum length of 4 characters. data-val-maxlength-max4 data-val-regexThe CVC can only contain numbers. data-val-regex-pattern^\d{3,4}$ idCVC nameCVC placeholderCVC typetext value /> /div> div classcol-lg-6 col-md-6 col-sm-6> input autocompleteoff classform-control idPostalCode maxlength6 namePostalCode placeholderPostal Code typetext value /> /div> /div> div classrow data-bindif: paymentMethod() ! Ach> div classcol-md-12> div classcheckbox data-bindclick: ShowSignInPopup> input autocompleteoff classform-control data-valtrue data-val-requiredThe SavePaymentOption field is required. idSavePaymentOption nameSavePaymentOption typecheckbox valuetrue />input nameSavePaymentOption typehidden valuefalse /> label forSavePaymentOption>Save my card for future use/label> /div> /div> /div> /div> /div> /div> div classcol-lg-9 col-md-9 col-sm-9 right data-bindvisible: paymentMethod() Ach> div> div classtab-pane id2a> div classform-group> div data-bindvisible: tokenPublicId() newAch || achTokenCount() 0 || true styledisplay:none;> div classrow> div classcol-lg-12> span classfield-validation-valid data-valmsg-forBankAccountHolder data-valmsg-replacetrue>/span> input autocompleteoff classform-control data-valtrue data-val-maxlengthThe Account Holder has a maximum length of 40 characters. data-val-maxlength-max40 idBankAccountHolder nameBankAccountHolder placeholderBank Account Holder typetext value /> /div> /div> div classrow> div classcol-lg-12> span classfield-validation-valid data-valmsg-forRoutingNumber data-valmsg-replacetrue>/span> input autocompleteoff classform-control data-original-titleRouting Number data-togglepopover data-triggermanual focus data-valtrue data-val-maxlengthThe Routing Number has a maximum length of 9 characters. data-val-maxlength-max9 idRoutingNumber nameRoutingNumber placeholderRouting Number typetext value /> /div> /div> div classrow> div classcol-lg-12> span classfield-validation-valid data-valmsg-forAccountNumber data-valmsg-replacetrue>/span> input autocompleteoff classform-control data-original-titleAccount Number data-togglepopover data-triggermanual focus data-valtrue data-val-maxlengthThe Account Number has a maximum length of 17 characters. data-val-maxlength-max17 data-val-minlengthThe Account Number has a minimum length of 3 characters. data-val-minlength-min3 data-val-regexThe account number can contain only digits. data-val-regex-pattern\d+ idAccountNumber nameAccountNumber placeholderAccount Number typetext value /> /div> /div> div classrow> div classcol-lg-12> input autocompleteoff classform-control data-original-titleConfirm Account Number data-togglepopover data-triggermanual focus data-valtrue idConfirmAccountNumber nameConfirmAccountNumber placeholderConfirm Account Number typetext value /> /div> /div> div classrow data-bindif: paymentMethod() Ach> div classcol-md-12> div classcheckbox data-bindclick: ShowSignInPopup> input autocompleteoff classform-control idSavePaymentOption nameSavePaymentOption typecheckbox valuetrue />input nameSavePaymentOption typehidden valuefalse /> label forSavePaymentOption>Save my bank account for future use/label> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div> /div>!-- Payment Information section ends--> div classrow notes clearfix> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>Notes/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> fieldset > span classfield-validation-valid data-valmsg-forComments data-valmsg-replacetrue>/span> textarea classnotes-textarea cols20 idComments nameComments placeholderNotes (optional) rows5>/textarea> /fieldset> /div> /div> /div> /div> !--ko if:model.shouldAutopayEnable--> div classrow autopay styledisplay:none data-bindvisible: autoPaySubscriptionId() null && hasAccount()> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left> label>AutoPay/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right> label classswitch> input classform-control data-valtrue data-val-requiredThe EnableAutoPay field is required. idautopay-enable nameEnableAutoPay tabIndex-1 typecheckbox valuetrue />input nameEnableAutoPay typehidden valuefalse /> span classslider round> /span> /label> label forautopay-enable> Enable AutoPay for future invoices. span classlearn-more>a href# data-bindclick: openAutopayModal>Learn more/a>/span> /label> /div> /div> /div> /div> !--/ko--> div classrow payment-confirmation> div classcol-sm-12> div classform-group> div classcol-lg-offset-1 col-md-offset-1 col-sm-offset-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left>/div> div classcol-lg-9 col-md-9 col-sm-9 right> div classcheckbox data-bindvisible: isAgreementValid()> input typecheckbox nameFinanceConnectDisclaimerAccepted idFinanceConnectDisclaimerAccepted data-bindchecked: financeConnectDisclaimerAccepted> label forFinanceConnectDisclaimerAccepted>By checking this box, I am agreeing to the a hrefhttps://epaypolicy.com/ target_blank relnoopener noreferrer>ePay3, LLC/a> (ePayPolicy) Finance Connect a hrefhttps://epaypolicy.com/terms-FC/ target_blank relnoopener noreferrer>Provider Notice/a>./label> /div> p classagreement> label idstandard-disclaimer class forconfirm-disclaimer> label idconfirm-disclaimer-label forconfirm-disclaimer> By clicking Send, I authorize ToTheMoon to debit my account. span data-bindvisible: payerFee() > 0> I understand that span data-bindvisible: enableScheduledPayments() false>this payment/span> span data-bindvisible: enableScheduledPayments>each of the span data-bindtext: numberOfPayments(), visible: numberOfPayments() > 0>/span> payments/span> includes a span data-bindtext: formatAmount(payerFee(), USD)>/span> fee assessed by a hrefhttps://epay3qa.com target_blank relnoopener noreferrer>ePayPolicy/a>. /span> /label> /label> /p> p> div classg-recaptcha data-sitekey6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI>/div> input typehidden classhiddenRecaptcha required namehiddenRecaptcha idhiddenRecaptcha> br /> /p> input typesubmit namesubmitButton classbtn btn-success valueSend idSubmit data-bindcss: { inactive : !confirmDisclaimer() }, click: submitForm> input typehidden idPaymentMethod namePaymentMethod data-bindvalue: paymentMethod /> input typehidden idEnableScheduledPayments nameEnableScheduledPayments data-bindvalue: enableScheduledPayments /> input typehidden idScheduledPaymentsEndOption nameScheduledPaymentsEndOption data-bindvalue: scheduledPaymentsEndOption /> input typehidden idTokenPublicId nameTokenPublicId data-bindvalue: submitTokenPublicId /> input typehidden idDuplicateTransactionReceiptUrl nameDuplicateTransactionReceiptUrl data-bindvalue: duplicateTransactionReceiptUrl /> input typehidden nameQuoteNumber data-bindvalue: premiumFinanceAgreementQuoteNumber /> input typehidden namePremiumFinanceAgreementCompanyName data-bindvalue: premiumFinanceAgreementCompanyName /> input typehidden namePremiumFinanceAgreementConsent data-bindvalue: premiumFinanceAgreementConsent /> input typehidden namePremiumFinanceAgreementName data-bindvalue: premiumFinanceAgreementName /> input typehidden namePremiumFinanceAgreementPhone data-bindvalue: premiumFinanceAgreementPhone /> input typehidden namePremiumFinanceAgreementEmail data-bindvalue: premiumFinanceAgreementEmail /> input idPreAuthorizationCode namePreAuthorizationCode typehidden value /> input data-valtrue data-val-dateThe field PreAuthorizationDate must be a date. idPreAuthorizationDate namePreAuthorizationDate typehidden value /> input data-valtrue data-val-numberThe field ClientNotificationId must be a number. idClientNotificationId nameClientNotificationId typehidden value /> input name__RequestVerificationToken typehidden valueqisZ2714yCk59H3L4tDtSFcojtJcLRAjclkhtkwGrNPrhJ-GMxd0Q9sNAWMkx8oSIXJuQGpAOFwFWzx-CssoyxZDwpq3GptkX1igZvtHl8Q1 /> input typehidden nameattachments idattachments data-bindvalue: fileModels /> /div> /div> /div> /div> div idbankAccountNumberPopup styledisplay: none> div>img src/images/account-number.png />/div> /div> div idbankRoutingNumberPopup styledisplay: none> div>img src/images/routing-number.png />/div> /div>/form> div classmodal fade idpfaModalDialog tabindex-1 roledialog aria-hiddentrue styledisplay: none;> div classmodal-dialog max-size-modal> div classmodal-content pfa-modal-content> div classmodal-header stylepadding: 5px 15px 5px 15px;> button typebutton classclose data-dismissmodal aria-hiddentrue >×/button> h4 classmodal-title>Premium Finance Agreement/h4> /div> div classmodal-body pfa-modal-body> div idpdfContainer data-pdf-viewer-url/Scripts/pdf-viewer/viewer.html> /div> form idpfa-form action#> div> div classrow stylepadding-top: 5px; padding-bottom: 5px;> div classcol-sm-12> input typecheckbox idpremiumFinanceAgreementConsent namepremiumFinanceAgreementConsent stylevertical-align: top; data-bindchecked: modalPremiumFinanceAgreementConsent, value: modalPremiumFinanceAgreementConsent required> label forpremiumFinanceAgreementConsent styledisplay: inline; font-weight: 100; vertical-align: -2px;>By checking this box, I assert that I have reviewed and agree to all the terms set forth in the premium finance agreement and disclosure statement./label> /div> div classcol-sm-12> div classcol-lg-9 col-md-9 col-sm-9 left stylepadding-bottom: 1px;> span stylefont-weight: bold;>Digitally sign the Premium Finance Agreement/span> /div> /div> div classcol-sm-12 styleline-height: 1;> div classform-group> div classcol-lg-1 col-md-1 col-sm-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left stylepadding-bottom: 1px;> label forpremiumFinanceAgreementName>Name/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right stylemargin-bottom: 5px;> input typetext classform-control namepremiumFinanceAgreementName idpremiumFinanceAgreementName data-bindvalue: modalPremiumFinanceAgreementName required> /div> /div> /div> div classcol-sm-12 styleline-height: 1;> div classform-group> div classcol-lg-1 col-md-1 col-sm-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left stylepadding-bottom: 1px;> label forpremiumFinanceAgreementPhone>Phone Number/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right stylemargin-bottom: 5px;> input typetel classform-control namepremiumFinanceAgreementPhone idpremiumFinanceAgreementPhone inputmodetel placeholder555-555-5555 data-bindvalue: modalPremiumFinanceAgreementPhone required> /div> /div> /div> div classcol-sm-12 styleline-height: 1;> div classform-group> div classcol-lg-1 col-md-1 col-sm-1 col-lg-2 col-md-2 col-sm-2 col-xs-12 left stylepadding-bottom: 1px;> label forpremiumFinanceAgreementEmail>Email Address/label> /div> div classcol-lg-9 col-md-9 col-sm-9 right stylemargin-bottom: 5px;> input typeemail classform-control namepremiumFinanceAgreementEmail idpremiumFinanceAgreementEmail inputmodeemail data-bindvalue: modalPremiumFinanceAgreementEmail required> /div> /div> /div> /div> /div> /form> /div> div classmodal-footer stylepadding: 5px 15px 5px 15px; display: inline-block> div stylefloat: left> button iddownloadPfa typebutton classbtn btn-default data-bindclick: onDownloadPfa>Download Agreement/button> /div> div stylefloat: right> button typebutton classbtn btn-default data-dismissmodal data-bindclick: invalidateAgreement>Cancel/button> button typesubmit classbtn btn-default formpfa-form>Agree/button> /div> /div> /div>!-- /.modal-content --> /div>!-- /.modal-dialog --> /div>/div> div classmodal fade idconfirmationDialog tabindex-1 roledialog aria-hiddentrue styledisplay: none;> div classmodal-dialog> div classmodal-content> div classmodal-header> button typebutton classclose data-dismissmodal aria-hiddentrue>×/button> h4 classmodal-title idconfirmationTitle>/h4> /div> div classmodal-body> span idconfirmationBody> /span> /div> div classmodal-footer> button typebutton classbtn data-dismissmodal>Cancel/button> button typebutton classbtn btn-default data-dismissmodal idconfirmationConfirm>Confirm/button> /div> /div>!-- /.modal-content --> /div>!-- /.modal-dialog --> /div> div classmodal fade idmodalMessageDialog tabindex-1 roledialog aria-hiddentrue styledisplay: none;> div classmodal-dialog> div classmodal-content> div classmodal-header> button typebutton classclose data-dismissmodal aria-hiddentrue>×/button> h4 classmodal-title idmodalMessageTitle>/h4> /div> div classmodal-body> span idmodalMessageBody> /span> /div> div classmodal-footer> button typebutton classbtn btn-default data-dismissmodal>OK/button> /div> /div>!-- /.modal-content --> /div>!-- /.modal-dialog --> /div> script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/additional-methods.min.js integritysha384-kxI94MBt6egf2HqINJ9x8sPSfqxudviPxgttYjlTFaPREJb/gmAOgTr/GYie5ung crossoriginanonymous>/script> script typetext/javascript> var model null; this.model model; if (!String.prototype.includes) { String.prototype.includes function () { use strict; return String.prototype.indexOf.apply(this, arguments) ! -1; }; } ko.bindingHandlers.numeric { init: function (element, valueAccessor) { $(element).on(keydown, function (event) { // Allow: backspace, delete, tab, escape, and enter if (event.keyCode 46 || event.keyCode 8 || event.keyCode 9 || event.keyCode 27 || event.keyCode 13 || // Allow: Ctrl+A, Control+C, Control+V (event.keyCode 65 && event.ctrlKey true) || (event.keyCode 67 && event.ctrlKey true) || //(event.keyCode 86 && event.ctrlKey true) || // Allow: . , (event.keyCode 190 || event.keyCode 110) || // Allow: home, end, left, right (event.keyCode > 35 && event.keyCode 39)) { // let it happen, dont do anything return; } else { // Ensure that it is a number and stop the keypress if (event.shiftKey || (event.keyCode 48 || event.keyCode > 57) && (event.keyCode 96 || event.keyCode > 105)) { event.preventDefault(); } } }); } }; $(document).ready(function () { // Update the colSpan on the finance message // based on the media query var mq window.matchMedia((max-width: 570px)) setFinanceMessageColSpan(mq) mq.addListener(setFinanceMessageColSpan) function setFinanceMessageColSpan(mq) { if (mq.matches) { $(.finance-message-td).each(function () { $(this).attr(colSpan, 3) }) } else { $(.finance-message-td).each(function () { $(this).attr(colSpan, 4) }) } } function PaymentModel() { var self this; this.payer ko.observable(null); this.emailAddress ko.observable(null); this.paymentMethod ko.observable(CreditCard); this.amount ko.observable().extend({ numeric: 2 }); this.cardNumber ko.observable(); this.payerFee ko.observable(0.00); this.total ko.observable($0.00); this.payerCreditCardRate ko.observable(3.50); this.payerCreditCardFee ko.observable(0).extend({ numeric: 2 }); this.payerAchFee ko.observable(0).extend({ numeric: 2 }); this.duplicateTransactionReceiptUrl ko.observable(); duplicateWarningActive ko.computed(function () { if (self.duplicateTransactionReceiptUrl() ) return false; else { return true; } }); this.achRate ko.observable(0.00).extend({ numeric: 2 }); this.minimumAchFee ko.observable(3.00).extend({ numeric: 2 }); this.maximumAchFee ko.observable(3.00).extend({ numeric: 2 }); this.flatAchPayerFeeModifier ko.observable(0.00).extend({ numeric: 2 }); this.percentageAchPayerFeeModifier ko.observable(0.00).extend({ numeric: 2 }); this.attachments ko.observableArray(null); this.fileModels ko.observable(); this.sessionId ko.observable(); this.hideCreditCardOption ko.observable(false); this.invoiceSearchFailed ko.observable(false); this.creditCardTotal ko.observable(0.00).extend({ numeric: 2 }); this.achTotal ko.observable(0.00).extend({ numeric: 2 }); this.enableScheduledPayments ko.observable(false); this.scheduledPaymentsEndOption ko.observable(Never); this.numberOfPayments ko.observable(); this.startDate ko.observable(); this.endDate ko.observable(); this.intervalCount ko.observable(1); this.intervalId ko.observable(0); this.tokenPublicId ko.observable(); this.submitTokenPublicId ko.computed(function () { var tokenPublicId self.tokenPublicId(); if (tokenPublicId newCreditCard || tokenPublicId newAch) { return ; } return tokenPublicId; }); this.currentCreditCardToken ko.observable(); this.creditCardTokenCount ko.observable(0) this.currentAchToken ko.observable(); this.achTokenCount ko.observable(0) this.intervalDescription ko.computed(function() { return $(#IntervalId optionvalue + self.intervalId() + ).text(); }); this.TransactionAttribute10808 ko.observable(null).extend({ throttle: 750 }); this.TransactionAttribute10809 ko.observable(null).extend({ throttle: 750 }); this.invoicesPayerName ko.observable(); this.status ko.observable(-1); this.fullInvoiceList ko.observableArray(); this.invoiceSearchText ko.observable(); this.invoices ko.computed(function () { if (!self.invoiceSearchText()) { return self.fullInvoiceList(); } else { let searchText self.invoiceSearchText().toLowerCase(); return ko.utils.arrayFilter(self.fullInvoiceList(), function (invoice) { let matchFound invoice.Id.toLowerCase().indexOf(searchText) > -1 || (invoice.Name && invoice.Name.toLowerCase().indexOf(searchText) > -1) || (invoice.Amount && invoice.Amount.toString().indexOf(searchText) > -1) || (invoice.Amount && formatAmount(invoice.Amount, USD).toLowerCase().indexOf(searchText) > -1) || invoice.PaidAmount() ! 0; if (matchFound) return true; for (var i 0; i invoice.AttributeValues.length; i++) { matchFound invoice.AttributeValuesi.Value.toLowerCase().indexOf(searchText) > -1; if (matchFound) return true; } return false; }).sort(function (l, r) { return l.PaidAmount() > 0 ? 1 : -1 }); } }); this.invoiceAttributeMetadata ko.observableArray(); this.paidInvoiceAmounts { }; this.paidInvoiceComments {}; this.paidInvoiceCommentReasons {}; this.financedInvoices {}; this.initialInvoices ko.observable(true); this.invoiceSearches ko.observable(0); this.autoPaySubscriptionId ko.observable(null); this.anyFinancingEligible ko.observable(false); this.allowFinanceAutoPay ko.observable(true); this.premiumFinanceAgreementCompanyName ko.observable(); this.premiumFinanceCompanyLogoUri ko.observable(); this.premiumFinanceAgreementQuoteNumber ko.observable(); this.premiumFinanceAgreementConsent ko.observable(false); this.premiumFinanceAgreementName ko.observable(); this.premiumFinanceAgreementPhone ko.observable(); this.premiumFinanceAgreementEmail ko.observable(); this.modalPremiumFinanceAgreementConsent ko.observable(false); this.modalPremiumFinanceAgreementName ko.observable(); this.modalPremiumFinanceAgreementPhone ko.observable(); this.modalPremiumFinanceAgreementEmail ko.observable(); this.premiumFinanceAgreementPdfData ko.observable(); this.premiumFinanceAgreementAutoPay ko.observable(false); this.premiumFinanceAgreementLoading ko.observable(false); this.agreementButtonCheckDisplay ko.observable(false); this.premiumFinanceAgreementErrored ko.observable(false); this.showAgreementFinancialBreakdown ko.observable(false); this.totalDownPaymentAmount ko.observable(0.00); this.installmentAmount ko.observable(0.00); this.financeNumberOfPayments ko.observable(0); this.financePaymentFrequency ko.observable(); this.nextInstallmentDueDate ko.observable(); this.autoPayAchFee ko.observable(0.00); this.autoPayCreditCardFee ko.observable(0.00); this.submitAttempted ko.observable(false); this.enableAutopay ko.observable(true); this.autoPayCancelable ko.observable(false); this.confirmDisclaimer ko.observable(true); this.autoPayDisclaimerText ko.observable(); this.autoPayTermsAndConditions ko.observable(); this.showAutoPayTermsAndConditionsLink (this.autoPayTermsAndConditions); this.financeConnectDisclaimerAccepted ko.observable(false); this.invoiceSearchResponseStatusCode ko.observable(0); this.financingAccountId ko.observable(null); this.hasAccount ko.pureComputed(function () { return self.status() 0; }); this.isFilteringAllInvoices ko.computed(function () { return self.invoiceSearches() 0 && self.fullInvoiceList().length > 0 && (self.invoiceSearchText() && self.invoiceSearchText().length > 0) && self.invoices().length 0 && !AreAnyAttributeValuesEmptyOrInvalid(); }); this.cardType ko.pureComputed(function () { var cardType getCreditCardType(self.cardNumber()); return self.cardNumber().length > 13 && cardType undefined ? ERROR : cardType; }); this.pfaBtnStatus ko.pureComputed(function() { const baseClasses btn btn-primary pfa-btn; if(self.premiumFinanceAgreementErrored()) return `${baseClasses} btn-danger`; if(self.isAgreementValid()) return `${baseClasses} pfa-btn-consented`; return `${baseClasses} pfa-btn-not-consented`; }); this.TransactionAttribute10808.subscribe(function() { RefreshInvoices(); }); this.TransactionAttribute10809.subscribe(function() { RefreshInvoices(); }); this.amount.subscribe(function (value) { UpdatePayerFee(); }); this.paymentMethod.subscribe(function (value) { UpdatePayerFee(); SetRequiredPaymentFields(model); $(#Amount).valid(); }); this.attachments().forEach(function (attachment) { attachment.IsDeleting ko.observable(false); attachment.CanBeDeleted ko.observable(true); attachment.Progress ko.observable(100); }); this.remove function (attachment) { attachment.IsDeleting(true); attachment.CanBeDeleted(false); $.post(/Attachments/Remove + ?id + attachment.Id, function (data) { model.attachments.remove(attachment); }); }; this.fileModels(ko.toJSON(this.attachments)); this.attachments.subscribe(function () { model.fileModels(ko.toJSON(model.attachments)); }) this.addAllClicked ko.computed(function () { var result false; for (var i 0; i self.invoices().length; i++) { if (parseInt(self.invoices()i.PaidAmount()) ! 0 || parseInt(self.invoices()i.FinanceDownPayment()) ! 0) { result true; } } return result; }); this.addAllText ko.computed(function () { if (self.addAllClicked()) return - Clear All; else if (self.anyFinancingEligible()) return + Pay All; else return + Add All; }); this.addAll function () { if (self.addAllClicked()) { for (var i 0; i model.invoices().length; i++) { model.invoices()i.PaidAmount(0); model.invoices()i.FinanceDownPayment(0); model.invoices()i.isInvoiceFinanced(false); } if (model.isAgreementValid()) { model.invalidateAgreement(); } } else { for (var i 0; i model.invoices().length; i++) { if (model.invoices()i.Amount ! null) { model.invoices()i.PaidAmount(model.invoices()i.Amount); } } } } this.refreshPaidAmount function (invoice) { invoice.PaidAmount(invoice.Amount ! null ? invoice.Amount : 1); $(name + invoice.FieldId + -paidAmount).focus(); } this.refreshFinanceDownPayment function (invoice) { if (invoice.DownPaymentAmount() ! null) { invoice.FinanceDownPayment(invoice.DownPaymentAmount()); invoice.isInvoiceFinanced(true); model.invalidateAgreement(); model.premiumFinanceAgreementErrored(false); } } this.toggleInvoiceDetailVisibility function(invoice) { invoice.ShowDetails(!invoice.ShowDetails()); } this.clickInvoice function(invoice) { if (!invoice.AllowPartialPayment) { invoice.PaidAmount(0); } } this.clickRemoveInvoice function (invoice) { invoice.PaidAmount(0); } this.clickRemoveFinanced function (invoice) { invoice.FinanceDownPayment(0); invoice.isInvoiceFinanced(false); model.invalidateAgreement(); model.premiumFinanceAgreementErrored(false); } this.financeButtonEnableOrDisable ko.computed(function () { var alreadySelectedFinanceEligibilityHash ; if (self.invoices().length > 0) { var selectedFinancedInvoices self.invoices().filter(x > x.FinanceDownPayment() > 0 && x.isInvoiceFinanced()); if (selectedFinancedInvoices.length > 0) { alreadySelectedFinanceEligibilityHash selectedFinancedInvoices0.FinanceEligibilityHash(); } } for (var i 0; i self.invoices().length; i++) { var text ; var disableFinanceButton false; var invoice self.invoices()i; if (invoice.IsFinancingEligible && alreadySelectedFinanceEligibilityHash ! && invoice.FinanceEligibilityHash() ! && alreadySelectedFinanceEligibilityHash ! invoice.FinanceEligibilityHash()) { invoice.isEnableFinanceButton(false); disableFinanceButton true; } else if (invoice.PaidAmount() ! 0) { invoice.isEnableFinanceButton(false); } else { invoice.isEnableFinanceButton(true); } if (!invoice.isEnableFinanceButton() && !invoice.isInvoiceFinanced() && invoice.IsFinancingEligible && disableFinanceButton) { text Not eligible to finance with selected invoice. Please create another payment to finance this invoice.; } else if (!self.isAgreementValid() || !invoice.isInvoiceFinanced()) { text Finance for an estimated + formatAmount(invoice.DownPaymentAmount(), USD) + down; if ((!invoice.premiumFinanceAgreementConsentedAtleastOnce() || !invoice.isInvoiceFinanced()) && !invoice.premiumFinanceAgreementConsentedAtleastOnce()) { text + and + invoice.NumberOfInstallments + payments of + formatAmount(invoice.InstallmentAmount, USD) +/mo.; } } else if (self.isAgreementValid() && invoice.isInvoiceFinanced() && invoice.premiumFinanceAgreementConsentedAtleastOnce()) { text Finalize for + formatAmount(invoice.FinanceDownPayment(), USD) + down today; } invoice.financeQuoteText(text); } }); this.setPaymentType function (paymentType) { if (paymentType CreditCard) { this.changeToCreditCard(); } else if (paymentType Ach) { this.changeToAch(); } return true; } this.changeToCreditCard function () { if (model.paymentMethod() ! CreditCard) { model.tokenPublicId(model.currentCreditCardToken()); } return true; } this.changeToAch function () { if (model.paymentMethod() ! Ach) { model.tokenPublicId(model.currentAchToken()); } return true; } this.openAutopayModal function () { showModalMessage(AutoPay Information, The AutoPay feature will automatically pay invoices on their due date using the payment information you enter below. br />br />You will receive an email notification 2 days before the automatic payment so you can review and cancel the payment as needed.); } this.showAgreement function () { model.modalPremiumFinanceAgreementConsent(model.premiumFinanceAgreementConsent()); model.modalPremiumFinanceAgreementName(model.premiumFinanceAgreementName()); model.modalPremiumFinanceAgreementPhone(model.premiumFinanceAgreementPhone()); model.modalPremiumFinanceAgreementEmail(model.premiumFinanceAgreementEmail()); $(labelforpremiumFinanceAgreementConsent).removeClass(checkbox-label-validation-error); $(#premiumFinanceAgreementName).removeClass(validation-error); $(#premiumFinanceAgreementPhone).removeClass(validation-error); $(#premiumFinanceAgreementEmail).removeClass(validation-error); if(model.premiumFinanceAgreementConsent()) { // Dont request a new PFA if user has already consented to existing PFA $(#pfaModalDialog).modal(show); return; } model.premiumFinanceAgreementLoading(true); var attributeValues { Key: payer, Value: model.payer() }, { Key: emailAddress, Value: model.emailAddress() }, ; attributeValues.push({ Key: accountNumber, Value: model.TransactionAttribute10808() }); attributeValues.push({ Key: postalCode, Value: model.TransactionAttribute10809() }); var invoicesAgreementSearchModel { invoiceAttributes: attributeValues, financingAccountId: model.financingAccountId() } invoicesAgreementSearchModel.invoiceAgreementSearchModels model.invoices() .filter(x > x.FinanceDownPayment() > 0) .map(invoice > { return { Id: invoice.Id, DownPaymentAmount: invoice.FinanceDownPayment(), FinanceEligibilityHash: invoice.FinanceEligibilityHash() }; }); $.post(/Finance/RequestPremiumFinanceAgreement, invoicesAgreementSearchModel, function (data) { var selectedFinanceInvoice model.invoices().filter(x > x.FinanceDownPayment() > 0 && x.isInvoiceFinanced()); var hasInvoiceSelectionChanged selectedFinanceInvoice.length data.premiumFinanceAgreement.FinancedInvoices.length; if (hasInvoiceSelectionChanged) { for (var i 0; i selectedFinanceInvoice.length; i++) { var filteredInvoice data.premiumFinanceAgreement.FinancedInvoices.find(inv > inv.Id selectedFinanceInvoicei.Id); if (!filteredInvoice) { hasInvoiceSelectionChanged false; break; } } } if (hasInvoiceSelectionChanged) { model.premiumFinanceAgreementCompanyName(data.premiumFinanceAgreement.PremiumFinanceCompanyName); model.premiumFinanceCompanyLogoUri(data.premiumFinanceAgreement.PremiumFinanceCompanyLogoUri); model.premiumFinanceAgreementQuoteNumber(data.premiumFinanceAgreement.QuoteNumber); model.premiumFinanceAgreementPdfData(data.base64EncodedPdf); model.totalDownPaymentAmount(data.premiumFinanceAgreement.FinanceDetails.DownPaymentAmount); model.installmentAmount(data.premiumFinanceAgreement.FinanceDetails.InstallmentAmount); model.financeNumberOfPayments(data.premiumFinanceAgreement.FinanceDetails.NumberOfPayments); model.financePaymentFrequency(data.premiumFinanceAgreement.FinanceDetails.PaymentFrequency); model.nextInstallmentDueDate(data.premiumFinanceAgreement.FinanceDetails.NextInstallmentDueDateString); model.autoPayAchFee(data.premiumFinanceAgreement.FinanceDetails.AutoPayAchFee); model.autoPayCreditCardFee(data.premiumFinanceAgreement.FinanceDetails.AutoPayCreditCardFee); model.allowFinanceAutoPay(data.premiumFinanceAgreement.AllowFinanceAutoPay); model.premiumFinanceAgreementAutoPay(data.premiumFinanceAgreement.AllowFinanceAutoPay); model.premiumFinanceAgreementErrored(false); model.autoPayDisclaimerText(data.premiumFinanceAgreement.AutoPayDisclaimer); model.autoPayTermsAndConditions(data.premiumFinanceAgreement.AutoPayTermsAndConditions); model.financedInvoices data.premiumFinanceAgreement.FinancedInvoices; window.embedPDF(data.base64EncodedPdf, document.querySelector(#pdfContainer)); $(#pfaModalDialog).modal(show); } }) .fail(function (response) { model.premiumFinanceAgreementErrored(true); model.invalidateAgreement(); }) .always(function (response) { model.premiumFinanceAgreementLoading(false); }); } this.isAgreementValid function() { return model.premiumFinanceAgreementConsent() && model.premiumFinanceAgreementName() ! && model.premiumFinanceAgreementPhone() ! && model.premiumFinanceAgreementEmail() ! ; }; this.invalidateAgreement function () { model.premiumFinanceAgreementConsent(false); model.modalPremiumFinanceAgreementConsent(false); model.submitAttempted(false); model.agreementButtonCheckDisplay(false); model.showAgreementFinancialBreakdown(false); } this.showInvalidAgreementMessage function() { return !model.isAgreementValid() && model.submitAttempted(); } this.showTermsAndConditionsModal function () { $(#termsAndConditionsModalDialog).modal(show); return; } this.submitForm function() { model.submitAttempted(true); if (!model.confirmDisclaimer()) { showModalMessage(Confirmation, Please confirm that you accept the terms by checking the box below.); return false; } if (model.isAgreementValid() && !model.financeConnectDisclaimerAccepted()) { showModalMessage(Confirmation, Please accept the finance connect disclaimer.); return false; } if (model.invoices().some(i > i.FinanceDownPayment() > 0) && !model.isAgreementValid()) { $(#show-pfa).focus(); return false; } return true; } this.currentSort ko.observable(None); this.sortInvoices function(type) { var multiplier 0; if (model.currentSort() type) { multiplier -1; model.currentSort(Descending + type); } else { multiplier 1; model.currentSort(type); } model.fullInvoiceList(model.fullInvoiceList().sort(function (left, right) { // Not Yet Invoiced goes to the bottom. if (left.Amount null) return 1; if (right.Amount null) return -1; if (type Id) { return left.Id.localeCompare(right.Id) * multiplier } else if (type Name) { return left.Name.localeCompare(right.Name) * multiplier } else if (type DueDate) { if (left.DueDateString null && right.DueDateString null) return 0; if (left.DueDateString null) return -1 * multiplier; if (right.DueDateString null) return 1 * multiplier; var leftDate new Date(left.DueDateString); var rightDate new Date(right.DueDateString); return multiplier * (leftDate - rightDate); } else if (type Amount) { return multiplier * (left.Amount - right.Amount); } })); } this.shouldAutopayEnable ko.computed(function () { if (self.invoices().every(i > i.FinanceDownPayment() 0) && self.enableAutopay() true) { return true; } return false; }, this); } $(#RoutingNumber).popover({ html: true, placement: bottom, content: function () { return $(#bankRoutingNumberPopup).html(); }, title: function () { return Routing Number; } }); $(#RoutingNumber).keypress(function () { $(#RoutingNumber).popover(hide); }); $(#AccountNumber).popover({ html: true, placement: bottom, content: function () { return $(#bankAccountNumberPopup).html(); }, title: function () { return Account Number; } }); $(#AccountNumber).keypress(function () { $(#AccountNumber).popover(hide); }); jQuery.validator.addMethod(disallowGreaterLessThan, function (value, element) { if (String(value).includes(>) || String(value).includes()) { setErrorMessage( and > characters are not allowed in this field); element.title and > characters are not allowed in this field; return false; } else { setErrorMessage(null); element.title ; return true; } }, and > characters are not allowed in this field); function phoneMask() { var num $(this).val().replace(/\D/g,); if(num.length > 6 && num.length 10) { $(this).val(num.substring(0,3) + - + num.substring(3,6) + - + num.substring(6,10)); } else if(num.length > 3 && num.length 6) { $(this).val(num.substring(0,3) + - + num.substring(3,6)); } } $(typetel).on(blur, phoneMask); $(#payment-form).validate({ rules: { Amount: { required: true, number: true }, RoutingNumber: { number: true }, AccountNumber: { number: true }, ConfirmAccountNumber: { number: true }, Frequency: { number: true, range: 0, 100 }, IntervalCount: { number: true, range: 0, 1000 }, NumberOfPayments: { number: true, range: 0, 1000 }, ConfirmAccountNumber: { equalTo: #AccountNumber }, StartDate: { date: true }, EndDate: { date: true } }, submitHandler: function (form) { if (!model.sessionId()) { if (grecaptcha.getResponse()) { $(#Submit).attr(disabled, true); form.submit(); } else { showModalMessage(Please Confirm the reCaptcha, Please confirm the reCaptcha at the bottom of the page.); } } else { $(#Submit).attr(disabled, true); form.submit(); } }, errorPlacement: function(error, element) { }, errorClass: validation-error, }); $(#pfa-form).validate({ rules: { premiumFinanceAgreementPhone: { required: true, phoneUS: true } }, submitHandler: function (form) { if (model.modalPremiumFinanceAgreementConsent() && model.modalPremiumFinanceAgreementName() ! && model.modalPremiumFinanceAgreementPhone() ! && model.modalPremiumFinanceAgreementEmail() ! ) { model.agreementButtonCheckDisplay(true); model.showAgreementFinancialBreakdown(true); model.premiumFinanceAgreementConsent(model.modalPremiumFinanceAgreementConsent()); model.premiumFinanceAgreementName(model.modalPremiumFinanceAgreementName()); model.premiumFinanceAgreementPhone(model.modalPremiumFinanceAgreementPhone()); model.premiumFinanceAgreementEmail(model.modalPremiumFinanceAgreementEmail()); model.financedInvoices.forEach((filteredInvoice) > { var invoice model.invoices().find(inv > inv.Id filteredInvoice.Id); invoice.DownPaymentAmount(filteredInvoice.DownPaymentAmount); invoice.FinanceDownPayment(invoice.DownPaymentAmount()); invoice.Verification(filteredInvoice.Verification); invoice.DataToken(filteredInvoice.DataToken); invoice.premiumFinanceAgreementConsentedAtleastOnce(true); }); } else { model.invalidateAgreement(); } $(#pfaModalDialog).modal(hide); }, errorPlacement: function(error, element) { }, highlight: function (element, errorClass) { if ($(element).is(:checkbox)) { $(labelfor + element.id + ).addClass(checkbox-label-validation-error); } else { $(element).addClass(errorClass); } }, unhighlight: function (element, errorClass) { if ($(element).is(:checkbox)) { $(labelfor + element.id + ).removeClass(checkbox-label-validation-error); } else { $(element).removeClass(errorClass); } }, errorClass: validation-error }); $(inputtypetext, textarea).each(function () { $(this).rules(add, { disallowGreaterLessThan: true }); }); $(#StartDate).datepicker(); $(#EndDate).datepicker(); $(#ConfirmAccountNumber).bind(cut copy paste, function (e) { e.preventDefault(); }); $(#ConfirmAccountNumber).popover({ html: true, placement: bottom, content: function () { return $(#bankAccountNumberPopup).html(); }, title: function () { return Account Number; } }); $(#ConfirmAccountNumber).keypress(function () { $(#ConfirmAccountNumber).popover(hide); }); $(#files).fileupload({ dataType: json, progress: function (e, data) { var progress parseInt(data.loaded / data.total * 100, 10); var result $.grep(model.attachments(), function(x){ return x.temporaryId data.files0.temporaryId; }); if (result.length > 0) { result0.Progress(progress); } }, maxChunkSize: 4000000, maxFileSize: 10000000, done: function (e, data) { var result $.grep(model.attachments(), function(x){ return x.temporaryId data.files0.temporaryId; }); if (result.length > 0) { result0.Id data.result0.Id; result0.IsDeleting(false); result0.CanBeDeleted(true); result0.Progress(100); model.fileModels(ko.toJSON(model.attachments)); } } }).on(fileuploadadd, function (e, data) { $.each(data.files, function (index, file) { file.temporaryId Math.random().toString(36).replace(/^a-z+/g, ).substr(0, 10); file.Name file.name; file.IsDeleting ko.observable(false); file.CanBeDeleted ko.observable(false); file.Progress ko.observable(0); model.attachments.push(file); }); }); $(inputnameFormattedAmount).prop(readonly, true); $(inputnameFormattedAmount).prop(tabindex, -1); $(inputnameFormattedAmount).click(function() { showModalMessage(Invoice Total, Please fill in the fields above and choose an invoice or invoices to add to your payment.); }); model new PaymentModel(); ko.applyBindings(model); UpdatePayerFee(); SetRequiredPaymentFields(model); RefreshInvoices(true /* onLoad */); }); function hideDuplicateWarning() { $(#warning-area).hide(); $(#warning-message).hide(); } function UpdateTotalAmount() { var total 0; model.fullInvoiceList().forEach(function (invoice) { total + parseFloat(invoice.PaidAmount()); total + parseFloat(invoice.FinanceDownPayment()); }); model.amount(total); } function UpdatePayerFee() { var attributeValues new Object(); attributeValuesaccountNumber model.TransactionAttribute10808 attributeValuespostalCode model.TransactionAttribute10809 attributeValues.amount model.amount; if (false) { $.get(/Payments/PayerFee, attributeValues, function (data) { model.payerAchFee(data.AchPayerFee); model.achTotal(data.AchPayerFee + parseFloat(attributeValues.amount())); model.payerCreditCardFee(data.CreditCardPayerFee); model.creditCardTotal(data.CreditCardPayerFee + parseFloat(model.amount())); if (model.paymentMethod() Ach) { model.payerFee(model.payerAchFee()); model.total(model.achTotal()); } else if (model.paymentMethod() CreditCard) { model.payerFee(model.payerCreditCardFee()); model.total(model.creditCardTotal()); } }); } else { var achFee numeral(model.amount()).value() * numeral(model.achRate()).value() / 100; achFee Math.max(model.minimumAchFee(), achFee); achFee Math.min(model.maximumAchFee(), achFee); var achPayerFee achFee; if (model.percentageAchPayerFeeModifier() ! 0) { achPayerFee achPayerFee * (1 + numeral(model.percentageAchPayerFeeModifier()).value() / 100); } else { achPayerFee + numeral(model.flatAchPayerFeeModifier()).value(); } if (achPayerFee 0) { achPayerFee 0; } model.payerAchFee(achPayerFee); model.achTotal(numeral(model.payerAchFee()).value() + numeral(model.amount()).value()); model.payerCreditCardFee(numeral(model.amount()).value() * numeral(model.payerCreditCardRate()).value() / 100); model.creditCardTotal(numeral(model.amount()).value() + numeral(model.payerCreditCardFee()).value()); if (model.paymentMethod() Ach) { model.payerFee(model.payerAchFee()); model.total(model.achTotal()); } else if (model.paymentMethod() CreditCard) { model.payerFee(model.payerCreditCardFee()); model.total(model.creditCardTotal()); } } } function ShowSignInPopup() { showModalMessage(Please Sign In, Please a href/SignIn>sign in/a> or a href/SignUp>sign up/a> for a free account to use this feature.); } function ShowDeletePaymentMethod(tokenPublicId, accountNumber, transactionType) { confirmAction(Confirmation, This will delete the record of your + transactionType + with account number + accountNumber + ., function () { DeletePaymentMethod(tokenPublicId) }); } function DeletePaymentMethod(tokenPublicId) { // Hide the deleted payment before sending the web request so we can decrement the count on the correct payment method type. $(. + tokenPublicId).css(display, none); if (model.paymentMethod() Ach) { model.tokenPublicId(newAch); model.currentAchToken(newAch); model.achTokenCount(model.achTokenCount() - 1); } else { model.tokenPublicId(newCreditCard); model.currentCreditCardToken(newCreditCard); model.creditCardTokenCount(model.creditCardTokenCount() - 1); } $.post(/Payments/DeletePaymentMethod, { tokenId: tokenPublicId }) .done(function (result) { if (!result.Success) { $(. + tokenPublicId).css(display, block); showModalMessage(Error, The selected payment token could not be deleted. It is currently in use by an unprocessed payment.) } }) } function CancelAutoPaySubscription() { confirmAction(Cancel AutoPay Subscription, Are you sure you would like to cancel your AutoPay subscription?, function () { if (model.autoPaySubscriptionId() ! null) { var previousAutoPaySubscriptionId model.autoPaySubscriptionId(); $.post(/Invoices/CancelAutoPaySubscription, { id: model.autoPaySubscriptionId() }, function (result) { if (result ! true) { model.autoPaySubscriptionId(previousAutoPaySubscriptionId); setErrorMessage(Failed to cancel AutoPay subscription.) } }); model.autoPaySubscriptionId(null); } }); } function AreAnyAttributeValuesEmptyOrInvalid() { var field model.TransactionAttribute10808(); if (true && (field null || field )) return true; var field model.TransactionAttribute10809(); if (true && (field null || field )) return true; return false; } function RefreshInvoices(onLoad) { if (AreAnyAttributeValuesEmptyOrInvalid()) { model.fullInvoiceList(); return; } model.invoiceSearches(model.invoiceSearches() + 1); model.invoiceSearchText(); var attributeValues new Object(); attributeValuesaccountNumber model.TransactionAttribute10808(); attributeValuespostalCode model.TransactionAttribute10809(); attributeValuespayer model.payer(); attributeValuesemailAddress model.emailAddress(); $.post(/Invoices, attributeValues, function (data) { data.Invoices.forEach(function (invoice) { invoice.PaidAmount ko.observable(model.paidInvoiceAmountsinvoice.Id ? model.paidInvoiceAmountsinvoice.Id : 0).extend({ numeric: 2 }); invoice.FinanceDownPayment ko.observable(0).extend({ numeric: 2 }); invoice.CommentReason ko.observable(model.paidInvoiceCommentReasonsinvoice.Id || Other); invoice.CommentPlaceholder ko.pureComputed(function () { switch (invoice.CommentReason()) { case Financing: return Please provide the name of the finance company.; case Incorrect Invoice Amount: return Please provide more detail.; case Other: return Please provide comments.; default: return Comments (required); } }); invoice.Comment ko.observable(model.paidInvoiceCommentsinvoice.Id); invoice.ShowDetails ko.observable(false); invoice.isInvoiceFinanced ko.observable(false); invoice.isEnableFinanceButton ko.observable(true); invoice.financeQuoteText ko.observable(); invoice.premiumFinanceAgreementConsentedAtleastOnce ko.observable(false); invoice.FinanceEligibilityHash ko.observable(invoice.FinanceEligibilityHash); invoice.DownPaymentAmount ko.observable(invoice.DownPaymentAmount); invoice.Verification ko.observable(invoice.Verification); invoice.DataToken ko.observable(invoice.DataToken); invoice.PaidAmount.subscribe(function (value) { UpdateTotalAmount(); }); invoice.FinanceDownPayment.subscribe(function (value) { UpdateTotalAmount(); }); }); model.invoicesPayerName(data.PayerName); model.status(data.Status); model.fullInvoiceList(data.Invoices); model.invoiceAttributeMetadata(data.InvoiceAttributeMetadata); model.autoPaySubscriptionId(data.AutoPaySubscriptionId); model.invoiceSearchFailed(data.Status 2); model.enableAutopay(data.EnableAutopay); model.autoPayCancelable(data.AutoPayCancelable) model.anyFinancingEligible(data.AnyFinancingEligible); model.financingAccountId(data.FinancingAccountId); var parameters {}; if (location.search) location.search.substr(1).split(&).forEach(function (item) { var s item.split(), k s0, v s1 && decodeURIComponent(s1); (parametersk parametersk || ).push(v) }) var prepopulateInvoices ((typeof parameters.invoiceId ! undefined) || (typeof parameters.notInvoiced ! undefined)) && model.initialInvoices(); var prepopulateFinancedInvoices (typeof parameters.financedInvoiceId ! undefined) && model.initialInvoices(); var eligibilityHash; model.invoices().forEach(function (invoice) { var $paidAmountInput $(name + invoice.FieldId + -paidAmount); if (invoice.Amount null) $paidAmountInput.rules(add, { range: 0, 10000000 }); else if (invoice.Amount > 0) $paidAmountInput.rules(add, { range: 0, invoice.MaximumAmount }); else $paidAmountInput.rules(add, { range: invoice.Amount, 0 }); if (prepopulateInvoices) { if ((typeof parameters.invoiceId ! undefined) && parameters.invoiceId.indexOf(invoice.Id) ! -1) { if (typeof parameters.notInvoiced ! undefined && invoice.Id Not Invoiced) { invoice.PaidAmount(parseFloat(parameters.notInvoiced)); } else { invoice.PaidAmount(invoice.Amount ! null ? invoice.Amount : 1); } } else if (invoice.Amount null) { invoice.PaidAmount(parseFloat(parameters.notInvoiced)); } } if (prepopulateFinancedInvoices) { if (((typeof parameters.financedInvoiceId ! undefined) && parameters.financedInvoiceId.indexOf(invoice.Id) ! -1 && invoice.FinanceDownPayment() 0 && invoice.IsFinancingEligible) && (eligibilityHash null || eligibilityHash ! null && eligibilityHash invoice.FinanceEligibilityHash())) { eligibilityHash invoice.FinanceEligibilityHash(); model.refreshFinanceDownPayment(invoice); } } }); model.initialInvoices(false); UpdateTotalAmount(); model.invoiceSearches(model.invoiceSearches() - 1); if (!onLoad) { model.invalidateAgreement(); } model.premiumFinanceAgreementErrored(false); }).fail(function () { model.fullInvoiceList(); model.invoiceSearches(model.invoiceSearches() - 1); model.invoiceSearchFailed(true); }).always(function (response) { model.invoiceSearchResponseStatusCode(response.status); }); } function validateCustomAttribute(event) { if (!event.srcElement.reportValidity()) { $(event.srcElement).removeClass(valid); $(event.srcElement).addClass(validation-error); $(event.srcElement).siblings(.transaction-attribute-regex-error-msg).show(); } else { $(event.srcElement).addClass(valid); $(event.srcElement).removeClass(validation-error); $(event.srcElement).siblings(.transaction-attribute-regex-error-msg).hide(); } } function onDownloadPfa() { var quoteNumber model.premiumFinanceAgreementQuoteNumber(); var base64String model.premiumFinanceAgreementPdfData(); const fileName PremiumFinanceAgreement- +quoteNumber +.pdf; if (base64String.startsWith(JVB)) { base64String data:application/pdf;base64, + base64String; downloadFileObject(base64String, fileName); } else if (base64String.startsWith(data:application/pdf;base64)) { downloadFileObject(base64String, fileName); } else { console.error(Not a valid Base64 PDF string!); } } function downloadFileObject(base64String, fileName) { const linkSource base64String; const downloadLink document.createElement(a); downloadLink.href linkSource; downloadLink.download fileName; downloadLink.click(); } /script>/body>/html>
Subdomains
Date
Domain
IP
furqan.epay3qa.com
2026-02-14
104.18.9.187
afcoagentautopay.epay3qa.com
2026-02-14
104.18.8.187
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]